Python MCP Server Template
@djaboxx
Template for creating Model Context Protocol (MCP) servers
Overview
What is Python MCP Server Template?
The Python MCP Server Template is a foundation for building Model Context Protocol (MCP) servers that integrate with VS Code’s AI features. It provides best practices for async Python, configuration validation, logging, and error handling, following patterns from production MCP servers.
How to use Python MCP Server Template?
Clone the repository, create a Python virtual environment, install dependencies from requirements.txt, update the server name and description in src/server.py, and add your own service configuration and client. Configure VS Code by adding an MCP server entry in settings.json using the stdio transport and the specified environment variables.
Key features of Python MCP Server Template
- Pydantic models for configuration validation
- Async context manager for server lifecycle management
- Decorator-based tool registration with type hints
- Structured error handling with logging and user feedback
- Environment variable configuration for secrets and options
- Production-proven architectural patterns for service clients
Use cases of Python MCP Server Template
- Create a custom MCP server to extend VS Code’s AI capabilities
- Build a service-specific tool that interacts with an external API
- Develop a prototype MCP server following best practices
- Teach or learn MCP server implementation patterns
FAQ from Python MCP Server Template
What are the dependencies and runtime requirements?
The server requires Python 3 and the packages listed in requirements.txt. It uses the FastMCP library and runs via stdio.
How is authentication handled?
The template expects an API key stored in the environment variable SERVICE_API_KEY. The key is passed in the VS Code MCP configuration as a promptString input.
What transport does the server use?
The server communicates with VS Code using the stdio transport, as configured in the VS Code settings.json MCP entry.
Are there any known limitations?
The README does not mention specific limitations; the template is a starting point for custom servers and does not include built-in tools.
Where does the server’s configuration come from?
Configuration is loaded from environment variables (e.g., SERVICE_API_KEY, SERVICE_ENDPOINT, SERVICE_TIMEOUT, LOG_LEVEL) and validated with Pydantic models at startup.