Rename FastMCP to MCPServer (#1951)

This commit is contained in:
Marcelo Trylesinski 2026-01-25 14:45:52 +01:00 • committed by GitHub
commit 65c614e48e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 713 additions and 693 deletions

View file

@ -10,7 +10,7 @@ import anyio
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
from mcp.server import Server
from mcp.server.fastmcp import FastMCP
from mcp.server.mcpserver import MCPServer
from mcp.shared.memory import create_client_server_memory_streams
from mcp.shared.message import SessionMessage
@ -23,7 +23,7 @@ class InMemoryTransport:
stopped when the context manager exits.
Example:
server = FastMCP("test")
server = MCPServer("test")
transport = InMemoryTransport(server)
async with transport.connect() as (read_stream, write_stream):
@ -36,11 +36,11 @@ class InMemoryTransport:
result = await client.call_tool("my_tool", {...})
"""
def __init__(self, server: Server[Any] | FastMCP, *, raise_exceptions: bool = False) -> None:
def __init__(self, server: Server[Any] | MCPServer, *, raise_exceptions: bool = False) -> None:
"""Initialize the in-memory transport.
Args:
server: The MCP server to connect to (Server or FastMCP instance)
server: The MCP server to connect to (Server or MCPServer instance)
raise_exceptions: Whether to raise exceptions from the server
"""
self._server = server
@ -61,10 +61,10 @@ class InMemoryTransport:
Yields:
A tuple of (read_stream, write_stream) for bidirectional communication
"""
# Unwrap FastMCP to get underlying Server
# Unwrap MCPServer to get underlying Server
actual_server: Server[Any]
if isinstance(self._server, FastMCP):
actual_server = self._server._mcp_server # type: ignore[reportPrivateUsage]
if isinstance(self._server, MCPServer):
actual_server = self._server._lowlevel_server # type: ignore[reportPrivateUsage]
else:
actual_server = self._server

View file

@ -8,7 +8,7 @@ from typing import Any
from mcp.client._memory import InMemoryTransport
from mcp.client.session import ClientSession, ElicitationFnT, ListRootsFnT, LoggingFnT, MessageHandlerFnT, SamplingFnT
from mcp.server import Server
from mcp.server.fastmcp import FastMCP
from mcp.server.mcpserver import MCPServer
from mcp.shared.session import ProgressFnT
from mcp.types import (
CallToolResult,
@ -34,14 +34,14 @@ class Client:
"""A high-level MCP client for connecting to MCP servers.
Currently supports in-memory transport for testing. Pass a Server or
FastMCP instance directly to the constructor.
MCPServer instance directly to the constructor.
Example:
```python
from mcp.client import Client
from mcp.server.fastmcp import FastMCP
from mcp.server.mcpserver import MCPServer
server = FastMCP("test")
server = MCPServer("test")
@server.tool()
def add(a: int, b: int) -> int:
@ -55,7 +55,7 @@ class Client:
```
"""
# TODO(felixweinberger): Expand to support all transport types (like FastMCP 2):
# TODO(felixweinberger): Expand to support all transport types:
# - Add ClientTransport base class with connect_session() method
# - Add StreamableHttpTransport, SSETransport, StdioTransport
# - Add infer_transport() to auto-detect transport from input type
@ -64,7 +64,7 @@ class Client:
def __init__(
self,
server: Server[Any] | FastMCP,
server: Server[Any] | MCPServer,
*,
# TODO(Marcelo): When do `raise_exceptions=True` actually raises?
raise_exceptions: bool = False,
@ -79,7 +79,7 @@ class Client:
"""Initialize the client with a server.
Args:
server: The MCP server to connect to (Server or FastMCP instance)
server: The MCP server to connect to (Server or MCPServer instance)
raise_exceptions: Whether to raise exceptions from the server
read_timeout_seconds: Timeout for read operations
sampling_callback: Callback for handling sampling requests

View file

@ -15,7 +15,7 @@ from typing import Any, TypeAlias
import anyio
import httpx
from pydantic import BaseModel
from pydantic import BaseModel, Field
from typing_extensions import Self
import mcp
@ -103,9 +103,9 @@ class ClientSessionGroup:
class _ComponentNames(BaseModel):
"""Used for reverse index to find components."""
prompts: set[str] = set()
resources: set[str] = set()
tools: set[str] = set()
prompts: set[str] = Field(default_factory=set)
resources: set[str] = Field(default_factory=set)
tools: set[str] = Field(default_factory=set)
# Standard MCP components.
_prompts: dict[str, types.Prompt]