MCP 入门:模型上下文协议
本文为开源社区精选内容,由 Anthropic 原创。 文中链接将跳转到原始仓库,部分图片可能加载较慢。
查看原始来源MCP 入门:模型上下文协议
Anthropic 官方课程 | 免费 | 中级 | 预计学习时间:60 分钟
课程概述
本课程系统讲解模型上下文协议(Model Context Protocol, MCP),教你使用 Python SDK 从零构建 MCP 服务器和客户端。你将掌握 MCP 的三大核心原语——工具(Tools)、资源(Resources)和提示(Prompts),理解它们如何让 Claude 连接外部服务而无需编写复杂的集成代码。
模块一:MCP 架构概览
1.1 为什么需要 MCP
在 MCP 出现之前,每个 AI 应用都需要为每个外部服务编写独立的集成代码。MCP 提供了一个标准化协议,将工具定义和执行的负担从应用程序转移到专门的 MCP 服务器,实现"一次构建,处处使用"。
1.2 MCP 通信架构
MCP 采用传输无关(transport-agnostic)的通信系统:
- MCP 客户端:连接 Claude 或其他 LLM,发现和调用 MCP 服务器提供的能力
- MCP 服务器:封装外部服务的能力,暴露为工具/资源/提示
- 消息类型:请求-响应对(有 ID)和通知(无 ID,单向)
1.3 完整请求-响应流程
- 用户发送查询
- MCP 客户端将查询连同可用工具列表发送给 Claude
- Claude 决定调用哪个工具,返回工具调用请求
- MCP 客户端将请求路由到对应的 MCP 服务器
- MCP 服务器执行实际操作,返回结果
- 结果发回 Claude,Claude 生成最终回答
模块二:构建 MCP 服务器
2.1 Python SDK 快速上手
使用 Python SDK 构建 MCP 服务器:通过装饰器(decorator)定义工具,而不是手写 JSON Schema。SDK 自动处理参数类型推断、描述文档和请求路由。
2.2 定义工具(Tools)
工具是 MCP 的核心原语,代表 Claude 可以调用的操作。工具由模型控制——Claude 决定何时调用哪个工具。
- 使用
@server.tool()装饰器定义工具函数 - 参数类型通过 Python 类型注解自动推断
- 返回值作为工具调用结果传回 Claude
2.3 实践:文档管理服务器
构建一个文档管理 MCP 服务器,包含读取文档、编辑文档、搜索文档等工具。
2.4 使用 Inspector 调试
MCP 自带的 Server Inspector 是一个浏览器端调试工具,可以实时测试 MCP 服务器的各项功能,无需连接 Claude 即可验证工具、资源和提示的行为。
模块三:资源(Resources)
3.1 资源的概念
资源用于暴露只读数据,由应用程序控制(而非模型控制)。两种类型:
- 直接资源(Direct Resources):静态 URI,如
docs://readme - 模板资源(Resource Templates):参数化 URI,如
docs://{document_id}
3.2 资源 vs 工具
关键区别:工具是"执行动作"(可以修改状态),资源是"读取数据"(只读)。选择资源还是工具取决于操作是否有副作用。
模块四:提示(Prompts)
4.1 提示的概念
提示是预制的、高质量的指令模板,由用户控制。它们为常见工作流提供优化过的提示词:
- 代码审查提示
- 文档总结提示
- Bug 分析提示
4.2 三原语的控制模型
| 原语 | 控制方 | 用途 |
|---|---|---|
| Tools | 模型(Claude) | 执行操作 |
| Resources | 应用程序 | 暴露数据 |
| Prompts | 用户 | 预制指令 |
模块五:集成模式
5.1 自动补全
实现参数的自动补全功能,提升用户体验。
5.2 上下文注入
将 MCP 资源的内容注入到 AI 对话的上下文中,实现动态知识增强。
前置要求
- Python 编程基础
- 基本的 JSON 和 HTTP 请求-响应概念
本课程由 Anthropic 官方提供,灵阙学院提供中文导读与知识扩展。完整互动课程请访问 Anthropic Academy。
课后巩固
本文知识点配套的闪卡与测验,帮助巩固记忆