View the source code for this module on GitHub: https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp_use/server/server.py
MCPServer
from mcp_use.server.server import MCPServer
method init
Initialize an MCP server.ParametersSignaturestr | Nonedefault:"None"Server name for identificationstr | Nonedefault:"None"Server version stringstr | Nonedefault:"None"Instructions for the AI model using this serverlist[Icon] | Nonedefault:"None"Optional list of icons for the server implementationBearerAuthProvider | Nonedefault:"None"Parameter valuelist[Middleware] | Nonedefault:"None"List of middleware to apply to requestsbooldefault:"False"Enable debug mode (adds /docs, /inspector, /openmcp.json endpoints)strdefault:"/mcp"Path for MCP endpoint (default: “/mcp”)strdefault:"/docs"Path for documentation endpoint (default: “/docs”)strdefault:"/"Base path prefix for the inspector UI; final route is<prefix>/inspector.strdefault:"/openmcp.json"Path for OpenMCP metadata (default: “/openmcp.json”)booldefault:"False"Show inspector-related logsbooldefault:"False"Pretty print JSON-RPC messages in logsbooldefault:"False"Only show MCP protocol logs, suppress HTTP access logs (default: False)strdefault:"0.0.0.0"Default host for server binding (default: “0.0.0.0”). Can be overridden in run().intdefault:"8000"Default port for server binding (default: 8000). Can be overridden in run().booldefault:"False"Enable DNS rebinding protection by validating Host/Origin
def __init__(name: str | None = None, version: str | None = None, instructions: str | None = None, icons: list[Icon] | None = None, auth: BearerAuthProvider | None = None, middleware: list[Middleware] | None = None, debug: bool = False, mcp_path: str = "/mcp", docs_path: str = "/docs", inspector_path: str = "/", openmcp_path: str = "/openmcp.json", show_inspector_logs: bool = False, pretty_print_jsonrpc: bool = False, mcp_logs_only: bool = False, host: str = "0.0.0.0", port: int = 8000, dns_rebinding_protection: bool = False):
method include_router
Include a router’s tools, resources, and prompts into this server.Similar to FastAPI’s include_router, this allows you to organize your
MCP server into multiple files/modules.Example:from mcp_use.server import MCPServer, MCPRouter
# In routes/math.py
router = MCPRouter()
@router.tool()
def add(a: int, b: int) -> int:
return a + b
# In main.py
server = MCPServer(name="my-server")
server.include_router(router, prefix="math") # Tool becomes "math_add"
server.include_router(other_router, enabled=False) # Skip this router
SignatureMCPRouterrequiredThe MCPRouter instance to includestrdefault:""Optional prefix to add to all tool names (e.g., “math” -> “math_add”)booldefault:"True"Whether to enable this router (default True). Set to False to skip registration.
def include_router(router: MCPRouter, prefix: str = "", enabled: bool = True):
method notify_resource_updated
Notify all subscribed sessions that a resource has been updated.Broadcasts a notifications/resources/updated message to every session
that called resources/subscribe for this URI.Can be called from within a tool handler or from any async context.ParametersSignaturestrrequiredThe URI of the resource that was updated.
def notify_resource_updated(uri: str):