使用说明
MCP沸腾板
使用Python和FastMCP v2构建的模型上下文协议(MCP)服务器的一个健壮的、可用于生产的样板模板。
🎯 关于此模板
此样板提供了构建专业MCP服务器所需的一切:
- 🏗️ 稳健的体系结构:模块化设计,明确分离关注点
- 🔧 综合工具:现成的数学、文本处理和实用函数
- 📊 丰富的资源:系统指标、数据存储和示例数据
- 🤖 AI提示:适用于各种场景的现成提示模板
- 🛡️ 生产就绪:错误处理、日志记录、验证和测试
- 📋 开发者体验:生成命令、代码质量工具和综合文档
- ⚡ FastMCP v2:最新的FastMCP版本,具有改进的API和多种传输支持
特性
🔧 示例工具包括
- 数学运算(加、减、乘、除、幂、阶乘)
- 文本处理(长度、大小写转换、单词提取、替换)
- 实用函数(UUID生成、哈希、JSON验证、base64编码)
📊 示例资源
- 系统信息和性能指标
- 带有统计信息的内存数据存储
- 多种格式的示例数据(JSON、CSV、XML)
🤖 示例提示
- 代码审查和解释提示
- 数据分析和问题解决模板
- 比较分析框架
🛡️ 生产特点
- 全面的错误处理和记录
- 输入验证和安全措施
- 健康检查和监测
- 广泛的测试覆盖范围
- MyPy的类型安全
快速开始
先决条件
- Python 3.11+
- 紫外线 包管理器
1.使用此模板
# Clone the template
git clone <your-repo-url> your-mcp-server
cd your-mcp-server
# Remove existing git history (optional)
rm -rf .git
git init
重命名包
选项A:手动重命名
- 重命名
src/mcp_boilerplate/向src/your_server_name/ - 更新所有Python文件中的导入
- 更新
pyproject.toml包装参考
选项B:自动重命名(推荐)
# Test what changes would be made (dry run)
python scripts/rename_project.py --dry-run your_server_name
# Rename everything at once
python scripts/rename_project.py your_server_name
2.安装依赖项
# Install development dependencies
uv sync --all-extras
# Copy environment configuration
cp .env.example .env
3.自定义您的服务器
-
更新项目信息 在……里面
pyproject.toml:[project] name = "your-mcp-server" description = "Your custom MCP server description" authors = [ {name = "Your Name", email = "your.email@example.com"} ] keywords = ["mcp", "your", "keywords"] [project.urls] Homepage = "https://github.com/yourusername/your-mcp-server" Repository = "https://github.com/yourusername/your-mcp-server" Issues = "https://github.com/yourusername/your-mcp-server/issues" [project.scripts] your-mcp-server = "your_server_name.main:main" [tool.hatch.build.targets.wheel] packages = ["src/your_server_name"] -
修改服务器名称 在……里面
src/your_server_name/config/settings.py:server_name: str = Field(default="your-server-name", description="Name of the MCP server") -
更新环境变量 在……里面
.env:SERVER_NAME=your-server-name # Add your custom variables YOUR_API_KEY=your-api-key YOUR_DATABASE_URL=postgresql://... -
添加您的工具 在……里面
src/your_server_name/tools/:- 创建新的工具文件
- 将它们注册到
tools/__init__.py
-
添加您的资源 在……里面
src/your_server_name/resources/:- 创建新的资源文件
- 将它们注册到
resources/__init__.py
4.运行服务器
# Run with STDIO transport (default)
make run
# Or run directly
uv run python -m mcp_boilerplate.main
# Debug mode
make run-debug
# Run with SSE transport for web integration
make run-sse
# Or run SSE directly
uv run --extra sse python -m mcp_boilerplate.main --transport sse --port 8000
5.测试您的服务器
# Run tests
make test
# Run with coverage
make test-cov
# Code quality checks
make lint
make type-check
与Claude Desktop一起使用
添加到您的Claude Desktop MCP配置中:
{
"mcpServers": {
"your-server-name": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_boilerplate.main"],
"cwd": "/path/to/your-mcp-server"
}
}
}
项目结构
src/mcp_boilerplate/
├── __init__.py
├── main.py # CLI entry point
├── server.py # Core server implementation
├── config/
│ ├── __init__.py
│ └── settings.py # Configuration management
├── tools/ # MCP tools
│ ├── __init__.py
│ ├── math_tools.py
│ ├── text_tools.py
│ └── utility_tools.py
├── resources/ # MCP resources
│ ├── __init__.py
│ ├── system_resources.py
│ └── data_resources.py
├── prompts/ # MCP prompts
│ ├── __init__.py
│ ├── assistant_prompts.py
│ └── analysis_prompts.py
├── handlers/ # Error handling
│ ├── __init__.py
│ └── error_handler.py
└── utils/ # Utilities
├── __init__.py
├── logger.py
└── validation.py
定制指南
删除示例组件
样板包括示例工具、资源和提示。删除不需要的内容:
# Remove example tools (keep only what you want)
rm src/your_server_name/tools/math_tools.py
rm src/your_server_name/tools/text_tools.py
# Keep utility_tools.py or customize it
# Remove example resources
rm src/your_server_name/resources/data_resources.py
# Keep system_resources.py for monitoring
# Remove example prompts (if you don't need them)
rm -rf src/your_server_name/prompts/
重要:更新 __init__.py 用于删除对已删除模块的引用的文件。
添加新工具
-
在中创建新文件
src/your_server_name/tools/:# src/your_server_name/tools/your_tools.py from ..server import mcp @mcp.tool def your_tool(param: str) -> str: """Your tool description.""" return f"Result: {param}" -
注册
src/your_server_name/tools/__init__.py:# Import to register the tools from . import your_tools
添加新资源
-
在中创建新文件
src/your_server_name/resources/:# src/your_server_name/resources/your_resources.py from ..server import mcp import json @mcp.resource("your-domain://data/{id}") def get_your_data(id: str) -> str: """Get your domain-specific data.""" return json.dumps({"id": id, "data": "your_data"}) -
注册
src/your_server_name/resources/__init__.py:# Import to register the resources from . import your_resources
添加新提示
-
在中创建新文件
src/your_server_name/prompts/:# src/your_server_name/prompts/your_prompts.py from ..server import mcp @mcp.prompt def your_prompt(task: str, style: str = "professional") -> str: """Generate a custom prompt.""" return f"Task: {task}\nStyle: {style}" -
注册
src/your_server_name/prompts/__init__.py:# Import to register the prompts from . import your_prompts
常见集成模式
数据库集成
# Add to pyproject.toml dependencies
dependencies = [
# ... existing dependencies
"sqlalchemy>=2.0.0",
"asyncpg>=0.28.0", # for PostgreSQL
]
# Create database tools
@mcp.tool
def query_database(sql: str) -> str:
"""Execute a database query."""
# Your database implementation with proper validation
pass
API集成
# Add HTTP client dependency
dependencies = [
# ... existing dependencies
"httpx>=0.24.0",
]
# Create API tools
@mcp.tool
async def call_external_api(endpoint: str) -> str:
"""Call an external API."""
# Your API implementation with error handling
pass
文件系统操作
@mcp.tool
def read_file(file_path: str) -> str:
"""Read a file from the filesystem."""
# Implement with proper security checks and path validation
pass
@mcp.resource("file://{path}")
def get_file_content(path: str) -> str:
"""Get file content as a resource."""
# Your implementation with security validation
pass
开发命令
# Setup development environment
make install-dev
# Run server
make run # Production mode
make run-debug # Debug mode
# Testing
make test # Run tests
make test-cov # Run with coverage
# Code quality
make lint # Linting
make format # Code formatting
make type-check # Type checking
# All quality checks
make ci
# Build package
make build
配置
环境变量
复制 .env.example 向 .env 并自定义:
# Server Configuration
SERVER_NAME=your-server-name
LOG_LEVEL=INFO
ENABLE_DEBUG=false
ENABLE_METRICS=true
MAX_REQUEST_SIZE=1048576
REQUEST_TIMEOUT=30
# Your Custom Variables
YOUR_API_KEY=your-api-key
YOUR_DATABASE_URL=postgresql://user:pass@localhost/db
YOUR_CUSTOM_SETTING=value
依赖项
更新 pyproject.toml 根据您的特定依赖关系:
dependencies = [
"fastmcp>=2.0.0",
"pydantic>=2.0.0",
"pydantic-settings>=2.0.0",
# Add your dependencies here
"your-required-library>=1.0.0",
]
# SSE transport support (optional)
[project.optional-dependencies]
sse = [
"uvicorn>=0.24.0",
"starlette>=0.32.0",
]
示例工具包括
数学工具
add(a, b)-加两个数字subtract(a, b)-减去两个数字multiply(a, b)-将两个数字相乘divide(a, b)-除以两个数字power(base, exponent)-提升到权力factorial(n)-计算阶乘
文本工具
text_length(text)-获取文本长度text_uppercase(text)-转换为大写text_lowercase(text)-转换为小写text_reverse(text)-反转文本word_count(text)-数单词extract_words(text, min_length)-提取单词text_replace(text, old, new)-替换文本
实用工具
generate_uuid()-生成UUID 4current_timestamp()-获取当前时间戳hash_text(text, algorithm)-哈希文本validate_json(text)-验证JSONformat_json(text)-格式化JSONencode_base64(text)-Base64编码decode_base64(text)-Base64解码
示例资源包括
系统资源
system://info-系统信息system://performance-性能指标system://config-服务器配置
数据资源
data://store/{key}-按键获取存储的数据data://store-列出所有存储的数据data://statistics-数据存储统计data://sample/{format}-示例数据(json/csv/xml)
示例提示包括
助理提示
helpful_assistant(task, style)-一般协助code_reviewer(code, language, focus)-代码审查explain_concept(concept, audience, depth)-概念说明
分析提示
data_analyst(data_description, analysis_type)-数据分析problem_solver(problem, approach)-解决问题comparative_analysis(item_a, item_b, criteria)-比较
测试您的更改
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run python -m mcp_boilerplate.main
# Or if installed globally
mcp-inspector uv run python -m mcp_boilerplate.main
安全与最佳实践
安全考虑
- 输入验证:审查和更新验证
utils/validation.py - 敏感数据:确保错误消息中没有记录或暴露任何秘密
- 速率限制:为生产部署添加速率限制
- 路径验证:验证文件路径以防止目录遍历
- 环境变量:切勿将机密提交到存储库
开发最佳实践
- 遵循既定的模式 用于工具、资源和提示
- 添加全面的错误处理 对于所有新组件
- 包括输入验证 出于安全考虑
- 编写测试 对于新功能
- 更新文档 添加功能时
- 使用类型提示 为了获得更好的代码质量
- 使用MCP检查员进行测试 部署前
测试您的更改
# Update tests to match your changes
make test
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run python -m your_server_name.main
# Or if installed globally
mcp-inspector uv run python -m your_server_name.main
贡献
- 分叉此存储库
- 创建功能分支
- 添加您的工具、资源或提示
- 为新功能编写测试
- 运行质量检查:
make ci - 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
自动化脚本
创建 scripts/rename_project.sh 对于自动设置:
#!/bin/bash
# Usage: ./scripts/rename_project.sh new_name "New Description"
OLD_NAME="mcp_boilerplate"
NEW_NAME="$1"
NEW_DESC="$2"
if [ -z "$NEW_NAME" ]; then
echo "Usage: $0 new_name \"New Description\""
exit 1
fi
# Rename source directory
mv "src/${OLD_NAME}" "src/${NEW_NAME}"
# Update all Python files
find . -name "*.py" -exec sed -i "s/${OLD_NAME}/${NEW_NAME}/g" {} +
# Update pyproject.toml
sed -i "s/mcp-boilerplate/${NEW_NAME//_/-}/g" pyproject.toml
sed -i "s/mcp_boilerplate/${NEW_NAME}/g" pyproject.toml
if [ -n "$NEW_DESC" ]; then
sed -i "s/A robust boilerplate template.*/${NEW_DESC}/g" pyproject.toml
fi
echo "Project renamed to ${NEW_NAME}"
echo "Don't forget to update README.md and other documentation!"
额外资源
🚀 立即开始构建您的MCP服务器! 此样板为您提供了快速高效地创建生产就绪MCP服务器所需的一切。