MCP 快速入门资源仓库:从零搭建你的第一个 MCP 服务
快速答案
- 核心结论:
modelcontextprotocol/quickstart-resources是 MCP 官方提供的教学示例仓库,用于学习如何构建 MCP 服务器(天气服务)和客户端(LLM 聊天机器人),适合初学者快速上手 MCP 协议。 - 第一检查项:确保 Python 环境已安装(推荐 3.10+),并已克隆仓库到本地。
- 最小修复/配置:运行
pip install -e .安装本地包,然后启动服务器python -m weather_server,客户端通过标准输入/输出与服务器通信。 - 适用边界:仅限本地开发和学习环境,不适用于生产部署,无认证、日志、并发等生产特性。
它解决什么问题 / 适用场景
这个仓库解决的核心问题是:MCP 协议太抽象,初学者不知道从哪开始。它提供了一个最小可运行的端到端示例,包含:
- 一个基于 Python 的 MCP 服务器(天气服务),演示如何定义工具(tools)和资源(resources)。
- 一个基于 LLM 的客户端,演示如何通过 MCP 协议与服务器交互,让 AI 模型调用外部工具。
适用场景:
- 刚接触 MCP 协议,想理解其工作原理的开发者。
- 需要快速搭建一个 MCP 实验环境,验证想法或学习协议细节。
- 教学演示,向团队展示 MCP 的基本用法。
不适用场景:
- 生产环境部署(缺少安全、监控、持久化等特性)。
- 高并发或大规模数据处理的场景。
- 需要与数据库、文件系统等复杂资源交互的场景(应使用 sqlite-mcp、pg-mcp 等专用实现)。
安装与快速上手
前置条件
- Python 3.10 或更高版本
- pip 包管理器
- 一个支持 MCP 的 AI 客户端(如 Claude Desktop),或直接使用仓库提供的客户端脚本
安装步骤
-
克隆仓库:
BASHgit clone https://github.com/modelcontextprotocol/quickstart-resources.git cd quickstart-resources -
安装依赖:
BASHpip install -e .这会将
weather_server模块安装为本地包,使其可以被 Python 直接导入。 -
启动 MCP 服务器:
BASHpython -m weather_server服务器会启动并监听标准输入/输出(stdio),等待客户端连接。
-
运行客户端(可选): 仓库通常包含一个客户端示例脚本,运行它即可与服务器交互。具体命令请参考仓库内的 README。
在 AI 客户端中集成
如果你使用 Claude Desktop 或其他支持 MCP 的客户端,可以在配置文件中添加以下 JSON 块:
JSON{ "mcpServers": { "weather-server": { "command": "python", "args": ["-m", "weather_server"] } } }
将这段配置放入客户端的 MCP 配置文件中(如 claude_desktop_config.json),重启客户端即可自动启动天气服务。
核心配置 / 参数说明
该仓库作为教学示例,配置项非常少,主要依赖环境变量和命令行参数。以下是关键配置点:
| 配置项 | 说明 | 默认值 | 建议 |
|---|---|---|---|
command | 启动服务器的可执行文件 | python | 确保 Python 在 PATH 中 |
args | 传递给命令的参数 | ["-m", "weather_server"] | 如需调试,可添加 -v 等参数 |
| 工作目录 | 服务器运行的工作目录 | 当前目录 | 确保 weather_server 模块可被找到 |
| 环境变量 | 自定义配置(如 API 密钥) | 无 | 生产环境建议通过环境变量注入敏感信息 |
注意:该仓库未使用配置文件,所有逻辑硬编码在 Python 代码中。如需修改工具定义或资源路径,需直接编辑源码。
与同类方案对比
| 对比维度 | quickstart-resources | sqlite-mcp | pg-mcp |
|---|---|---|---|
| 功能完整性 | 基础教学示例,仅演示天气查询 | 完整的 SQLite 数据库操作(CRUD、查询) | PostgreSQL 数据库操作,支持复杂 SQL |
| 文档质量 | 官方示例,文档简洁但完整 | 社区维护,文档较详细 | 社区维护,文档中等 |
| 社区活跃度 | 官方仓库,更新稳定 | 活跃,有较多贡献者 | 较活跃,但更新频率较低 |
| 生产就绪度 | ❌ 不适用 | ⚠️ 可用于小型项目,需自行加固 | ⚠️ 可用于中型项目,需添加安全层 |
| 学习价值 | ⭐⭐⭐⭐⭐ 最适合入门 | ⭐⭐⭐ 适合学习数据库集成 | ⭐⭐⭐ 适合学习数据库集成 |
选择建议:
- 如果你是 MCP 新手,先从这个仓库开始。
- 如果你需要操作数据库,直接使用 sqlite-mcp 或 pg-mcp,不要基于这个示例改造。
常见报错与排查
ModuleNotFoundError: No module named 'weather_server'
原因:weather_server 模块未正确安装或 Python 路径未包含该模块。
解决:
BASH# 确保在仓库根目录执行 pip install -e . # 验证安装 python -c "import weather_server; print('OK')"
Connection refused: connect
原因:MCP 服务器未启动,或端口被其他进程占用(如果使用 TCP 传输)。
解决:
- 确认服务器进程正在运行:
ps aux | grep weather_server - 检查端口占用:
lsof -i :<端口号>(如果使用 TCP) - 重启服务器:
python -m weather_server
TimeoutError: The read operation timed out
原因:客户端与服务器之间的通信超时,通常由网络延迟或服务器响应过慢引起。
解决:
- 检查服务器日志,确认是否有异常输出。
- 增加客户端的超时设置(如果客户端支持配置)。
- 优化服务器代码,避免长时间阻塞操作。
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
原因:MCP 服务器返回了非 JSON 格式的响应,通常是服务器崩溃或输出了调试信息。
解决:
- 检查服务器标准输出,确保没有混入
print()调试语句。 - 确认服务器代码符合 MCP 协议规范,所有输出必须是 JSON-RPC 格式。
- 在客户端添加错误处理,捕获并记录原始响应内容以便调试。
常见问题 FAQ
Q: 这个仓库可以直接用于生产环境吗?
A: 不可以。该仓库仅用于快速入门教学,不包含任何生产级特性,如认证、日志、监控、并发处理等。生产环境应使用成熟的 MCP 服务器实现,并添加必要的安全措施,如 API 密钥验证、HTTPS/TLS 加密、请求限流等。
Q: 如何扩展这个示例以支持更多工具?
A: 在 weather_server 模块中添加新的工具函数,并在 MCP 服务器注册。具体步骤:
- 定义新工具的处理函数。
- 在服务器初始化时调用
register_tool()注册新工具。 - 参考 MCP 协议文档,确保工具定义符合 JSON-RPC 规范。
- 更新客户端以支持新工具的调用。
Q: 这个仓库与 sqlite-mcp 或 pg-mcp 相比有什么优势?
A: 该仓库的优势在于简单和教学性,适合初学者理解 MCP 基本概念。而 sqlite-mcp 和 pg-mcp 是专门针对数据库的 MCP 服务器,提供了更丰富的数据库操作功能和更好的性能,适合实际数据管理场景。如果你需要操作数据库,建议直接使用专用实现,而不是基于这个示例改造。
相关深度解决方案
在配置当前服务时,如果您需要实现更复杂的架构或多源数据整合,建议配合参考我们整理的 PostgreSQL 锁等待分析 MCP 服务:快速诊断与配置指南。
在配置当前服务时,如果您需要实现更复杂的架构或多源数据整合,建议配合参考我们整理的 Kubernetes MCP Server:用自然语言管理集群的实战配置与排坑。