2.0.0
The fastmcp.Client class provides a programmatic interface for interacting with any MCP server. It handles protocol details and connection management automatically, letting you focus on the operations you want to perform.
The FastMCP Client is designed for deterministic, controlled interactions rather than autonomous behavior, making it ideal for testing MCP servers during development, building deterministic applications that need reliable MCP interactions, and creating the foundation for agentic or LLM-based clients with structured, type-safe operations.
This is a programmatic client that requires explicit function calls and provides direct control over all MCP operations. Use it as a building block for higher-level systems.
Creating a Client
You provide a server source and the client automatically infers the appropriate transport mechanism.async with context manager for proper connection lifecycle management.
Choosing a Transport
The client automatically selects a transport based on what you pass to it, but different transports have different characteristics that matter for your use case. In-memory transport connects directly to a FastMCP server instance within the same Python process. Use this for testing and development where you want to eliminate subprocess and network complexity. The server shares your process’s environment and memory space.Configuration-Based Clients
New in version2.4.0
Create clients from MCP configuration dictionaries, which can include multiple servers. While there is no official standard for MCP configuration format, FastMCP follows established conventions used by tools like Claude Desktop.
Connection Lifecycle
The client uses context managers for connection management. When you enter the context, the client establishes a connection and performs an MCP initialization handshake with the server. This handshake exchanges capabilities, server metadata, and instructions.initialize() manually:
Operations
FastMCP clients interact with three types of server components. Tools are server-side functions that the client can execute with arguments. Call them withcall_tool() and receive structured results.
read_resource() using URIs.
get_prompt().
Callback Handlers
The client supports callback handlers for advanced server interactions. These let you respond to server-initiated requests and receive notifications.- Sampling - Respond to server LLM requests
- Elicitation - Handle server requests for user input
- Progress - Monitor long-running operations
- Logging - Handle server log messages
- Roots - Provide local context to servers

