A simple example of creating an MCP server using FastMCP and Python, designed to work with Smithery.
This server provides a single tool called greet that takes a name and returns a friendly greeting message. You'll test it using the Smithery Playground for interactive development.
- Python 3.12 or higher
- uv package manager
- Node.js and npx (optional, for Smithery CLI and playground)
-
Clone the repository:
git clone https://github.com/smithery-ai/smithery-cookbook.git cd smithery-cookbook/servers/python/quickstart -
Install Smithery CLI (optional, for playground testing):
npm install -g @smithery/cli
-
Install dependencies:
uv sync
-
Run the server:
uv run python main.py
-
Test it's working: The server will start on
http://localhost:8081 -
Launch Smithery Playground: In a new terminal, launch the interactive Smithery playground:
smithery playground --port 8081
This will open a web interface where you can:
- Interact with your MCP server in real-time
- Test the
greettool with different inputs - See the complete request/response flow
- Debug and iterate on your MCP tools quickly
-
Add Smithery session configuration (optional):
This step has three parts to add session-based configuration handling:
- Part A: Add config validation function
- Part B: Update the tool to use config validation
- Part C: Test with configuration
Skip to step 8 if you don't need session configuration.
-
Deploy to Smithery: To deploy your MCP server:
- Push your code to GitHub (make sure to include the
smithery.yamlandDockerfile) - Connect your repository at https://smithery.ai/new
- Push your code to GitHub (make sure to include the
Your server will be available over HTTP and ready to use with any MCP-compatible client!
Press Ctrl+C in the terminal to stop the server.