跳到主要内容

MCP概述

1.什么是MCP?​

MCP (Model Context Protocol) 是一个开放协议,它使 LLM 应用与外部数据源和工具之间的无缝集成成为可能。无论你是构建 AI 驱动的 IDE、改善 chat 交互,还是构建自定义的 AI 工作流,MCP 提供了一种标准化的方式,将 LLM 与它们所需的上下文连接起来。具体技术架构如下:

image-20250402162427544

2.MCP的通用架构是什么?​

MCP 的核心是一个 client-server 架构,host 应用程序可以连接到多个服务器:

image-20250402150043197
  • MCP Hosts: 像 Claude Desktop、IDEs 或 AI 工具这样的程序,它们希望通过 MCP 访问资源;
  • MCP Clients: 维护与服务器 1:1 连接的协议客户端;
  • MCP Servers: 轻量级程序,通过标准化的 Model Context Protocol 暴露特定功能;
  • Local Resources: 你的计算机资源(数据库、文件、服务),MCP 服务器可以安全地访问这些资源;
  • Remote Resources: 通过互联网可用的资源(例如,通过 APIs),MCP 服务器可以连接到这些资源;

3.MCP的工作原理是什么?​

1)先介绍一个示例:

image-20250402151653405
  • Claude Desktop 作为我们的 MCP 客户端;
  • 一个 SQLite MCP 服务器提供安全的数据库访问;
  • 你的本地 SQLite 数据库存储实际数据;

2)应用流程

image-20250402162302626

3)交互流程:

image-20250402151822125
  • 服务器发现:Claude Desktop 在启动时连接到你配置的 MCP 服务器;
  • 协议握手:当你询问数据时,Claude Desktop:
    • 确定哪个 MCP 服务器可以提供帮助(在本例中是 sqlite);
    • 通过协议协商能力;
    • 从 MCP 服务器请求数据或操作;

4)实现效果:

  • MCP 服务器仅暴露特定、受控的功能;
  • MCP 服务器在你的机器上本地运行,它们访问的资源不会暴露在互联网上;
  • Claude Desktop 需要用户确认以进行敏感操作;

4.MCP传输机制是什么?​

(一)传输层处理 clients 和 servers 之间的实际通信。MCP 支持多种传输机制:

1)Stdio

  • 使用标准输入/输出进行通信
  • 适用于本地进程

2)通过 HTTP 的 SSE

  • 使用服务器发送事件进行服务器到客户端的消息传递
  • 使用 HTTP POST 进行客户端到服务器的消息传递

所有传输都使用 JSON-RPC 2.0 进行消息交换。

(二) 传输的连接生命周期

1)初始化

image-20250402160541274
  • Client 发送包含协议版本和能力的 initialize 请求;
  • Server 以其协议版本和能力响应;
  • Client 发送 initialized 通知作为确认;
  • 开始正常消息交换;

2)消息交换

​ 初始化后,支持以下模式:

  • 请求-响应:客户端或服务器发送请求,另一方响应
  • 通知:任一方发送单向消息

3)终止

任一方可以终止连接:

  • 通过 close() 进行干净关闭
  • 传输断开
  • 错误条件

5.MCP客户端是什么?​

MCP 客户端特指实现 MCP 协议标准的中间件,其本质是:

  • 能力扩展层:弥补大模型原生能力局限(如无法直接访问本地文件、数据库);
  • 协议翻译器:将自然语言指令转换为机器可执行的 API 调用;
  • 安全沙盒:隔离模型与敏感资源,实现细粒度权限控制;

6.MCP客户端有哪些?​

不同的客户端可能支持不同的 MCP 功能子集,从而允许与 MCP 服务器的不同级别的集成。具体如下:

image-20250402154641787
  • 资源:客户端可以访问和读取的数据对象(类似于文件或API响应)。
  • 工具:LLM可以触发的可执行函数(需要用户权限)。
  • 提示:现成的文本模板,旨在帮助用户完成特定任务。

6.1.Claude Desktop​

Claude Desktop 为 MCP 提供全面支持,实现与本地工具和数据源的深度集成。

主要特性:

  • 完全支持 resources,允许附加本地文件和数据
  • 支持 prompt 模板
  • Tool 集成以执行命令和脚本
  • 本地 server 连接以增强隐私和安全性

6.2.Zed​

Zed 是一个高性能代码编辑器,内置 MCP 支持,专注于 prompt 模板和 tool 集成。

主要特性:

  • 提示模板在编辑器中以 / 命令的形式出现
  • Tool 集成以增强编码工作流
  • 与编辑器功能和工作区上下文的紧密集成
  • 不支持 MCP resources

6.3.Sourcegraph Cody​

Cody 是 Sourcegraph 的 AI 编码助手,通过 OpenCTX 实现 MCP。

主要特性:

  • 支持 MCP resources
  • 与 Sourcegraph 的 code intelligence 集成
  • 使用 OpenCTX 作为抽象层
  • 计划在未来支持更多 MCP 特性

6.4.Firebase Genkit​

Genkit 是 Firebase 的 SDK,用于在应用中构建和集成 GenAI 功能。genkitx-mcp 插件使得可以将 MCP 服务器作为 client 使用,或从 Genkit tools 和 prompts 创建 MCP server。

主要特性:

  • 客户端支持 tools 和 prompts(部分支持 resources)
  • Rich discovery with support in Genkit’s Dev UI playground
  • 与 Genkit 的现有 tools 和 prompts 无缝互操作
  • 适用于来自顶级提供商的各种 GenAI 模型

6.5.Continue​

Continue 是一个开源 AI 代码助手,支持所有 MCP 功能。

主要特性

  • 输入 ”@” 调用 MCP resources
  • Prompt 模板以 / 命令的形式调用
  • 在聊天中直接使用内置工具和 MCP 工具
  • 支持 VS Code 和 JetBrains IDE,与任何 LLM 一起使用

6.6.GenAIScript​

使用 GenAIScript(在 JavaScript 中)以编程方式为 LLM 组装 prompts。在 JavaScript 中编排 LLM、tools 和 resources。

主要特性:

  • JavaScript 工具箱用于处理提示
  • 便于使用和提高生产力的抽象层
  • 无缝集成 Visual Studio Code

7.自定义MCP客户端技术栈有哪些?​

  • Python:使用 FastMCP 框架开发轻量级客户端。
  • TypeScript:基于 MCP SDK 构建 Node.js 服务。
  • Java:通过 Spring AI 实现企业级服务编排。

8.MCP Server是什么?​

MCP Server(模型上下文协议服务器)是实现MCP(Model Context Protocol)\标准的核心组件,其本质是\大模型与外部资源交互的桥梁。它通过标准化接口协议,使 AI 模型(如 Claude、GPT-4)能够安全、可控地访问本地文件、数据库、API 等外部资源,解决传统模型 “数据孤岛” 问题。

9.MCP目前有哪些竞品?​

1)开源产品

产品定位核心功能适用场景
MCP Guardian开源管理工具实时消息审批、多服务器配置管理。企业级安全管控。
DifyLLM 应用平台支持 MCP 插件市场,快速集成 CRM、ERP 等系统。中小型企业 AI 应用开发。
5ire跨平台客户端兼容 GPT-4、Gemini,支持 RAG 本地知识库。个人开发者、轻量级场景。
Milvus MCP Server向量数据库集成支持混合检索(向量 + 全文)、动态索引创建。智能搜索与推荐系统。
Nacos+Higress云原生集成方案存量 API 协议转换、服务发现与健康检查。企业级微服务架构。

2)商用产品

  • 百度智能云千帆:国内首家兼容 MCP 的云平台,提供百度地图、AI 搜索等标准化组件。
  • AWS SageMaker:云原生集成,支持 MCP 与 S3、Redshift 等服务对接。
  • 宝兰德 MCP:信创环境下的中间件管理,支持金融级安全。
  • Supergateway:远程调试工具,支持 SSE/WS 与 stdio 协议转换。

10.MCP适配哪些资源?​

10.1.数据库​

  • **关系型数据库:**MySQL、PostgreSQL、Oracle、SQL Server;
  • **非关系型数据库:**MongoDB、Redis、Elasticsearch、Cassandra;
  • **国产化数据库:**达梦数据库(DM)、人大金仓数据库(KingbaseES)、神通数据库(OSCAR)、南大通用数据库(GBase)、神舟通用数据库(OscarLite)

10.2.文件​

  • 文本文件:如 TXT、CSV 等常见文本格式。适配器能帮助大模型读取和处理文本文件中的数据,例如在数据分析中读取 CSV 格式的数据集。
  • 二进制文件:像 PDF、DOCX、XLSX 等文件类型。适配器可以实现大模型对这些文件内容的提取和分析,如从 PDF 文件中提取关键信息进行知识图谱构建。
  • 图像文件:如 JPEG、PNG 等。大模型可通过适配器对图像文件进行处理和分析,如图像识别、分类等任务。
  • 视频文件:例如 MP4、AVI 等。适配器能让大模型对视频文件进行内容分析,如视频中的物体识别、行为分析等。

10.3.接口​

  • RESTful API:广泛应用于 Web 服务的接口类型。资源适配器可使大模型调用各种 RESTful API,获取外部服务的数据,如调用天气 API 获取实时天气信息。
  • SOAP API:传统的 Web 服务接口,常用于企业级应用集成。适配器能让大模型与 SOAP API 进行交互,实现系统间的数据共享和业务协同,如企业内部不同业务系统之间的集成。
  • GraphQL API:新兴的 API 查询语言,提供更灵活的数据查询方式。大模型可以通过适配器利用 GraphQL API 获取所需的数据,提高数据获取的效率和准确性。

10.4.物联网​

  • MCP Server 的资源适配器通常支持物联网设备的数据接入。它可以适配各种物联网协议,如 MQTT、CoAP 等。通过适配器,大模型可以获取物联网设备(如传感器、智能电表、摄像头等)产生的数据,并进行分析和决策。例如,在智能家居场景中,大模型可以根据传感器数据自动调节室内温度和湿度。
  • 支持 TCP 和 UDP 协议。对于基于 TCP 的服务,适配器可以建立稳定的连接,确保数据的可靠传输。例如,大模型可以通过适配器与基于 TCP 的工业控制系统进行通信,实现对工业生产过程的监控和控制。对于基于 UDP 的服务,适配器可以处理 UDP 数据包,适用于对实时性要求较高的场景,如视频流传输、实时数据采集等。

11.MCP不适配哪些资源?​

  • **国产化数据库:**华为 GaussDB、阿里 OceanBase、腾讯 TencentDB、中兴 GoldenDB、巨杉数据库、星环 Transwarp 等;
  • **行业级专用数据库:**时序数据库、图数据库、向量数据库;
  • **专业文件格式与数据标准:**大数据文件格式(Parquet/ORC)、地理信息数据、NetCDF(气象数据)、HDF5(天文观测数据);
  • **新兴通信协议与架构:**gRPC/Protocol Buffers、WebSocket、Kafka(高吞吐量)、RabbitMQ(可靠消息传递);
  • **工业物联网与边缘计算:**工业自动化领域的标准协议,支持跨厂商设备通信;边缘计算设备;低功耗广域网(LPWAN);
  • **企业级系统与云服务:**ERP/CRM 系统、云原生服务、区块链接口;
  • **安全与特殊场景协议:**SCTP(流控制传输协议)、DTLS(数据报传输层安全)、特定行业的私有协议(如航空航天的 ARINC 429)、硬件设备通信(如医疗仪器的专有接口);

12.MCP Server 的认证授权体系有哪些?​

12.1.核心认证机制​

12.1.1. OAuth 2.0/OpenID Connect​

  • 技术实现:基于 Higress 网关的oauth2_proxy插件,支持 Authorization Code、Client Credentials 等模式。

  • 典型场景:第三方工具(如 Jira、Confluence)通过 OAuth2.0 访问 MCP Server 的 API 资源。

  • 配置示例

    # Higress MCP配置文件
    plugins:
    - type: oauth2
    config:
    provider: keycloak
    client_id: mcp-client
    client_secret: ${MCP_OAUTH_SECRET}
    redirect_uri: https://mcp.example.com/callback

12.1.2. JWT 令牌验证​

  • 技术实现:通过 Higress 的jwt_authn插件解析 JSON Web Tokens。

  • 典型场景:跨服务调用时传递身份信息,如 MCP Server 与数据库适配器之间的通信。

  • 配置示例

    # Higress MCP配置文件
    plugins:
    - type: jwt
    config:
    issuer: https://auth.example.com
    audience: mcp-server
    public_key: |
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
    -----END PUBLIC KEY-----

12.1.3. LDAP/AD 集成​

  • 技术实现:通过 Higress 的ldap_authn插件与企业目录服务对接。

  • 典型场景:金融行业使用 AD 域账户登录 MCP Server 控制台。

  • 配置示例

    # Higress MCP配置文件
    plugins:
    - type: ldap
    config:
    server_uri: ldaps://ad.example.com:636
    bind_dn: cn=admin,dc=example,dc=com
    bind_password: ${LDAP_ADMIN_PASSWORD}
    user_search_base: ou=Users,dc=example,dc=com
    user_filter: (sAMAccountName=%s)

12.1.4. API 密钥认证​

  • 技术实现:基于 Higress 的api_key插件生成和验证 API 密钥。

  • 典型场景:IoT 设备通过预共享密钥访问 MCP Server 的实时数据接口。

  • 配置示例

    # Higress MCP配置文件
    plugins:
    - type: api_key
    config:
    key_name: X-MCP-Api-Key
    storage:
    type: redis
    host: redis.example.com
    port: 6379

12.2.细粒度授权模型​

12.2.1. 基于角色的访问控制(RBAC)​

  • 技术实现:通过 Kubernetes 的 RBAC 机制与 Higress 的rbac插件结合。

  • 典型场景:开发人员只能访问测试环境的 MCP Server,而运维人员拥有生产环境的完全权限。

  • 配置示例

    # Kubernetes RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
    name: developer-mcp-access
    namespace: mcp-dev
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: mcp-developer
    subjects:
    - kind: User
    name: developer@example.com
    apiGroup: rbac.authorization.k8s.io

12.2.2. 基于属性的访问控制(ABAC)​

  • 技术实现:通过 Higress 的opa插件集成 Open Policy Agent。

  • 典型场景:根据用户部门、IP 地址、设备类型动态调整权限。

  • 策略示例

    # MCP访问策略
    package mcp.authz

    default allow = false

    allow {
    input.user.department == "finance"
    input.resource.type == "database"
    input.resource.name == "dm-db"
    }

12.2.3. 动态权限控制​

  • 技术实现:通过 Nacos 配置中心动态下发权限策略。

  • 典型场景:在金融风控场景中,实时调整模型对敏感数据的访问权限。

  • 配置流程

    在 Nacos 控制台创建权限策略配置。

    Higress 定期从 Nacos 拉取策略更新。

    策略生效后,MCP Server 根据新规则进行权限校验。

12.3.安全增强机制​

12.3.1. 多因素认证(MFA)​

  • 技术实现:通过 Higress 的mfa插件集成短信、邮件或硬件令牌。

  • 典型场景:登录 MCP Server 控制台时,需同时输入密码和短信验证码。

  • 配置示例

    # Higress MCP配置文件
    plugins:
    - type: mfa
    config:
    providers:
    - type: sms
    sms_gateway: twilio
    account_sid: ${TWILIO_ACCOUNT_SID}
    auth_token: ${TWILIO_AUTH_TOKEN}

12.3.2. 审计与日志​

  • 技术实现:通过 Higress 的audit_log插件记录所有 API 调用。

  • 典型场景:金融行业合规性审计,需保留至少 6 个月的操作日志。

  • 日志格式

    {
    "timestamp": "2025-04-02T10:00:00Z",
    "user": "admin@example.com",
    "action": "query",
    "resource": "dm-db",
    "status": "success",
    "duration": "500ms"
    }

12.3.3. TLS/SSL 加密​

  • 技术实现:通过 Higress 的ssl插件配置证书和加密套件。

  • 典型场景:生产环境中所有通信均需通过 HTTPS 进行。

  • 配置示例

    # Higress MCP配置文件
    ssl:
    certificate:
    crt: /etc/ssl/certs/mcp.example.com.crt
    key: /etc/ssl/private/mcp.example.com.key
    cipher_suites:
    - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

13.MCP部署方式是什么?​

13.1. 部署方式​

  • 单机部署:适合小规模场景,直接在单台服务器上安装运行。
  • 容器化部署:支持 Docker、Kubernetes 等容器化平台,提升部署灵活性和可移植性。
  • 混合部署:根据业务需求混合使用物理机、虚拟机和容器环境。

13.2. 集群分布式部署​

  • 支持分布式集群:MCP Server 支持水平扩展的分布式集群部署,通过负载均衡(如 Nginx、HAProxy)和节点间通信机制实现高并发处理和故障冗余。
  • 高可用性(HA):可通过主备模式或多活架构保障服务连续性,支持自动故障转移。
  • 配置管理:集群节点间通过统一配置中心(如 Consul、ZooKeeper)实现配置同步。

13.3. 国产化适配​

  • 支持在国产化环境(如麒麟 OS、统信 UOS)中部署集群,兼容国产化服务器硬件。

14.为什么要用MCP,而不是传统的API?​

打个比方: API就像不同的门,每扇门都需要自己的钥匙和特定的规则。

image-20250403093008893

14.1.传统 API 的痛点:每扇门都有不同的钥匙​

  • 碎片化集成

    • 每个 API 需要独立处理认证方式(如 OAuth、API 密钥)、参数格式(JSON/XML)、错误码(HTTP 4xx/5xx)和数据结构。
    • 示例:调用天气 API 需要解析温度单位(℃/℉),而调用地图 API 需处理经纬度精度,代码重复率高。
  • 硬编码依赖

    • 开发者需手动编写代码绑定工具接口,例如:

      # 传统API调用示例  
      def get_weather_api(lat, lon):
      headers = {"Authorization": "Bearer API_KEY"}
      response = requests.get(f"https://api.weather.com/{lat},{lon}", headers=headers)
      return response.json()["temp"]
    • 若工具升级(如 API 路径变更),需全局修改代码。

  • 扩展成本高

    • 新增工具需重新学习文档、适配格式,例如同时集成 Gmail 和 Slack 需分别处理邮件和消息的发送逻辑。

14.2.MCP 的核心优势:统一协议,动态适配​

  • 统一接口规范

    • MCP 定义了标准化的请求 / 响应格式(如MCPRequest和MCPResponse),开发者只需按协议编写一次代码,即可适配多模型和工具。示例:

      # MCP协议示例(伪代码)  
      def get_weather_mcp(lat, lon):
      return MCPResponse(data={"temperature": 25.5, "unit": "℃"})
    • 模型自动解析统一格式,无需关心底层工具差异。

  • 动态发现与扩展

    • 工具自动注册:MCP 服务器(如天气服务)可通过协议自动向模型暴露能力,模型无需预先配置接口地址。

    • 零配置集成:开发者只需启动 MCP 服务器,模型即可识别并调用工具,例如:

      # 模型自动调用MCP工具(伪代码)  
      response = model.query("今天北京的天气如何?")
      # 模型自动路由请求至已注册的天气MCP服务器
  • 双向通信与主动触发

    • 实时数据拉取:模型可主动查询工具数据(如 “查询日历事件”)。
    • 操作触发:工具可反向调用模型能力(如邮件服务触发模型生成回复内容)。传统 API 仅支持单向请求(客户端→服务器),而 MCP 实现了全双工通信。

14.3.行业实践与效率对比​

维度传统 APIMCP
开发成本需为每个工具编写独立代码一次开发适配所有 MCP 兼容工具
维护成本工具升级需修改所有调用代码协议统一,工具更新不影响上层逻辑
扩展灵活性新增工具需重新设计接口动态加载 MCP 服务器,无需修改模型代码
跨平台适配依赖特定语言或框架(如 REST API)支持多语言(Python/Java/JS)

案例:某企业需同时集成 ERP、CRM 和邮件系统。使用传统 API 需编写 3 套代码,而通过 MCP 只需开发 3 个 MCP 服务器,模型自动调用,开发周期缩短 70%。

14.4.总结:为什么选择 MCP?​

  • 降低复杂度:将 “适配多个 API” 转化为 “实现一个协议”。
  • 提升复用性:工具代码可独立维护,模型逻辑与工具解耦。
  • 拥抱生态:随着 Anthropic、OpenAI、百度等厂商的支持,MCP 已成为连接大模型与外部世界的 “通用钥匙”。

14.5.什么时候选择传统API或者MCP更合适?​

如果你的应用场景需要精准且严格受控的交互方式,那么传统API可能更合适。比如:

  • 需要细粒度控制、功能严格限制;
  • 更偏好紧耦合以提升性能;
  • 希望最大化交互的可预测性。

MCP提供广泛而灵活的动态能力,更适合需要上下文理解的场景,但不一定适用于严格受控的场合。

15.MCP有哪些应用场景?​

1)旅行规划助手

  • 使用 API 时: 分别为谷歌日历、邮件、机票预订写代码,繁琐而复杂。
  • 使用 MCP 时: AI助手直接通过MCP统一协议,查看 日历 、 订机票 、 发邮件确认 ,无须单独整合每个工具。

2)智能IDE(代码编辑器)

  • 使用 API 时: 手动连接文件系统、版本管理、包管理和文档,耗时费力。
  • 使用 MCP 时: IDE 通过 MCP 一次连接所有功能,带来更丰富的上下文支持,更强大的智能建议。

3)复杂的数据分析

  • 使用 API 时: 人工管理与每个数据库、数据可视化工具的连接。
  • 使用 MCP 时: AI自动发现并连接多个数据库和可视化工具,通过统一的MCP接口轻松完成分析任务。

16.使用MCP有哪些好处?​

  • 简化开发: 一次整合,多次复用,不再重复开发。
  • 灵活性强: 轻松切换AI模型或工具,无需复杂的重新配置。
  • 实时互动: 长连接保证数据实时更新。
  • 安全可靠: 内置标准化安全和权限控制。
  • 扩展性强: AI系统扩展时,只需连接新的MCP服务器。

17.MCP与ESB之间的区别是什么?​

维度MCPESB
协议与适配方式- 标准化协议(MCPRequest/MCPResponse) - 工具动态注册,模型自动发现 - 示例:天气工具实现 MCP 协议后,模型无需硬编码接口地址- 依赖传统 API(SOAP/REST)或消息队列(JMS/Kafka) - 需手动配置接口参数和路由规则 - 示例:ESB 需为每个系统编写 XML→JSON 转换脚本
通信方向- 双向通信: - 模型主动查询工具(如 “查询邮件”) - 工具反向触发模型能力(如邮件服务调用模型生成回复内容)- 单向请求: - 客户端发起请求,服务端返回响应(如 HTTP 请求 - 响应模式)
开发与维护成本- 开发成本低:工具只需实现 MCP 协议,模型逻辑与工具解耦 -维护成本低:工具升级不影响模型代码(如 API 路径变更由 MCP 服务器内部处理)- 开发成本高:需为每个系统编写定制化集成逻辑(数据映射、异常处理) - 维护成本高:系统升级可能导致集成逻辑失效(如字段名称变更)

18.MCP与ESB之间如何结合?​

  • 场景:企业内部系统通过 ESB 集成,同时需要 AI 模型调用这些系统的数据。
  • 方案:
    • ESB 负责传统系统集成(如 ERP、CRM 数据整合)。
    • MCP 作为AI 入口,将 ESB 暴露的 API 封装为 MCP 协议,供模型调用。
image-20250403100038513

19.MCP与ESB技术上如何对接?​

19.1.技术实现​

19.1.1.协议转换层​

  • MCP → ESB 方向
    • 将 MCP 的标准化请求(如MCPRequest)转换为 ESB 支持的协议(REST/SOAP/ 消息队列)。
    • 示例:将 MCP 的{"action": "query_weather", "params": {"city": "北京"}}转换为 REST 的GET /weather?city=北京。
  • ESB → MCP 方向
    • 将 ESB 的请求(如 HTTP POST)封装为 MCP 协议格式,并通过 MCP 客户端动态路由到目标工具。
    • 示例:ESB 收到用户查询天气请求后,调用 MCP 适配器生成MCPRequest并发送至天气工具。

19.1.2.双向通信适配​

  • MCP 主动调用 ESB
    • MCP 通过适配器触发 ESB 的接口(如调用 ESB 的订单查询服务)。
    • 需在 ESB 中配置对应的路由规则,将 MCP 请求映射到具体服务。
  • ESB 反向触发 MCP
    • ESB 通过适配器监听 MCP 的响应通道(如 Kafka 队列),接收 MCP 工具返回的结果。
    • 示例:ESB 处理完订单后,通过适配器通知 MCP 生成邮件通知。

19.1.3.动态注册与静态配置结合​

  • MCP 服务注册到 ESB
    • MCP 工具动态注册时,适配器将服务元数据同步到 ESB 的服务目录(如 UDDI 或 ESB 内置注册中心)。
    • ESB 管理员根据元数据手动配置路由规则,绑定 MCP 服务到 ESB 接口。
  • ESB 服务暴露给 MCP
    • ESB 的服务通过适配器封装为 MCP 协议,MCP 模型可动态发现并调用。
    • 示例:ESB 的物流查询 API 通过适配器注册为 MCP 的query_logistics服务。

19.2.场景示例​

场景描述:用户通过 ESB 发起订单查询请求,ESB 需调用 MCP 的 AI 模型生成订单分析报告。

image-20250403101104556

20.MCP存在哪些问题以及对应的改进建议?​

20.1.技术复杂性​

20.1.1.具体问题​

1)协议适配成本高

  • 传统 API 改造:现有 REST/SOAP API 需重新封装为 MCP 协议格式,涉及:
    • 数据格式转换:如将 XML 响应转为MCPResponse的 JSON 结构。
    • 认证方式重构:将 OAuth 2.0 或 API 密钥验证逻辑嵌入 MCP 客户端。
  • 示例:某金融系统使用自定义二进制协议,需开发专用适配器将请求转换为 MCP 的{"action": "query_balance", "params": {"user_id": "xxx"}}。

2)动态路由实现难度大

  • 服务发现延迟:工具注册到 MCP 服务目录后,模型可能无法实时感知更新,导致调用失败。
  • 路由策略单一:当前 MCP 多基于静态配置(如权重轮询),无法适应动态负载变化。

20.1.2.改进建议​

  1. 标准化工具链
    • 开发协议转换 SDK:支持主流协议(REST/SOAP/GraphQL)一键转换为 MCP 格式。
    • 提供可视化配置界面:通过拖拽方式映射字段(如将 REST 的response.data.temp映射到 MCP 的data.temperature)。
    • 示例:使用 Postman 插件自动生成 MCP 适配器代码。
  2. 智能路由系统
    • 引入基于机器学习的动态路由:根据历史响应时间、错误率等指标自动选择最优工具实例。
    • 实现服务目录增量更新:工具通过 gRPC 流式传输元数据变更,确保模型实时感知。

20.2.性能与扩展性​

20.2.1.具体问题​

1)中间件延迟

  • 跨网络调用:工具部署在云端,模型在本地时,MCP 转发增加 20-50ms 延迟。
  • 序列化开销:每次请求需序列化 / 反序列化 MCP 协议,影响吞吐量。

2)高并发瓶颈

  • 集中式架构:单节点 MCP 服务器在 QPS 超过 10 万时性能下降,需水平扩展。

20.2.2.改进建议​

1)性能优化

  • 零拷贝传输:使用 Protobuf 替代 JSON 作为 MCP 协议的序列化格式,减少解析时间。
  • 本地缓存:对高频调用的工具结果(如天气查询)缓存至模型侧,减少 MCP 转发。

2)分布式扩展

  • 多级路由架构:

    image-20250403102923949
  • 负载均衡:通过 Consul 或 Kubernetes 实现 MCP 节点的自动扩缩容。

20.3.兼容性与生态​

20.3.1.具体问题​

1)传统系统集成困难

  • ESB/iPaaS 适配:企业现有 ESB 需通过适配器才能与 MCP 通信,如将 ESB 的 JMS 消息转换为 MCP 协议。

2)工具支持不足

  • 小众工具缺失:如某些行业专用数据库(如 Cassandra)缺乏官方 MCP 驱动。

20.3.2.改进建议​

1)跨平台适配器

  • 开发通用协议网关,支持 MCP 与 ESB/iPaaS 的双向转换:

    image-20250403103122720
  • 示例:使用 Spring Cloud Stream 实现 MCP 与 Kafka 的集成。

2)生态共建

  • 云厂商合作:推动 AWS Lambda、阿里云函数计算等 Serverless 平台原生支持 MCP 协议。
  • 开源社区激励:通过 GitHub 悬赏机制鼓励开发者为小众工具贡献 MCP 适配器。

20.4.安全性​

20.4.1.具体问题​

1)动态注册风险

  • 恶意工具注入:攻击者伪装成合法工具注册接口,窃取模型输出数据。
  • 权限逃逸:低权限工具通过 MCP 调用高权限服务(如数据库操作)。

2)数据隐私泄露

  • 明文传输:默认未加密的 MCP 请求可能被中间人攻击拦截。

20.4.2.改进建议​

1)增强认证与授权

  • 双向 TLS+OAuth 2.0:工具注册时需提供证书和授权令牌,模型调用时验证签名。
  • 细粒度权限控制:通过 ABAC(属性基访问控制)限制工具操作范围,如仅允许读取非敏感数据。

2)数据加密

  • 传输层加密:强制使用 TLS 1.3 加密所有 MCP 通信。
  • 内容混淆:对敏感字段(如信用卡号)在 MCP 协议中进行掩码处理。

20.5.维护成本​

20.5.1.具体问题​

1)协议版本兼容性

  • 字段变更冲突:MCP 协议升级新增必填字段时,旧版本工具无法兼容。

2)依赖管理复杂

  • 工具与模型解耦过度:工具版本更新可能导致模型侧无感知的错误。

20.5.2.改进建议​

1)语义化版本控制

  • 遵循 SemVer 规范,协议版本变更时明确兼容性规则:
    • MAJOR:不兼容变更(如删除必填字段),需强制工具升级。
    • MINOR:新增功能(如可选字段),旧工具仍可工作。

2)依赖监控与回滚

  • 依赖图谱可视化:通过工具(如 Snyk)分析模型与工具的版本依赖关系。
  • 蓝绿部署:在 MCP 中支持新旧协议版本共存,逐步迁移工具。

20.6.场景适用性​

20.6.1.具体问题​

1)实时性要求高的场景

  • 高频交易系统:MCP 的动态路由和协议转换无法满足微秒级延迟要求。

2)复杂流程编排

  • 多工具协同:需结合 BPM 系统(如 Camunda)才能完成跨工具工作流。

20.6.2.改进建议​

1)分层架构设计

  • 实时层:使用低延迟框架(如 Apache Flink)处理高频请求,绕过 MCP。
  • 智能层:通过 MCP 调用 AI 模型进行决策,再由实时层执行具体操作。

2)流程编排增强

  • 可视化工作流引擎:在 MCP 中集成 LangFlow 或 Node-RED,支持拖拽式工具链编排。
  • 示例:通过 MCP 将 “查询数据库→调用翻译模型→发送邮件” 三步操作封装为原子任务。