From 0e9cab86fd1c66db7a665cde0802f83511872e28 Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Sun, 26 Jul 2026 21:10:41 -0400 Subject: [PATCH] Restore the version badge and point sampling users at 3.x --- docs/servers/sampling.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/servers/sampling.mdx b/docs/servers/sampling.mdx index 4a306c56e..d5a39df9e 100644 --- a/docs/servers/sampling.mdx +++ b/docs/servers/sampling.mdx @@ -5,8 +5,14 @@ description: Generate text from a FastMCP server — by calling an LLM directly, icon: robot --- +import { VersionBadge } from "/snippets/version-badge.mdx" + + + -**`ctx.sample()` and `ctx.sample_step()` were removed in FastMCP 4.** The modern MCP protocol gives a server no channel to push a request to its client, so there is nothing left for those methods to do. Generate by [calling an LLM directly](#calling-an-llm-directly), or [ask the caller's model](#asking-the-callers-model) when borrowing their model is the point. +**`ctx.sample()` and `ctx.sample_step()` were removed in FastMCP 4.** The modern MCP protocol gives a server no channel to push a request to its client, so there is nothing left for those methods to do. + +To build a server that uses sampling, stay on [FastMCP 3.x](/v3/servers/sampling). On FastMCP 4, generate by [calling an LLM directly](#calling-an-llm-directly), or [ask the caller's model](#asking-the-callers-model) when borrowing their model is the point. A tool that needs text generated calls a model to get it, and in FastMCP 4 that call is ordinary Python: your server holds an API key, creates a provider client, and awaits a completion inside the tool. No protocol is involved, so the tool behaves the same for every client — including the many that never implemented sampling at all.