8.4 MCP 协议与工具标准化

8.4.1 MCP 协议简介

Model Context Protocol(MCP)是 Anthropic 提出的开放标准协议,旨在标准化 AI 模型与外部工具、资源的交互方式。

MCP 解决的核心问题:

  • 缺乏统一的工具交互标准

  • 不同模型/应用的工具集成方式各异

  • 工具能力难以复用

8.4.2 MCP 架构

spinner

主要组件

  • MCP 客户端:集成到 AI 应用中,发起请求

  • MCP 服务端:提供工具和资源的接口

  • 传输层:支持多种传输方式(stdio、HTTP)

8.4.3 MCP 核心概念

MCP 协议定义了三种核心原语(Primitives),它们的数据结构遵循协议规范,格式是固定的。这种标准化使得不同实现之间能够互操作——任何符合规范的客户端都能调用任何符合规范的服务端。

工具(Tools)

可执行的函数,类似于函数调用。格式包含 name(工具名称)、description(描述)和 inputSchema(参数定义,遵循 JSON Schema 格式):

资源(Resources)

可读取的数据源,如文件、数据库、API 端点等。格式包含 uri(资源唯一标识符)、name(显示名称),以及可选的 mimeType(内容类型)和 description

提示模板(Prompts)

预定义的提示词模板,便于复用常见的交互模式。格式包含 name(模板名称)、description(描述),以及可选的 arguments(参数列表):

8.4.4 MCP 的优势

  1. 标准化:统一的协议减少集成成本

  2. 可组合:不同 MCP 服务可以组合使用

  3. 跨平台:同一服务可被不同客户端使用

  4. 生态系统:日益丰富的预构建服务

8.4.5 MCP 服务示例

文件系统服务

提供文件读写能力:

  • read_file:读取文件

  • write_file:写入文件

  • list_directory:列出目录

数据库服务

提供数据库访问:

  • query:执行查询

  • describe_schema:获取表结构

网页服务

提供网页访问:

  • fetch_url:获取网页内容

  • search:搜索网页

8.4.6 实现 MCP 服务

简单的 MCP 服务实现框架:

8.4.7 MCP 与上下文工程

MCP 影响上下文工程的多个方面:

工具定义管理

通过 MCP 服务发现机制动态获取可用工具。

资源访问

MCP 资源可以作为上下文的信息源。

上下文标准化

MCP 促进了上下文处理方式的标准化。

8.4.8 未来展望

MCP 协议正在快速发展:

  • 已获得主流 IDE (VS Code, Cursor) 和模型厂商(Claude, OpenAI, Google) 的原生支持

  • 拥有数千个预构建服务的庞大生态

  • 提供了完善的企业级安全和权限管控

  • 成为上下文工程中工具集成的行业标准

MCP 已经从一个有前景的协议成长为 AI 应用开发的基石。

8.4.9 实战案例:构建 GitHub MCP Server

以下是一个完整的 GitHub MCP Server 实现,展示如何同时提供 Tools、Resources 和 Prompts。

完整代码实现

配置和使用

1. 安装依赖

2. 在 Claude Desktop 中配置claude_desktop_config.json):

3. 使用示例

踩坑经验

  • Token 权限要最小化,只授予必需的 scope

  • 异步 HTTP 客户端比同步更适合 MCP Server

  • 复杂操作应拆分为多个小工具,而非一个大工具

Last updated