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 完整请求-响应流程

  1. 用户发送查询
  2. MCP 客户端将查询连同可用工具列表发送给 Claude
  3. Claude 决定调用哪个工具,返回工具调用请求
  4. MCP 客户端将请求路由到对应的 MCP 服务器
  5. MCP 服务器执行实际操作,返回结果
  6. 结果发回 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