Skip to main content
MCP(Model Context Protocol)是一套面向大模型的标准化工具协议,旨在以统一、安全、可扩展的方式向模型暴露外部能力(工具/数据/操作),从而让模型在对话中“按需调用”这些能力。

基础概念

什么是 MCP

  • 标准化协议:以统一的数据结构和交互流程对外暴露工具能力
  • 多传输形态:支持 HTTP(SSE)与 Stdio(本地进程)等通道
  • 可发现性:工具(Tools)与资源(Resources)可被模型自动发现与描述
  • 可控性:支持权限、速率、上下文隔离等治理手段

核心组件

  • MCP Server:实现工具能力的服务端,暴露 Tools/Resources 等能力
  • MCP Client:模型侧或中间层的客户端,用于连接 MCP Server 并发出 Tool 调用
  • Transport:传输通道,常见为 HTTP(SSE) 与 Stdio
  • Schema & Capabilities:能力声明、参数/响应模式、错误约定

深度解析:三种MCP通信协议的技术实现

为了满足不同场景的需求,LangChat Pro现在明确支持三种MCP通信协议,每种协议都有其独特的技术优势和适用场景。

1. HTTP协议:兼容SSE与Streamable的智能适配

随着MCP协议的演进,官方SDK在新版本中已经舍弃了旧版本的HTTP SSE协议,转而采用全新的HTTP Streamable协议。

技术对比:SSE vs Streamable

HTTP SSE (Server-Sent Events) 是早期MCP实现中使用的协议,它基于HTTP的单向通信机制,服务器可以向客户端推送数据流。然而,SSE协议存在以下局限性:
  • 仅支持服务器向客户端的单向通信
  • 连接建立后无法动态调整参数
  • 对于复杂的双向交互支持有限
HTTP Streamable 是MCP官方推荐的新一代协议,具有以下优势:
  • 支持真正的双向通信,客户端和服务器可以互相发送消息
  • 具有更好的流控制和错误处理机制
  • 支持连接复用,提高资源利用率
  • 提供更灵活的会话管理能力

执行流程(高层)


在LangChat Pro中使用HTTP协议

LangChat Pro MCP应用市场截图 iShot_2025-11-23_18.13.35 创建阿里云百炼平台MCP服务(添加HTTP协议请求头Header授权) image-20251124110322825 对应阿里云开通此联网搜索服务 image-20251124111942869

2. Stdio协议:本地命令的灵活集成

标准输入/输出(stdio),即通过标准输入/输出进行通信,是MCP协议中最灵活的一种实现方式。

支持的命令类型及环境要求

Stdio协议支持多种本地命令执行方式,但需要预先安装相应的运行环境:
  1. uvx
  • 环境要求:需要安装Node.js和npm/yarn
  • 用途:用于运行基于npm包的MCP服务
  • 示例:uvx @modelcontextprotocol/server-filesystem
  1. npx
  • 环境要求:需要安装Node.js
  • 用途:用于执行npm包中的命令行工具
  • 示例:npx @modelcontextprotocol/server-gitlab
  1. python
  • 环境要求:需要安装Python 3.8+和pip
  • 用途:用于运行Python编写的MCP服务
  • 示例:python server.py
  1. docker
  • 环境要求:需要安装Docker引擎
  • 用途:用于运行容器化的MCP服务
  • 示例:docker run -i mcp/github
  1. 其他本地命令
  • 环境要求:根据具体命令而定
  • 用途:支持任何可以通过标准输入输出通信的本地程序

在LangChat Pro中使用Stdio协议

LangChat Pro配置截图 iShot_2025-11-23_18.13.50 LangChat Pro添加授权后查看tools列表 iShot_2025-11-23_18.14.57 Chat测试截图 iShot_2025-11-23_18.15.29

3. Docker协议:容器化MCP服务的无缝集成

Docker协议支持以容器镜像形式分发的stdio MCP服务器,用户可以在LangChat Pro平台中轻松配置和使用Docker化的MCP服务。

技术优势

Docker协议具有以下技术优势:
  • 环境隔离:每个MCP服务运行在独立的容器中,避免环境冲突
  • 易于部署:通过镜像分发,简化了服务部署流程
  • 资源控制:可以精确控制每个服务的资源使用
  • 版本管理:通过镜像标签实现服务版本管理

在LangChat Pro中使用Docker协议

实战配置本地Docker Github MCP服务 iShot_2025-11-20_18.33.12 在LangChat Pro平台配置Docker Github MCP服务 image-20251124112725372 注意,应该使用本机Docker Host地址:unix:///var/run/docker.sock image-20251124113039547

架构设计:LangChat Pro MCP多协议支持的背后

LangChat Pro之所以能够同时支持HTTP、Stdio和Docker三种协议,背后有着精心设计的架构:

1. 动态协议识别机制

系统能够根据配置自动识别并选择合适的传输协议,无需用户手动干预。

2. 链接缓存优化

通过智能的链接缓存机制,避免重复建立连接的开销,显著提升响应效率。

3. 统一接口抽象

无论底层使用哪种协议,上层应用都通过统一的接口进行访问,保证了系统的一致性和可维护性。

在LangChat Pro工作流中使用MCP

mcp-node

MCP 与 Function Call 的区别

二者都让模型“调用外部能力”,但定位、边界与治理能力不同:

对比维度

维度Function CallMCP
定位模型厂商协议内的函数调用语义跨模型/跨厂商的统一工具协议
发现机制预先注入函数签名Server 端声明的 Tools/Resources 可被发现
传输通道走模型 API 交互HTTP(SSE)/Stdio 等独立通道
能力治理依赖应用侧自定义标准化能力声明、错误处理与权限边界
可移植性受模型厂商限制脱离具体模型、易于迁移
扩展性单应用/单模型为主多服务/多工具可编排

选型建议

  • 快速接入/轻量函数:Function Call 足够且开发门槛低
  • 多模型、多工具、强治理:优先考虑 MCP(标准化、可发现、易迁移)
  • 混合方案:在同一 Agent 中同时启用,两者互补

最佳实践

  • 安全治理
    • 为 MCP Server 配置细粒度鉴权与速率限制
    • 隔离高权限工具与敏感资源
  • 可观测性
    • 接入日志与链路追踪,记录 Tool 调用耗时与失败率
    • 监控重试/超时策略与告警
  • 鲁棒性
    • 对外部服务网络抖动与间歇性失败进行重试与降级
    • 采用幂等设计,避免重复执行带来的副作用
  • 一致性
    • 对工具的参数模式、错误码与返回结构进行标准化
    • 保持工具命名、描述与能力边界的稳定性

常见问题(FAQ)

  • Tools 列表超时?
    • 检查 MCP Server 可用性与网络连通(SSE 返回头、CORS、代理)
    • Stdio 场景检查命令可执行性与环境变量
  • 调用成功但模型未采用结果?
    • 检查 Agent 的提示词策略与工具优先级
    • 确认工具输出是否满足模型期望的结构化格式
  • HTTP 与 Stdio 如何选?
    • 云端/跨网络优先 HTTP(SSE)
    • 本地/低延迟/内网可信优先 Stdio
MCP 与 Function Call 可共存:前者负责“标准化工具层”,后者负责“模型侧调用意图”。在 LangChat Pro 中,推荐将高价值的外部能力沉淀到 MCP,提升跨场景的可复用与可治理性。