Minimal MCP Server logo

Minimal MCP Server

vijayliebe/MCP_boilerplate
0 starsUpdated 2025-12-23Community

Is this your server?

Add your score badge to your README and get your server in front of 45k+ builders a month.

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

A minimal MCP server boilerplate in Python for testing client-server communication, providing a simple 'hello' tool to verify connection.

README.md

Minimal MCP Server Boilerplate

A minimal Model Context Protocol (MCP) server implementation in Python for testing client-server communication.

!MCP Server

What This Does

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

Quick Start

1. Prerequisites

  • Python 3.9 or higher
  • No external dependencies required!

2. Test Locally

# Make server executable
chmod +x server.py

# Run the test client
python test_client.py

You should see: ``` ============================================================ Testing MCP Server ============================================================

  1. Testing initialize...

✓ Initialize successful Server: minimal-mcp-server

  1. Testing tools/list...

✓ Found 1 tool(s):

  • hello: A simple hello tool to test MCP connection
  1. Testing tools/call (hello)...

✓ Tool call successful: Hello, Developer! MCP connection is working! 🎉

============================================================ All tests passed! 🎉 ============================================================ ```

Connecting to MCP Clients

Cursor IDE

  1. 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
  1. 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"
       }
     }
   }
  1. Restart Cursor and verify connection in settings
  1. Test: Ask Cursor to "Call the hello tool with name 'YourName'"

Claude Desktop

  1. Find Claude's config file:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  1. Add the same configuration as above
  1. Restart Claude Desktop
  1. Test: Ask Claude to use the hello tool

Project Structure

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

How It Works

MCP Protocol Flow

  1. Initialize: Client sends initialization request
   {"method": "initialize", "params": {...}}
  1. List Tools: Client requests available tools
   {"method": "tools/list"}
  1. Call Tool: Client executes a tool
   {"method": "tools/call", "params": {"name": "hello", "arguments": {...}}}

Key Components

  • MinimalMCPServer: Main server class
  • get_tools(): Returns tool definitions
  • call_tool(): Executes tool logic
  • handle_request(): Routes JSON-RPC requests
  • run_stdio(): Main loop reading from stdin, writing to stdout

Extending the Boilerplate

Adding a New Tool

  1. Add tool definition in get_tools():
   {
       "name": "my_tool",
       "description": "Does something useful",
       "inputSchema": {
           "type": "object",
           "properties": {
               "param": {"type": "string", "description": "..."}
           },
           "required": ["param"]
       }
   }
  1. Add handler in call_tool():
   if name == "my_tool":
       result = do_something(arguments.get("param"))
       return {"type": "text", "text": result}

Adding Dependencies

If you need external libraries:

  1. Add to requirements.txt:
   requests>=2.31.0
  1. Install:
   pip install -r requirements.txt

Troubleshooting

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

Next Steps

Once connection is verified:

  • Add your custom tools
  • Integrate with databases, APIs, or services
  • Add error handling and logging
  • Implement MCP resources and prompts

Resources

License

MIT License - feel free to use this boilerplate for your projects!

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Other servers.