Skip to main content
Python Server is a work in progress.
The mcp-use server framework is currently a work in progress. Here we present some of the design decisions and features that we are including. This is currently being worked at and is not released. If you are interested in the latest updates, join our discord and let us know what you think.
Server

The mcp-use server framework extends the official MCP Python SDK with enhanced features for building production-ready MCP servers. It provides built-in documentation endpoints, inspector UI, improved logging, and seamless integration with the mcp-use ecosystem.

Why mcp-use Server Framework?

At mcp-use we spent a lot of time building MCP servers. The development experience was subpar in many respects. Since this was starting to slow us down a lot, we decided to expand in the server direction as well.We have many cool ideas and features that we want to add to the server framework. If you have any ideas, please let us know on Discord. 💜
While the official MCP Python SDK provides the core functionality for building MCP servers, mcp-use enhances it with:

Compatibility

Official MCP SDK

mcp-use server framework is fully compatible with the official MCP Python SDK. It extends the SDK rather than replacing it, ensuring:
  • All official MCP features work as expected
  • Existing MCP servers can be easily migrated
  • Full compliance with MCP protocol specifications

fastmcp2

mcp-use complements fastmcp2 by providing:
  • Different Focus: fastmcp2 focuses on rapid prototyping, mcp-use focuses on production features
  • Enhanced Observability: Better logging, metrics, and debugging tools
  • Ecosystem Integration: Native compatibility with mcp-use clients and agents
  • Documentation: Built-in API documentation and inspector UI
You can use both frameworks in the same project if needed.

Quick Start

Build your first MCP server in minutes with this step-by-step guide:
1

Install mcp-use

pip install mcp-use
2

Create your server file

Create a new file called my_server.py:
from mcp_use.server import MCPServer

server = MCPServer(
    name="My Server",
    version="1.0.0",
    instructions="A simple example server"
)
3

Add your first tool

Define a tool using the @server.tool() decorator:
@server.tool()
def echo(message: str) -> str:
    """Echo back the provided message."""
    return f"Echo: {message}"
4

Add more tools (optional)

Add additional tools to extend functionality:
@server.tool()
def calculate(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

@server.tool()
def get_time() -> str:
    """Get current time."""
    from datetime import datetime
    return datetime.now().isoformat()
5

Run the server

Add the run command at the bottom of your file:
if __name__ == "__main__":
    server.run(transport="streamable-http", debug=True)
Then run it:
python my_server.py
6

Access your server

Your server is now running at http://localhost:8000:
  • MCP endpoints: /mcp
  • OpenMCP metadata: /openmcp.json (debug mode only)
  • Documentation: /docs (debug mode only)
  • Inspector UI: /inspector (debug mode only)

Complete Example

Here’s the full code in one place:
from mcp_use.server import MCPServer
from datetime import datetime

server = MCPServer(
    name="Example Server",
    version="1.0.0",
    instructions="This is an example server with a simple echo tool."
)

@server.tool()
def echo(message: str) -> str:
    """Echo back the provided message."""
    return f"Echo: {message}"

@server.tool()
def calculate(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

@server.tool()
def get_time() -> str:
    """Get current time."""
    return datetime.now().isoformat()

if __name__ == "__main__":
    server.run(transport="streamable-http", debug=True)

Transport Options

Choose the right transport for your use case:
# Standard input/output (for MCP clients like Claude Desktop)
server.run(transport="stdio")

# HTTP server (for web clients and testing)
server.run(transport="streamable-http", host="0.0.0.0", port=8000)

Debug Mode

Enable debug mode for development features:
server = MCPServer(name="My Server", debug=True)
Debug mode provides:
  • /openmcp.json endpoint for server discovery
  • /docs endpoint with interactive documentation
  • Enhanced logging with detailed request information

Next Steps