MCP Engineering:AI 的 USB-C 接口标准
从「每个工具定制集成」到「一次开发,所有 AI 可用」——掌握 Model Context Protocol 的设计原理、开发实战与生态集成。
学完后你将能够
- 理解 MCP 的核心架构(Client-Host-Server)和三大原语(Resources、Prompts、Tools)
- 用 Python 或 TypeScript 开发 MCP Server 和 Client
- 掌握 MCP Inspector 调试工具和常见问题排查
- 理解 MCP 的安全模型、OAuth 2.1 授权流程
- 了解 MCP 与 OpenAPI、Function Calling、A2A 等协议的区别和互补关系
- 熟悉 MCP 生态系统——官方 Server、Registry、社区资源
课程亮点
故事驱动
以开发者小周的集成之痛为线索,从「每次都要重写适配器」到「一次开发,所有 AI 可用」的完整历程
双语言实战
Python + TypeScript 双轨并行,Server 和 Client 都有完整可运行的代码示例
协议对比
不只是学 MCP,更理解它和 OpenAPI、Function Calling、A2A 等协议的关系——何时用 MCP,何时不用
安全优先
OAuth 2.1 授权流程、安全威胁模型、Tool annotations 的不可信性——每个实战都带安全意识
课程结构
| 阶段 | 主题 | 核心问题 |
|---|---|---|
| 第一阶段 | 为什么需要 MCP | 工具集成到底有多痛?MCP 是怎么来的? |
| 第二阶段 | MCP 基础 | MCP 内部是怎么运转的?三大原语各管什么? |
| 第三阶段 | 动手实战 | 怎么开发 MCP Server 和 Client?怎么调试? |
| 第四阶段 | 进阶能力 | 安全怎么保证?Server 能反过来请求 Client 吗? |
| 第五阶段 | 协议对比与生态 | MCP 和其他协议有什么区别?生态里有什么? |
| 第六阶段 | 练习与巩固 | 动手设计、动手开发、动手排查 |
目录
第一阶段:为什么需要 MCP
第二阶段:MCP 基础
第三阶段:动手实战
- 3.1 第一个 MCP Server——Python/TypeScript 快速上手
- 3.2 第一个 MCP Client——连接 Server 调用工具
- 3.3 调试利器——MCP Inspector 实战
第四阶段:进阶能力
第五阶段:协议对比与生态
- 5.1 协议大比拼——MCP vs OpenAPI vs Function Calling vs A2A
- 5.2 设计模式与反模式
- 5.3 MCP 生态全景——官方 Server、Registry、客户端集成
第六阶段:练习与巩固
学习建议
- 先理解协议:前两个阶段偏概念,重点理解「为什么这样设计」而非「怎么写代码」
- 跟着小周走:故事场景来自真实开发痛点,想想你自己项目中遇到过的集成难题
- 动手写代码:第三阶段是核心,务必在本地跑通 Server 和 Client 示例
- 安全意识贯穿始终:MCP 涉及 AI 访问外部系统,安全考量贯穿整个课程
- 对照你的工具:课程提及多款 AI 工具的 MCP 配置方式,对照你正在用的那个来实践
按角色学习路线
| 你的角色 | 推荐路线 |
|---|---|
| 前端开发者 | Stage 1-2(理解)→ Stage 3 TypeScript 版(实战)→ Stage 5(对比) |
| 后端开发者 | Stage 1-2(理解)→ Stage 3 Python 版(实战)→ Stage 4(安全部署) |
| 技术决策者 | Stage 1(动机)→ Stage 2(架构)→ 1.3 决策树 → Stage 5(选型) |
速查卡片
三大原语:
| 原语 | 类比 | 控制方 | 一句话 |
|---|---|---|---|
| Resources | GET 请求 | 应用(Host) | 暴露数据,Host 决定何时读 |
| Prompts | 函数定义 | 用户 | 提示词模板,用户选择用哪个 |
| Tools | POST 请求 | 模型(LLM) | 可执行动作,AI 决定何时调用 |
两种传输:
| 传输 | 场景 | 消息格式 | 安全 |
|---|---|---|---|
| stdio | 本地 | stdin/stdout | 最安全,网络不可达 |
| Streamable HTTP | 远程 | HTTP POST + SSE | 需 TLS + OAuth 2.1 |
四种 JSON-RPC 消息:
| 类型 | 有 id? | 期待响应? |
|---|---|---|
| Request | 有 | 是 |
| Response | 有(匹配请求) | — |
| Notification | 无 | 否 |
| Error | 有(匹配请求) | — |
版本特性速查:
| 功能 | v1 | v2 | v3 | v4 |
|---|---|---|---|---|
| stdio 传输 | ✅ | ✅ | ✅ | ✅ |
| Streamable HTTP | ❌ | ✅ | ✅ | ✅ |
| Tools / Resources / Prompts | ✅ | ✅ | ✅ | ✅ |
| Elicitation | ❌ | ✅ | ✅ | ✅ |
| Completions | ❌ | ✅ | ✅ | ✅ |
| Tool Annotations | ❌ | ❌ | ✅ | ✅ |
| OAuth 2.1 | ❌ | ❌ | ❌ | ✅ |
常用配置模板:
json
// claude_desktop_config.json(本地 stdio)
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["server.py 的完整路径"],
"env": { "API_KEY": "xxx" }
}
}
}json
// claude_desktop_config.json(远程 HTTP)
{
"mcpServers": {
"remote-server": {
"url": "https://my-server.example.com/mcp"
}
}
}