3.7.1. mcp_servers#

3.7.1.1. 什么是MCP#

**MCP**(Model Context Protocol, 模型上下文协议)是由Anthropic提出并于2024年11月开源 的一种通信协议,旨在解决大型语言模型(LLM)与外部数据源及工具之间无缝集成的需求。

它通过标准花AI系统与数据源的交互方式,帮助模型获取更丰富的上下文的信息,从而生成更 准确、更相关的响应。

主要功能

  1. 上下文共享: 应用程序可以通过MCP向模型提供所需的上下文信息(如文件内容、数据库 记录等), 增强模型的理解能力。

  2. 工具暴露: MCP允许应用程序将功能(如文件读写、API调用)暴露给模型,模型可以调用 这些工具完成复杂任务。

  3. 可组合的工作流: 开发者可以利用MCP集成多个服务和组件,构建灵活、可扩展的AI 工作流。

  4. 安全性: 通过本地服务器运行,MCP避免将敏感数据上传至第三方平台,确保数据隐私。

3.7.1.2. MCP架构#

MCP采用客户端-服务器架构:

  1. MCP客户端(client): 通常是AI应用程序(如Clande Desktop或其他LLM工具),负责发起 请求并与服务器通信。

  2. MCP服务器(server): 轻量级程序,负责暴露特定的数据源或工具功能,并通过标准化 协议。

通信格式: 基于JSON-RPC 2.0, 支持请求、响应和通知三种消息类型,确保通信的标准化 和移植性。

3.7.1.2.1. MCP Servers主要功能#

MCP Servers作为一个轻量级的本地服务,旨在为客户端提供数据访问和功能执行的接口。

  1. 资源暴露(Resource Exposure)

    资源是服务器提供给客户端的数据实体,可以是文件、数据库记录、内存中的对象等。

    例如:

    1. 文件资源: file///home/user/report.txt

    2. 内存资源: memo://recent-insights

    3. 工具提供(Tool Provisoning)

    工具是服务器暴露的可执行功能,客户端可以通过这些工具完成特定任务。

    例如:

    1. 查询数据库: query_database(参数: SQL语句, 返回: 查询结果)

    2. 文件写入: write_file(参数: 文件路径、内容)

  2. 动态通知(Dynamic NOtification)

    当资源发生变化时,服务器可以通过通知机制(如 notificatoin消息)主动推送更新到客户端。

  3. 会话管理(Session Management)

    处理客户端的连接初始化、能力协商和会话关闭。

3.7.1.2.2. MCP Client#

MCP Client一般选用AI应用程序(如 Clande Desktop、cline或其他LLM工具), 负责发起请求 并与服务器通信。