Template MCP Server
Template MCP Server
A production-ready template for developing Model Context Protocol (MCP) servers using Python and FastMCP. This server provides a foundation for creating MCP-compliant servers with comprehensive examples of tools, structured logging, configuration management, and containerized deployment.
The template includes three example MCP tools: a multiply calculator, a code review prompt generator, and a Red Hat logo tool. It demonstrates best practices for MCP server development including proper error handling, health checks, multiple transport protocols (HTTP, SSE, streamable-HTTP), SSL support, and comprehensive development tooling.
Features
FastMCP + FastAPI with multiple transport protocols (HTTP, SSE, streamable-HTTP)
Three example tools: multiply calculator, code review prompt, Red Hat logo
Pydantic configuration via environment variables
Structured JSON logging with structlog
SSL/TLS support for secure deployments
Container-ready with Red Hat UBI base image
OpenShift deployment manifests included
Full CI/CD with GitHub Actions (tests, linting, security, releases)
OAuth integration with PostgreSQL token storage
Quick Start
git clone https://github.com/redhat-data-and-ai/template-mcp-server
cd template-mcp-server
make install # creates venv, installs deps + pre-commit hooks
make local # starts server on localhost:5001Verify in another terminal:
curl http://localhost:5001/health# Create venv and install
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pre-commit install
# Configure and run
cp .env.example .env
template-mcp-server
# Verify
curl http://localhost:5001/healthHow to Use This Template
Option 1: GitHub Template (Recommended)
Click the "Use this template" button at the top of the repository page.
Name your new repository (e.g.,
my-mcp-server).Clone your new repository and follow the rename checklist below.
Option 2: Manual Clone
git clone https://github.com/redhat-data-and-ai/template-mcp-server.git my-mcp-server
cd my-mcp-server
rm -rf .git
git initRename Checklist
After creating your project, replace all references to template-mcp-server and template_mcp_server with your project name. The following files require updates:
File / Directory | What to Change |
| Rename the package directory (e.g., |
|
|
| References in |
|
|
|
|
| App labels, image names, route hostnames in all manifests ( |
| Workflow names and paths |
| Title, description, clone URL, and all badge URLs (tests, coverage, Codespaces) |
| Adjust defaults if your server uses a different port or protocol |
Verify Rename
Run this to catch any leftover references:
grep -rn "template.mcp" --include="*.py" --include="*.yaml" --include="*.yml" --include="*.toml" --include="*.md" .The output should be empty (or only match this README section itself).
Configuration
Variable | Default | Description |
|
| Server bind address |
|
| Server port (1024-65535) |
|
| Transport protocol ( |
|
| SSL private key file path |
|
| SSL certificate file path |
|
| Enable OAuth authentication (see Auth Guide) |
|
| Browser-based OAuth for local dev |
|
| Logging level |
* ENABLE_AUTH defaults to False in .env.example but True in code. Always copy .env.example to .env to start with auth disabled.
Documentation
Guide | Description |
System diagrams, code structure, key components, MCP tools | |
Setup, running locally, testing, code quality | |
Podman, OpenShift, container configuration | |
Workflows, pipeline features, running CI locally | |
Development workflow, commit conventions, PR process | |
Vulnerability reporting policy | |
Release history | |
OAuth setup, auth modes, troubleshooting | |
Your First Tool in 5 Minutes | |
FastMCP and LangGraph client examples |
Contributing
See CONTRIBUTING.md for detailed guidelines.
# Fork, clone, and set up
git clone https://github.com/<your-username>/template-mcp-server.git
cd template-mcp-server
make install
# Create a branch, make changes, verify
git checkout -b feat/your-feature
make lint && make test && make pre-commit
# Commit and open a PR
git commit -m "feat: your descriptive message"
git push origin feat/your-featureLicense
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ritesh-Goyal/my-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server