模型上下文协议(MCP)(MCP (Model Context Protocol))
一句话定义: 一种开放协议,用于规定 AI 应用如何连接外部工具与信息源。实际访问权限仍由宿主、服务器和配置决定。
科普速读
- 它是什么: MCP 为 AI 应用连接工具和数据定义了通用方式。
- 适合什么场景: 通过统一接口连接 AI 客户端与外部服务。
- 主要边界: 协议本身不能保证服务器安全,也不能授予工具调用权限。
概览
MCP 是一种开放协议,用于连接 AI 应用和外部工具、信息源。客户端和服务器通过宿主应用交换请求。AI 应用能访问什么,取决于配置和权限。
核心定义
标准定义
模型上下文协议(MCP)规定宿主应用、客户端连接和 MCP 服务器之间如何通信。服务器可以提供工具、资源或提示模板等能力。协议本身不会直接授予 AI 访问用户文件或系统的权限。
背景与发展
背景
在 MCP 出现前,应用通常需要为不同工具或数据源分别开发连接方式。MCP 为这些连接提供了共享协议。
发展
Anthropic 于 2024 年推出 MCP。此后协议持续演进。可选扩展和新功能需要客户端与服务器支持;不能假设所有实现都兼容。
工作机制(How It Works)
- 宿主应用启动或连接 MCP 客户端。
- 客户端连接服务器,并协商双方支持的能力。
- 服务器列出它已配置要提供的工具或资源。
- 宿主决定向模型提供哪些内容,以及是否需要用户批准工具调用。
建立连接并不意味着所有操作都安全。宿主和服务器仍要设置访问控制。
在软件测试与开发中的应用
- 查询测试报告:服务器可以提供查询测试运行或读取报告的工具。
- 读取仓库信息:服务器可以提供选定文件、问题记录或构建结果。
- 受控操作:服务器可以启动获准的工作流。涉及共享系统的改动应有审批和日志。
优势与局限
优势
- 复用集成方式:共享协议可以减少自定义连接代码。
- 发现服务器能力:客户端可以读取服务器提供的工具和资源列表。
局限与风险
- 实现不完全相同:不同客户端和服务器可能支持不同功能或协议版本。
- 权限风险:服务器可能暴露敏感数据或操作。应限制权限并检查工具行为。
- 数据不一定最新:数据时效取决于连接的数据源和服务器实现。
与相近术语对比
| 术语 | 主要作用 |
|---|---|
| MCP | 连接 AI 应用与工具、上下文来源 |
| 函数调用 | 让模型通过特定模型 API 请求调用工具 |
| REST API | 让软件与 Web 服务交换请求 |
MCP 可以承载工具交互,但不能代替服务器背后使用的 API。
实施建议(Best Practices)
- 先使用只读权限,确有需要时再增加写入权限。
- 检查服务器身份、可用工具和所需权限。
- 对有破坏性或会影响外部系统的操作要求确认。
- 记录工具调用,并测试失败处理。
- 依赖可选功能前,确认客户端和服务器都支持。
常见误区(Pitfalls)
- 把 MCP 当作安全边界:协议不会替宿主或服务器实施所有权限控制。
- 以为“一次编写,到处运行”:不同实现支持的功能和策略可能不同。
- 以为数据一定最新:连接的服务可能使用缓存,或延迟更新。
FAQ
MCP 如何用于软件测试?
团队可以连接一个提供测试报告查询工具的服务器。服务器应限制该工具能够访问的报告范围。
MCP 能保证工具调用安全吗?
不能。宿主和服务器需要控制访问、验证输入,并在需要时要求批准。启用前应了解实际操作。