A solid, foundational starting point for MCP projects. MCP Base is a production-ready, extensible template for building Model Context Protocol (MCP) servers in Python. Rapidly create, extend, and deploy MCP servers that expose tools, prompts, and resources to LLMs and agentic clients.
This is a Python starter baseโnot a specific server implementation. It provides a modular, well-documented foundation for building your own MCP servers in Python, supporting multiple transport layers (STDIO, SSE, HTTP, etc.), and demonstrating best practices for security, extensibility, and maintainability.
.
โโโ src/
โ โโโ base/ # Base classes for tools, prompts, resources
โ โโโ tools/ # Example tools (filesystem, API, prompt, etc.)
โ โโโ resources/ # Example resources (static/dynamic)
โ โโโ prompts/ # Example prompts (text generation, summarization)
โ โโโ transports/ # Transport layer implementations & docs
โ โ โโโ stdio/
โ โ โ โโโ README.md
โ โ โโโ sse/
โ โ โ โโโ README.md
โ โ โโโ ...
โ โโโ config.py # Configuration and environment management
โ โโโ server.py # Server instantiation and registration
โ โโโ main.py # Entrypoint: selects transport, starts server
โโโ tests/ # Example tests for tools/resources
โโโ Dockerfile # Containerized deployment
โโโ requirements.txt / pyproject.toml
โโโ README.md # This file
โโโ CONTRIBUTING.md
โโโ ...
- Multi-Transport Support: STDIO, SSE, HTTP, and more (see
/src/transports/) - Modular Tools/Prompts/Resources: Add new features by creating a class and registering it
- Type-Safe Input Validation: Uses Pydantic for schemas
- Security Best Practices: Directory sandboxing, input validation, error handling
- Extensible & Maintainable: Clean separation of concerns, base classes, and registries
- Production-Ready: Logging, environment management, Docker support
- Comprehensive Documentation: For users and contributors
pip install -r requirements.txtCopy .env.example to .env and fill in required values.
STDIO Transport:
python main.py --transport=stdioSSE/HTTP Transport:
See /src/transports/sse/README.md and /src/transports/http/README.md for details.
- Create a new class in
/src/tools/inheriting fromBaseTool - Implement the required methods and input schema
- Register the tool in the tool registry
- Create a new class in
/src/prompts/inheriting fromBasePrompt - Implement the required methods and input schema
- Register the prompt in the prompt registry
- Add static or dynamic resources in
/src/resources/ - Register them in the resource registry
- STDIO: For CLI and agentic integration (see
/src/transports/stdio/README.md) - SSE: For server-sent events and web clients (see
/src/transports/sse/README.md) - HTTP: For RESTful or web-based integration (see
/src/transports/http/README.md)
Each transport is modular and can be extended or replaced.
- All file and directory operations are sandboxed to allowed paths
- Input validation is enforced for all tool/resource inputs
- Error handling is consistent and user-friendly
- Sensitive configuration is managed via environment variables
- Example tests are provided in
/tests/ - Use Pytest as the test runner
- See CONTRIBUTING.md for test guidelines
We welcome contributions! Please see
- Model Context Protocol Documentation
- Official MCP Python SDK
- Reference MCP Servers Gallery
Transport Layer Docs
MIT License. See
MCP Base is the recommended starting point for all new Python MCP server projects. Fork, extend, and contribute improvements!