项目简介
这是一个基于Python语言和Model Context Protocol (MCP) Python SDK构建的MCP服务器启动模板。它提供了一个干净、模块化的基础架构,帮助开发者快速创建符合MCP规范的应用后端,为大型语言模型(LLM)客户端提供结构化的上下文信息和可执行的功能。
主要功能点
- 实现MCP服务器核心功能: 基于官方SDK构建,遵循MCP协议标准。
- 暴露工具(Tools): 允许开发者注册Python函数作为工具,供LLM调用执行特定任务。
- 暴露资源(Resources): 允许开发者定义数据接口作为资源,供LLM访问和读取上下文数据。
- 支持多种传输协议: 支持Stdio(标准输入输出)和SSE(Server-Sent Events)模式进行通信。
- 易于扩展: 模块化设计,方便添加新的工具和资源。
- 包含开发工具: 集成调试支持和Docker部署配置。
安装步骤
- 获取代码: 通过Git克隆仓库或使用GitHub的“Use this template”功能创建新仓库。
git clone https://github.com/ltwlf/python-mcp-starter.git your-project-name cd your-project-name - 重命名项目: 根据指引将项目目录和相关文件中的默认名称(如 'hello_mcp_server')替换为你自己的项目名称。
- 创建并激活虚拟环境: 推荐使用'uv'工具创建和管理虚拟环境。
uv venv source .venv/bin/activate # macOS/Linux # 或 .venv\Scripts\Activate.ps1 (Windows PowerShell) - 安装依赖: 安装项目运行和开发的依赖包。
uv pip install -e ".[dev]"
服务器配置 (供MCP客户端使用)
MCP客户端(如LLM应用)需要知道如何启动并连接到这个MCP服务器。客户端通常通过一个JSON对象来配置服务器信息,其中至少包含以下关键字段:
- 'server name': 用于标识服务器的名称(例如:'my-awesome-mcp')。
- 'command': 启动服务器进程的命令。这取决于你最终如何打包和运行你的Python应用。
- 'args': 传递给启动命令的参数列表。这些参数控制服务器的行为,例如选择Stdio或SSE模式。
- 'transport': 指明使用的传输协议,通常是'stdio'或'sse'。
如何确定 'command' 和 'args':
你需要根据你的实际运行方式来构建 'command' 和 'args'。参考项目中“Running the MCP Server for Development”一节的命令示例:
-
Stdio模式 (通常用于本地开发或与Inspector连接):
- 如果使用 'uv run your-script-name' 方式启动,'command' 可能是 'uv', 'args' 可能是 '["run", "your-script-name"]'。
- 如果使用 'mcp dev ./your_package_name/server.py' 方式启动,'command' 可能是 'mcp', 'args' 可能是 '["dev", "./your_package_name/server.py"]'。
- 在这种模式下,'transport' 配置为 'stdio'。
-
SSE模式 (通常用于网络服务):
- 如果使用 'uv run your-script-name --sse --host 127.0.0.1 --port 9000' 方式启动,'command' 可能是 'uv', 'args' 可能是 '["run", "your-script-name", "--sse", "--host", "127.0.0.1", "--port", "9000"]'。
- 在这种模式下,'transport' 配置为 'sse'。
客户端配置时,需要根据你的项目名称、实际文件路径和选择的启动命令来准确填写 'command' 和 'args' 字段。
基本使用方法
- 启动服务器: 激活虚拟环境后,根据你的需求选择Stdio或SSE模式运行服务器。例如,以Stdio模式启动(用于与MCP Inspector连接):
或者以SSE模式启动:uv run your-script-name # 替换为你在pyproject.toml中定义的脚本名 # 或 mcp dev ./your_package_name/server.py # 替换为你的项目包名uv run your-script-name --sse --host 127.0.0.1 --port 8000 - 连接客户端: 启动后,一个支持MCP协议的客户端(如MCP Inspector或其他LLM应用)可以通过配置中提供的 'command' 和 'args' 来启动并连接到你的服务器进程。
- 交互: 客户端连接成功后,可以发现服务器暴露的工具(如示例中的'add'函数)和资源(如示例中的'greeting://{name}'资源),并通过MCP协议进行调用和访问。
添加自定义功能
根据README中的指引,你可以通过 '@mcp.tool()' 装饰器添加新的工具函数,通过 '@mcp.resource()' 装饰器添加新的资源访问接口。
信息
分类
开发者工具