关于 Python MCP Server Starter Template
用于通过 MCP Python SDK 构建 MCP 服务的 Python 起始模板,为开发者提供模块化脚手架,并包含工具、资源、命令行选项、调试和 Docker 支持。
主要功能
- 01FastMCP 服务脚手架
- 02工具和资源注册
- 03可定制命令行选项
- 04VS Code 调试配置
- 05Docker 部署支持
适用场景
- 01启动 Python MCP 服务项目
- 02为服务添加工具和资源
- 03在 VS Code 中调试 MCP 服务
- 04使用 Docker 打包服务
MCP 相关
使用 MCP Python SDK 创建向 MCP 客户端提供工具和资源的服务。模板支持 stdio 和 SSE 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Python MCP 服务启动模板
一个模板仓库,用于使用 Model Context Protocol (MCP) 和 MCP Python SDK 创建 Python 应用程序。
功能
- 使用
mcpPython SDK(FastMCP)实现 MCP 服务。 - 提供 MCP 工具(可由大模型调用的函数)和 资源(大模型可访问的数据)。
- 架构清晰、模块化
- 轻松注册工具和资源
- 提供带自定义选项的命令行界面
- 可用于生产环境部署
- 内置基于 debugpy 的调试功能,并集成 VS Code
- 配置开发工具(使用
uv管理环境和包) - 支持 Docker 容器化部署
开始使用
先决条件
- Python 3.10 或更高版本
- uv(推荐用于环境和包管理)
- MCP Inspector(推荐用于测试和调试 MCP 服务的可视化工具)
- [可选] Git
- [可选] 用于容器化部署的 Docker
安装
-
克隆或用作模板: 获取代码。
git clone https://github.com/ltwlf/python-mcp-starter.git your-repo-name # Or use GitHub's "Use this template" button cd your-repo-name -
重命名项目: 重命名核心组件:
- 将
hello_mcp_server目录重命名为你想要的 Python 包名称(例如,my_awesome_mcp)。 - 在
pyproject.toml、README.md、Dockerfile、docker-compose.yml中搜索并替换hello-mcp-server,替换为你的项目名称(例如,my-awesome-mcp)。 - 在 Python 导入语句(例如
main.py、tests/test_server.py和pyproject.toml的 scripts 部分)中搜索并替换hello_mcp_server,替换为新的包名称。 - 更新重命名后的
server.py文件中的APP_ID。 - 更新
.vscode/launch.json配置文件,使其反映新的项目名称和包名称。
- 将
-
创建虚拟环境:
# Create the virtual environment uv venv # Activate the environment (Windows PowerShell) .venv\Scripts\Activate.ps1 # Or for other shells: # source .venv/bin/activate (Linux/macOS) # .venv\Scripts\activate.bat (Windows Command Prompt) -
安装依赖项:
uv pip install -e ".[dev]"
在开发环境中运行 MCP 服务
你可以直接使用 uv run 或 SDK 提供的 mcp CLI 工具运行服务。这样便可以使用 MCP Inspector 等工具进行测试。
在 stdio 模式下(用于 MCP Inspector)
方法 1:使用 uv run
# Ensure your virtual environment is active first
# Replace 'hello-mcp-server' with the script name defined in your pyproject.toml
uv run your-script-name
方法 2:使用 mcp CLI 工具
# Ensure your virtual environment is active first
# Replace 'hello_mcp_server' with your renamed package directory
mcp dev ./your_package_name/server.py
在 SSE 模式下
# Ensure your virtual environment is active first
# Replace 'hello-mcp-server' with your script name
uv run your-script-name --sse
或者使用自定义主机和端口:
# Ensure your virtual environment is active first
# Replace 'hello-mcp-server' with your script name
uv run your-script-name --sse --host 127.0.0.1 --port 9000
Docker 部署
构建前,请更新 Dockerfile 和 docker-compose.yml,使其反映重命名后的项目和包。
# Build and run with Docker Compose
docker-compose up -d
# Or build and run directly with Docker
# Replace 'hello-mcp-server' with your image name
docker build -t your-image-name .
docker run -p 8000:8000 your-image-name
开发
调试
本项目内置基于 debugpy 的调试功能。调试 MCP 服务主要有两种方式:
使用调试模块
本项目包含专用的调试模块,方便进行调试:
# Using uv (recommended)
uv run mcp-debug
请先连接到 MCP Inspector;连接后,使用 VS Code 调试配置 Attach to MCP worker 连接调试器进行调试
使用 VS Code
VS Code 调试已配置多个启动配置:
- 附加到 MCP worker - 附加到正在运行的 MCP 服务(将此配置附加到正在运行的 mcp-debug)
- 启动 MCP 服务(SSE) - 直接启动支持服务器发送事件的 MCP 服务
为获得最佳体验:
- 首先,在终端中运行
uv run mcp-debug - 然后,若要设置断点,请使用 VS Code 调试器中的“附加到 MCP worker”配置
注意: 调试前,请确保已使用
uv venv和uv pip install -e .[dev]设置虚拟环境。
- 检查 Python 解释器:
- 确保 VS Code 使用虚拟环境中的正确 Python 解释器
- 如有需要,可使用 Python 扩展的“选择解释器”命令来选择解释器
使用这些配置:
- 在 VS Code 中打开“运行和调试”面板(Ctrl+Shift+D)
- 从下拉菜单中选择所需的配置
- 点击播放按钮或按 F5
安全注意事项
- 切勿在生产环境中使用调试模式
- 调试器会开放一个网络端口,如果未采取安全措施,该端口可能遭到利用
- 始终在可信网络中进行调试,或采取适当的安全措施
添加新工具
在 your_package_name/server.py 中使用 @mcp.tool() 装饰器添加新工具:
# your_package_name/server.py
from mcp.server.fastmcp import FastMCP, Context
mcp = FastMCP("your-app-id") # Ensure APP_ID matches your project
# ... existing tools ...
# Add your new tool
@mcp.tool()
async def my_new_tool(param1: str, param2: int, ctx: Context) -> dict:
"""
Description of what your tool does.
Use the ctx object to report progress, log info, or read resources.
"""
ctx.info(f"Running my_new_tool with {param1=}, {param2=}")
# Tool implementation
result = f"Processed {param1} {param2} times"
await ctx.report_progress(1, 1) # Example progress
return {"result": result}
添加新资源
在 your_package_name/server.py 中使用 @mcp.resource() 装饰器添加新资源:
# your_package_name/server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("your-app-id") # Ensure APP_ID matches your project
# ... existing resources ...
# Add resources
@mcp.resource("your-resource-uri")
def your_resource_func():
"""Returns application settings."""
return {"theme": "dark", "language": "en"}
测试
确保 tests/test_server.py 中的导入语句指向重命名后的包。
pytest
许可证
本项目基于 MIT 许可证授权,详情请参阅 LICENSE 文件。
致谢
- MCP - Microsoft 推出的 Model Context Protocol
- MCP Python SDK - MCP 的 Python 实现
- MCP Inspector - 用于检查 MCP 通信的工具
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。