概念
MCP(模型上下文协议),目的是统一AI与外部工具、数据源之间的连接方式。
(解决了多个ai应用与多个外部工具和数据源的适配功能)(AI应用实现MCP Client,,工具实现MCP Server)
MCP 的核心组件
**Host:**Host 是面向用户的 AI 应用,比如 Claude code、Cursor等,Host 负责管理
整个应用的生命周期,是用户直接交互的入口。一个Host 内部可以创建多个MCP Client 实例,每个Client 连接一个 Server。
Client: Client 运行在 Host 内部,负责和 MCP Server 建立连接、维护通信会话。
Server: Server 是能力提供方,负责把某个工具或数据源的能力按照MCP 协议暴露出来。
MCP Server 暴露的三种能力
- Tools,让模型可以执行操作。
- Resources,提供上下文数据给模型。
- Promots,预定义的Prompt模版,方便用户快速触发特定场景(代码审查等)。
MCP 通讯流程
- Client启动时握手,交换双方的协议版本。
- Client调用tools拿到Server的工具定义(名称、描述、参数等)。
- 用户提问后,模型更具工具描述决定调用什么工具。
- Client发送tools请求到Server,server执行具体操作后返回结果。
- Client吧结果拼到上下文发送给模型,模型继续推理。
MCP 和 OpenAI 的 Function Calling 的区别
Function Calling 只定义了模型输出的函数调用格式,告诉模型"你可以调哪些函数",什么调用,用什么参数不说,MCP是端到端的协议,能力发现、怎么调用、有什么参数都包含。
两者不冲突,MCP Client 内部用Function Calling把描述发给模型。
MCP Server 挂了或者响应超时,Client 端一般怎么处理方式
设置调用超时,超时直接返回错误信息给模型。模型拿到错误后可以选择重试、换个工具、或者直接告诉用户"这个操作失败了"。
MCP Server 挂了,Host 处理方式,会不会影响其他 Server 。
不会影响。MCP 的架构设计就是一个 Client 对一个 Server,Client 之间互相隔离。某个 Server挂了,对应的Client 会收到连接断开的通知,Host可以选择重连、降级或者告诉用户这个工具暂时不可用。其他Client 和它们连的 Server完全不受影响。这和微服务的故障隔离思路一样,不会因为一个服务挂了把整个系统拖垮。