MCP:模型上下文协议

AI Large Language Models Open Standard Integration

定义

模型上下文协议(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服务器开发指南
MCP服务器开发指南

MCP服务器开发指南

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

2 分钟阅读
AI Protocol +4
什么是模型上下文协议(MCP)?代理型 AI 集成的关键
什么是模型上下文协议(MCP)?代理型 AI 集成的关键

什么是模型上下文协议(MCP)?代理型 AI 集成的关键

代理型 AI 正在通过模型上下文协议(MCP)重新定义工作流自动化,使 AI 代理能够与多样化资源进行可扩展、动态集成。了解 MCP 如何标准化上下文与工具访问,赋能强大的代理型 AI 应用。...

5 分钟阅读
AI Integration +4