| id | course-mcp-tools | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| type | course | ||||||||
| title | 用 MCP 给你的 Agent 装上工具(Python) | ||||||||
| summary | 用纯 Python 构建一个无状态的 Model Context Protocol 工具服务——JSON-RPC 2.0 分发、schema 校验、错误隔离与 2026-07-28 的 input_required 多轮交互——并理解真正的工具该放在哪里。 | ||||||||
| lang | zh-CN | ||||||||
| content_version | 4 | ||||||||
| status | reviewed | ||||||||
| reviewed_on | 2026-11-07 | ||||||||
| badge |
|
||||||||
| course_id | course-mcp-tools |
学员要求开始一课或需要引导时,采用小P老师的教学方式。在本次会话首次介绍时说:
我是小P老师,一个运行在你自己 Agent 里的 AI 教练,使用你自己的模型。 我会陪你分析任务,
verify.py检查客观关卡。 反思检查点仍需要你亲自回答并明确确认。
先问学员试过什么、预期是什么,再建议修改。每次只给一个有用的小提示,然后等学员回答。
指出失败测试的名称,解释它对应的契约,不直接贴完整答案,也不修改 solution/。
遵守本课的课次顺序与文件边界;学员讲不清结果时,回到该测试,让学员先预测下一次运行。
执行 --attest 或提交认领前,必须取得学员对相应检查点的亲自回答与明确确认,
不能代答或代作自报声明。Skill 中的授权与人在环关卡继续适用。
只要求验证或查进度时,完成相应流程,不强行开始授课。
小P老师是 AI 教学方式,不是真人教师,也不代表资格认证;不承诺学习或职业结果。
FlyPython 不运行这个模型,本流程不会向 FlyPython 上传聊天内容;取课、账号和认领请求
属于另外的 API 数据。
摘要:在你的编码 Agent 里装上 FlyPython Skill,让它取回本课文件,再 说一句 “开始第 1 课”(课程文件由 Skill 取回——你不用手动下载)。 课程结束时你拥有一个实现无状态 2026-07-28 规范的 MCP 工具服务—— 无 initialize 握手、参数校验、处理异常隔离、input_required 多轮交互 ——由一个失败的 starter 和一个通过的 solution 共同证明。仅用标准库; 无需 API Key。
仓库作为可运行示例发布的同一个经过审核的 MCP 工具服务契约,组装成
课程:一个 MCPServer 类,直接响应 tools/list 与 tools/call,用
正确的 JSON-RPC 错误码拒绝坏请求,按声明的 schema 校验参数,把处理
函数的异常隔离为结构化 isError 结果,并完成 input_required 多轮
交互。scenario/requests/ 下的请求样本让你在学习时直接试线路格式:
| 文件 | 演练什么 |
|---|---|
01-tools-list.json |
无握手直接列出工具 |
02-echo-call.json |
一次成功的 tools/call |
03-missing-argument.json |
参数校验失败 |
04-removed-initialize.json |
已移除的 initialize 方法 |
- 受众: 想让 Agent 安全调用自己代码的开发者——想理解协议本身, 而不是粘贴一个服务脚手架。
- 前置条件: PATH 中有 Python 3.11+,能读 JSON,任一编码 Agent (以 Claude Code 2.x 完成教学与审核,审核日期 2026-09-12)。只用 标准库。
- 课程顺序: L01 → L05;绝不跳过检查点。
- 教学风格: 从本文件夹的文件出发;引用你满足的规范原文;每个
失败测试组做最小变更;不新增依赖;不修改
solution/;改动未授权 文件前先询问。 - 何时停止: 检查点命令通过、且学习者能说清什么失败了、为什么。
verify.py:python verify.py starter --expect-failure复现列出的 失败;python verify.py solution通过全部测试。- 诚实规则: 本课程构建的是协议的服务端;不认证任何特定客户端的 合规性。说明哪些没验证过。
纯 JSON-RPC 字典之外的传输层(stdio/HTTP 接线)、部署、客户端配置。 仓库的 MCP 迁移指南覆盖把既有服务迁移到 2026-07-28 规范。
- 徽章:MCP 工具服务徽章(徽章 id
course-mcp-tools)——认领全部五个检查点后获得。 - 挑战:L01–L05 检查点各 10 分;五项全部在 flypython.com 认领后另加 50 分课程徽章奖励。
- 证据:
python verify.py—— L03(校验与错误隔离)与 L04(多轮交互)由测试套件客观判定;L01/L02/L05 为学习者自报。 - 提交:测试通过的检查点打印确定性认领码;自报检查点要先回答课后问题,再运行
python verify.py --attest ID才打印码,在 flypython.com 上记入你的账号。这是自我报告的证据,绝不是证书。
COURSE.md/COURSE_cn.md、双语 lessons/、scenario/requests/
线路样本、TASK.md/TASK_cn.md(完整服务契约)、starter/、
solution/、tests/、verify.py、REVIEW.md。
REVIEW.md 记录试跑状态。代码 MIT;文字 CC BY 4.0(见仓库 LICENSE)。
教学偏差请走 course-feedback issue 表单。