Python MCP Template
<div align="center">
<h1> Python MCP Template </h1>
</div>
> A DevOps-friendly template with CI/CD, Docker, and Documentation-as-Code (DaC) for building MCP server
## 🚀 Core Idea
This template leverages **fastmcp** and **FastAPI** to seamlessly integrate MCP functionality while inheriting the original OpenAPI specifications.
## 🌟 Features
- **CI/CD Integration**: Automate your workflows with GitHub Actions.
- **Dockerized Environment**: Consistent and portable development and production environments.
- **Documentation-as-Code**: Automatically generate and deploy documentation using MkDocs. This process also utilizes the `openapi.json` file to ensure API documentation is up-to-date.
- **FastAPI Integration**: Build robust APIs with OpenAPI support.
## 🛠️ Getting Started
### Local Development
1. Install dependencies:
```bash
uv sync
```
2. Run the MCP server:
```bash
# stdio
uv run fastmcp run mcp_tools/main.py
```
```bash
# HTTP (Due to CORS middleware conflicts, additional setup is required)
uv run uvicorn mcp_tools.main_http:starlette_app --host 127.0.0.1 --port 8000
```
> 
> - https://gofastmcp.com/deployment/http
> - https://github.com/jlowin/fastmcp/issues/840
### Docker
1. Build the Docker image:
```bash
docker build -t python-mcp-template:latest .
```
2. Run the container:
```bash
docker run -i --rm -p 8000:8000 python-mcp-template:latest
```
3. Run MCP Server:
```json
{
"mcpServers": {
"python-mcp-template": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-p",
"8000:8000",
"python-mcp-template:latest"
]
}
}
}
```
## 📚 Documentation
- Documentation is built using MkDocs and deployed to GitHub Pages.
- To build the documentation locally:
```bash
chmod +x scripts/build_docs.sh
scripts/build_docs.sh
mkdocs build
```
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool 'new_endpoint' stands alone with a distinct purpose, so an agent cannot misselect between multiple options.
A single tool inherently has perfect naming consistency, as there are no other tools to compare it against for patterns. The name 'new_endpoint' follows a clear verb_noun structure, but consistency cannot be assessed across a set of one.
A server with only one tool feels thin and under-scoped for most purposes, especially given the generic 'Python MCP Template' name that suggests broader functionality. One tool is typically insufficient for meaningful agent interactions, indicating a mismatch with the apparent scope.
The tool surface is severely incomplete, as a single 'new_endpoint' tool does not cover any domain meaningfully. There are obvious gaps in CRUD operations, lifecycle management, or any coherent workflow, making it impossible for agents to perform useful tasks beyond a trivial response.