About Python MCP Server Template
Python MCP Server Template is an MCP server published by aj-geddes in the Developer Tools category: a complete, production-ready template for creating MCP (Model Context Protocol) servers in Python with uv, Docker, and automated setup.
The repository has 2 stars and 0 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/aj-geddes/python-mcp-server-templateThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (6)
echo(message)Echo functionality
Parameters not published.
health_check()Server health status
Parameters not published.
list_files(directory)Directory listing
Parameters not published.
read_file(file_path)File reading
Parameters not published.
run_shell_command(command)Command execution
Parameters not published.
write_file(file_path, content)File writing
Parameters not published.
Ask AI
Ask AI about Python MCP Server Template
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
🚀 Python MCP Server Template
Create production-ready MCP servers in minutes, not hours
Transform this template into your custom MCP server with our interactive setup wizard. Everything is centralized, documented, and ready for production deployment.
A comprehensive, security-first template for building Model Context Protocol (MCP) servers with Python. Get from zero to production in minutes with built-in Docker support, automated testing, and enterprise-grade CI/CD.
⚡ 2-Minute MCP Server Setup
# 1. Clone and enter directory
git clone https://github.com/aj-geddes/python-mcp-server-template.git
cd python-mcp-server-template
# 2. Install dependencies
pip install -r requirements.txt
# 3. Run interactive setup wizard
python quick_setup.py
# 4. Start your custom MCP server!
python mcp_server.py
That's it! 🎉 Your production-ready MCP server is running with:
- ✅ Custom tools configured
- ✅ Security scanning enabled
- ✅ Docker deployment ready
- ✅ Monitoring and logging active
🎯 Perfect For Building
| Use Case | Example Tools | Setup Time |
|---|---|---|
| 🤖 AI Tool Servers | File processors, calculators, formatters | 2 minutes |
| 🔌 API Integrations | Database queries, web APIs, cloud services | 3 minutes |
| 🛠️ Custom Automation | System commands, workflows, data pipelines | 2 minutes |
| 🏢 Enterprise Solutions | Secure, monitored, compliant MCP servers | 5 minutes |
✨ Why Developers Choose This Template
- ⚡ 2-Minute Setup - Interactive wizard configures everything
- 🎯 Centralized Config - All settings in
config.py, not scattered across files - 🛠️ Easy Tool Addition - Add tools in
tools/custom_tools.pywith examples - 🔒 Security Built-In - A+ grade security with automated scanning
- 📊 Production Ready - Monitoring, logging, Docker, and health checks included
🚀 From Template to Your MCP Server
Interactive Setup
python quick_setup.py
The wizard will ask you:
- Server name (e.g., "weather-tools-server")
- Description (what your server does)
- Your branding (name, email, repository)
- Tool purpose (what kinds of tools you're building)
Your Files Are Updated
config.py- All your settings in one placetools/custom_tools.py- Template for your tool implementationsREADME.md- Updated with your project info
Add Your Tools
# In tools/custom_tools.py
async def my_awesome_tool_impl(param1: str, param2: int) -> Dict[str, Any]:
# Your tool logic here
return {"result": f"Processed {param1} with value {param2}"}
Deploy Anywhere
# Local development
python mcp_server.py
# Production with Docker
docker build -t my-mcp-server .
docker run -p 8080:8080 my-mcp-server
🛠️ Development
Code Quality Tools
# Format code
black .
isort .
# Check types
mypy mcp_server/
# Lint code
flake8 mcp_server/
# Security scan
bandit -r mcp_server/
# Run tests
pytest
# Run tests with coverage
pytest --cov=mcp_server --cov-report=html
Available Commands
| Command | Description |
|---|---|
pytest |
Run all tests |
pytest -m unit |
Run unit tests only |
pytest -m integration |
Run integration tests only |
black . |
Format all Python files |
isort . |
Sort imports |
mypy mcp_server/ |
Type checking |
flake8 mcp_server/ |
Code linting |
bandit -r mcp_server/ |
Security analysis |
./build.sh |
Build and test Docker image |
🔧 Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
MCP_SERVER_NAME |
"template-server" |
Server name identifier |
MCP_TRANSPORT |
"stdio" |
Transport type (stdio, http, sse) |
MCP_HOST |
"0.0.0.0" |
Host for HTTP transport |
MCP_PORT |
"8080" |
Port for HTTP transport |
WORKSPACE_PATH |
"/workspace" |
Base path for file operations |
Security Configuration
⚠️ Important Security Notes:
- The default host
0.0.0.0binds to all interfaces. For production, use127.0.0.1or a specific IP - File operations are restricted to the
WORKSPACE_PATHdirectory - Command execution has timeout limits and input validation
- All file paths are validated to prevent directory traversal attacks
🏗️ Architecture
Core Components
mcp_server/
├── __init__.py # Main server implementation
├── __main__.py # Module entry point
└── tools/ # Tool implementations (future)
mcp_server.py # Application entry point
tests/ # Comprehensive test suite
docker/ # Docker configurations
scripts/ # Build and utility scripts
Available Tools
| Tool | Description | Security Features |
|---|---|---|
health_check() |
Server health status | Read-only operation |
echo(message) |
Echo functionality | Input validation |
list_files(directory) |
Directory listing | Path validation |
read_file(file_path) |
File reading | Size limits, path validation |
write_file(file_path, content) |
File writing | Path validation, encoding checks |
run_shell_command(command) |
Command execution | Timeout limits, sandboxing |
Available Resources
file://{path}- Secure file resource access with path validation
Available Prompts
code_review_prompt(code, language, focus)- Structured code review prompting
🐳 Docker Deployment
Build Options
# Standard build
./build.sh
# Build with version tag
./build.sh v1.0.0
# Alternative builds
docker build -f Dockerfile.alternative -t mcp-server-alt .
docker build -f Dockerfile.fixed -t mcp-server-fixed .
Production Deployment
# Run with volume mount
docker run -v /host/workspace:/workspace \
-e MCP_TRANSPORT=http \
-e MCP_PORT=8080 \
-p 8080:8080 \
python-mcp-server-template:latest
# Run with docker-compose
docker-compose up -d
🧪 Testing
Test Structure
tests/
├── test_mcp_server.py # Comprehensive server tests
├── test_server.py # Additional server tests
└── conftest.py # Test configuration
Test Categories
- Unit Tests: Individual function testing
- Integration Tests: End-to-end workflows
- Security Tests: Path validation and command injection
- Performance Tests: Timeout and resource limits
Running Tests
# All tests
pytest
# With coverage
pytest --cov=mcp_server --cov-report=html
# Specific test types
pytest -m unit
pytest -m integration
pytest -m "not slow"
# Verbose output
pytest -v
# Stop on first failure
pytest -x
🔒 Security
Security Features
- Path Validation: Prevents directory traversal attacks
- Command Sandboxing: Restricted command execution with timeouts
- File Size Limits: Prevents resource exhaustion
- Input Validation: Comprehensive input sanitization
- Environment Configuration: No hardcoded secrets
Security Scanning
# Run security analysis
bandit -r mcp_server/
# Check for known vulnerabilities
safety check
# Generate security report
bandit -r mcp_server/ -f json -o security-report.json
📊 Monitoring & Observability
Health Checks
# Check server health
curl http://localhost:8080/health
# Get server status
python -c "from mcp_server import health_check; import asyncio; print(asyncio.run(health_check()))"
Logging
- Structured logging with Rich console output
- Configurable log levels
- Request/response tracking
- Error reporting with stack traces
🤝 Contributing
Development Setup
# Install pre-commit hooks
pre-commit install
# Run full quality check
./scripts/quality-check.sh
# Create feature branch
git checkout -b feature/new-tool
Contribution Guidelines
- Security First: All code must pass security scans
- Test Coverage: Maintain 80%+ test coverage
- Code Quality: Pass all linting and type checks
- Documentation: Update docs for new features
- Backwards Compatibility: Don't break existing APIs
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
📚 Documentation
| Guide | Description |
|---|---|
| 🚀 Quick Start | Get running in 5 minutes |
| 🔒 Security Guide | A+ security features and best practices |
| 🏗️ API Reference | Complete API documentation |
| 👨💻 Development Setup | Contributing and extending |
| 🐳 Docker Guide | Production Docker deployment |
🎓 Quality Assurance
This template has achieved Dr. Alexandra Chen's production standards:
- 🟢 Final Grade: GOOD (B+) - 78/100
- 💎 Security Grade: EXCEPTIONAL (A+)
- ✅ Production Status: APPROVED FOR DEPLOYMENT
- 🧪 Test Results: 99 passing tests
- 🔒 Security Scan: SECURE (0 vulnerabilities)
🔗 Links
🆘 Support
- 📚 Full Documentation - Comprehensive guides and references
- 🐛 Bug Reports - Report issues and request features
- 💬 Discussions - Community support and questions
- 🔒 Security Issues - Follow responsible disclosure in SECURITY.md
⭐ Star this repository if it helps you build amazing MCP servers!
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.