Provide a sampling_handler function when creating the client:
Copy
from fastmcp import Clientfrom fastmcp.client.sampling import ( SamplingMessage, SamplingParams, RequestContext,)async def sampling_handler( messages: list[SamplingMessage], params: SamplingParams, context: RequestContext) -> str: # Your LLM integration logic here # Extract text from messages and generate a response return "Generated response based on the messages"client = Client( "my_mcp_server.py", sampling_handler=sampling_handler,)
from fastmcp import Clientfrom fastmcp.client.sampling import SamplingMessage, SamplingParams, RequestContextasync def basic_sampling_handler( messages: list[SamplingMessage], params: SamplingParams, context: RequestContext) -> str: # Extract message content conversation = [] for message in messages: content = message.content.text if hasattr(message.content, 'text') else str(message.content) conversation.append(f"{message.role}: {content}") # Use the system prompt if provided system_prompt = params.systemPrompt or "You are a helpful assistant." # Here you would integrate with your preferred LLM service # This is just a placeholder response return f"Response based on conversation: {' | '.join(conversation)}"client = Client( "my_mcp_server.py", sampling_handler=basic_sampling_handler)
Client support for sampling is optional, if the client does not support sampling, the server will report an error indicating
that the client does not support sampling.A sampling_handler can also be provided to the FastMCP server, which will be used to handle sampling requests if the client
does not support sampling. This sampling handler bypasses the client and sends sampling requests directly to the LLM provider.Sampling handlers can be implemented using any LLM provider but a sample implementation for OpenAI is provided as a Contrib
module. Sampling lacks the full capabilities of typical LLM completions. For this reason, the OpenAI sampling handler, pointed at
a third-party provider’s OpenAI-compatible API, is often sufficient to implement a sampling handler.