MCP:模型上下文协议

MCP:模型上下文协议

定义

模型上下文协议(MCP) 是一种开放标准接口,使大型语言模型(LLM)能够安全、一致地访问外部数据源、工具和能力。它在 AI 应用与多种上下文提供者之间建立了标准化的通信层,相当于 AI 系统的“USB-C”。

关键组成部分

架构

MCP 遵循客户端-服务器架构:

  • MCP 主机:用户或 AI 系统进行交互的应用(如 Claude Desktop、IDE 插件)
  • MCP 客户端:主机应用中的组件,负责与服务器通信
  • MCP 服务器:通过标准化 MCP 接口,暴露特定功能(如文件访问、数据库连接、API 访问)的轻量级程序
  • 数据源:MCP 服务器可以安全访问的本地或远程信息仓库

核心原语

MCP 定义了三种构建协议的基础原语:

1. 资源

资源 代表 MCP 服务器向 LLM 提供的数据与内容。

  • 特性:由应用控制,通过唯一 URI 标识
  • 数据类型:文本(UTF-8 编码)或二进制(Base64 编码)
  • 发现方式:直接列举或通过模板动态请求资源
  • 操作:读取内容、接收更新

用例示例:MCP 服务器将日志文件以 file:///logs/app.log 作为资源对外暴露

2. 提示

提示 是服务器提供的预定义模板或工作流,用于引导 LLM 交互。

  • 特性:由用户触发,常以斜杠命令形式出现
  • 结构:唯一名称、描述、可选参数
  • 能力:可接收自定义参数、引入资源上下文、定义多步交互
  • 操作:通过列举发现,通过请求执行

用例示例:一个 git 提交信息生成器提示,接受代码变更作为输入

3. 工具

工具 暴露可由 LLM 调用(通常需用户批准)的可执行函数,用于执行操作。

  • 特性:由模型控制,需明确定义输入模式
  • 注解:标明行为提示(只读、破坏性、幂等、开放世界)
  • 安全特性:输入校验、访问控制、清晰的用户警告
  • 操作:通过列举发现,通过带参数调用执行

用例示例:一个计算器工具,对模型提供的输入执行数学运算

重要性与优势

对开发者

  • 标准化集成:无需为每个数据源单独编写代码即可连接 AI 应用
  • 安全最佳实践:内置安全暴露敏感信息的指导
  • 简化架构:清晰区分 AI 模型与其上下文来源

对用户与组织

  • 灵活性:更容易在不同 LLM 提供商或主机应用间切换
  • 互操作性:通过标准化接口减少厂商锁定
  • 增强能力:AI 系统可访问更丰富的信息与操作能力

实现示例

文件资源服务器

// 服务器将单个日志文件作为资源暴露
const server = new Server({ /* config */ }, { capabilities: { resources: {} } });

// 列出可用资源
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  return {
    resources: [
      {
        uri: "file:///logs/app.log",
        name: "Application Logs",
        mimeType: "text/plain"
      }
    ]
  };
});

// 提供资源内容
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
  if (request.params.uri === "file:///logs/app.log") {
    const logContents = await readLogFile();
    return {
      contents: [{
        uri: request.params.uri,
        mimeType: "text/plain",
        text: logContents
      }]
    };
  }
  throw new Error("Resource not found");
});

计算器工具服务器

const server = new Server({ /* config */ }, { capabilities: { tools: {} } });

// 列出可用工具
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [{
      name: "calculate_sum",
      description: "Add two numbers together",
      inputSchema: {
        type: "object",
        properties: {
          a: { type: "number", description: "First number" },
          b: { type: "number", description: "Second number" }
        },
        required: ["a", "b"]
      },
      annotations: {
        title: "Calculate Sum",
        readOnlyHint: true,
        openWorldHint: false
      }
    }]
  };
});

// 处理工具调用
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "calculate_sum") {
    try {
      const { a, b } = request.params.arguments;
      if (typeof a !== 'number' || typeof b !== 'number') {
         throw new Error("Invalid input: 'a' and 'b' must be numbers.");
      }
      const sum = a + b;
      return {
        content: [{ type: "text", text: String(sum) }]
      };
    } catch (error: any) {
      return {
        isError: true,
        content: [{ type: "text", text: `Error calculating sum: ${error.message}` }]
      };
    }
  }
  throw new Error("Tool not found");
});

相关概念

  • LLM 函数调用:模型上下文协议为 LLM 调用函数提供了标准化方案
  • AI 智能体:MCP 为基于智能体的 AI 系统访问工具和信息提供结构化方式
  • AI 插件:类似浏览器扩展,MCP 服务器可视作扩展 AI 能力的“插件”

未来方向

  • 企业级 AI 集成:连接企业知识库、工具和工作流
  • 多模态 AI:标准化访问文本以外的多样数据类型
  • 协作式 AI 系统:使多个 AI 助手通过共享协议协同工作

常见问题

什么是模型上下文协议(MCP)?

MCP 是一种开放标准接口,允许 LLM 安全、一致地访问外部数据源、工具和能力,为 AI 应用与上下文提供者之间创建了标准化的通信层。

MCP 的关键组成部分有哪些?

MCP 由主机、客户端、服务器和数据源组成。它使用核心原语——资源、提示和工具——实现 LLM 与外部系统之间灵活且安全的交互。

MCP 为开发者和组织带来哪些好处?

MCP 简化了 AI 集成、增强了安全性、减少了厂商锁定,并使开发者和组织能够无缝访问多样的信息和工具。

MCP 在实际应用中如何实现?

MCP 可通过服务器实现,这些服务器通过标准化接口暴露资源或工具(如日志文件访问、计算器工具),简化与 AI 模型的连接。

MCP 与 LLM 函数调用和 AI 插件有何关系?

MCP 标准化了 LLM 调用外部函数或工具的过程,类似于插件扩展浏览器或软件的能力。

试用 FlowHunt,打造您的专属 AI 解决方案

使用 FlowHunt,通过标准化集成、安全数据访问和灵活工具连接,开始构建强大的 AI 系统。

了解更多

什么是 MCP 服务器?Model Context Protocol 全面指南
什么是 MCP 服务器?Model Context Protocol 全面指南

什么是 MCP 服务器?Model Context Protocol 全面指南

了解 MCP(模型上下文协议)服务器是什么、如何工作,以及它们为何正在革新 AI 集成。探索 MCP 如何简化 AI 智能体与工具、数据源和 API 的连接。...

3 分钟阅读
AI Automation +3
MCP服务器开发指南
MCP服务器开发指南

MCP服务器开发指南

学习如何构建和部署模型上下文协议(MCP)服务器,将AI模型与外部工具和数据源连接起来。为初学者和高级开发者提供的分步指南。...

2 分钟阅读
AI Protocol +4