A minimal Model Context Protocol (MCP) server implementation in Python for testing client-server communication.
This boilerplate provides the absolute minimum code needed to:
- ✅ Connect with MCP clients (Cursor, Claude Desktop, etc.)
- ✅ Respond to initialization requests
- ✅ List available tools
- ✅ Execute a simple "hello" tool
- Python 3.9 or higher
- No external dependencies required!
# Make server executable
chmod +x server.py
# Run the test client
python test_client.pyYou should see:
============================================================
Testing MCP Server
============================================================
1. Testing initialize...
✓ Initialize successful
Server: minimal-mcp-server
2. Testing tools/list...
✓ Found 1 tool(s):
- hello: A simple hello tool to test MCP connection
3. Testing tools/call (hello)...
✓ Tool call successful:
Hello, Developer! MCP connection is working! 🎉
============================================================
All tests passed! 🎉
============================================================
-
Find your Cursor MCP config file:
- macOS:
~/Library/Application Support/Cursor/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json - Windows:
%APPDATA%\Cursor\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json - Linux:
~/.config/Cursor/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
- macOS:
-
Add this configuration (update paths to match your system):
{ "mcpServers": { "minimal-mcp-server": { "command": "python3", "args": ["/absolute/path/to/mcp-boilerplate/server.py"], "cwd": "/absolute/path/to/mcp-boilerplate" } } } -
Restart Cursor and verify connection in settings
-
Test: Ask Cursor to "Call the hello tool with name 'YourName'"
-
Find Claude's config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add the same configuration as above
-
Restart Claude Desktop
-
Test: Ask Claude to use the hello tool
mcp-boilerplate/
├── server.py # Main MCP server implementation
├── test_client.py # Local testing script
├── requirements.txt # Dependencies (empty - uses stdlib)
├── mcp-config.json # Example client configuration
└── README.md # This file
-
Initialize: Client sends initialization request
{"method": "initialize", "params": {...}} -
List Tools: Client requests available tools
{"method": "tools/list"} -
Call Tool: Client executes a tool
{"method": "tools/call", "params": {"name": "hello", "arguments": {...}}}
MinimalMCPServer: Main server classget_tools(): Returns tool definitionscall_tool(): Executes tool logichandle_request(): Routes JSON-RPC requestsrun_stdio(): Main loop reading from stdin, writing to stdout
-
Add tool definition in
get_tools():{ "name": "my_tool", "description": "Does something useful", "inputSchema": { "type": "object", "properties": { "param": {"type": "string", "description": "..."} }, "required": ["param"] } } -
Add handler in
call_tool():if name == "my_tool": result = do_something(arguments.get("param")) return {"type": "text", "text": result}
If you need external libraries:
-
Add to
requirements.txt:requests>=2.31.0 -
Install:
pip install -r requirements.txt
Server not connecting?
- Verify Python path is correct in config
- Use absolute paths (not relative)
- Check file permissions (
chmod +x server.py)
"Method not found" errors?
- Ensure method names match exactly (case-sensitive)
- Check JSON-RPC format is correct
Server crashes?
- Verify Python 3.9+ is installed
- Check for syntax errors:
python -m py_compile server.py
Once connection is verified:
- Add your custom tools
- Integrate with databases, APIs, or services
- Add error handling and logging
- Implement MCP resources and prompts
MIT License - feel free to use this boilerplate for your projects!
