MCP 英文全称 Model Context Protocol(模型上下文协议),是由 Anthropic 于 2024 年 11 月推出的开源协议,用于连接 AI 模型与外部数据源、工具和服务 。
一、MCP核心架构:Host / Client / Server
MCP 借鉴了 LSP(Language Server Protocol,编辑器统一支持编程语言的协议)的设计思路,定义了三种角色:
| 角色 | 说明 | 例子 |
|---|---|---|
| Host | 用户直接使用的 AI agent,负责协调多个 Client、管理对话 | Cline,Claude Code、Cursor、ChatGPT |
| Client(客户端) | Host 内部组件,与某一个 Server 保持一对一连接,负责将模型的工具调用请求翻译为标准协议消息 | Host 每连接一个 Server 就会创建一个 Client |
| Server | 包一层标准协议,暴露某个具体工具或数据源的能力,不直接与大模型对话 | GitHub API Server、数据库 Server、文件系统 Server |
为了更直观地理解三者之间的交互关系,可以参考以下流程图:
流程图说明:
- 用户/开发者直接与Host交互。
- Host内部可以创建和管理多个Client,每个 Client 负责与一个特定的Server通信。
- Server封装了具体的工具或数据源能力,通过 MCP 协议暴露给 Client。
- MCP 协议标准化了 Host-Client-Server 之间的通信,使得 AI 模型可以安全、灵活地调用外部能力。
二、传输方式
MCP 支持两种传输方式,适用于不同场景:
| 传输方式 | 适用场景 | 经验 | 截图 |
|---|---|---|---|
| stdio(标准输入输出) | 本地工具,Host 以子进程方式启动 Server | 最简单,无需网络配置,适合个人电脑上的本地工具 stdio MCP Server 必须由客户端启动并托管。 人为启动无法跟host交互 | |
| Streamable HTTP | 远程生产环境,Server 作为 HTTP 服务部署 | 更容易理解,类似传统springboot服务; 支持并发连接、水平扩展,搭配 OAuth 2.1 做身份验证 |
三、MCP搭建
自己通过 fastMCP 创建 MCP 服务
from fastmcp import FastMCP mcp = FastMCP("入门工具服务") @mcp.tool() def getWeather(city: str) -> str: """获取指定城市的天气信息。 Args: city: 城市名称。 """ # 这里可以调用实际的天气 API 获取天气信息 # 由于这是一个示例,我们返回一个固定的字符串 result = f"{city} 的天气是晴天,温度为25°C。" logger.info("getWeather({!r}) -> {!r}", city, result) return result使用三方 MCP server
| 魔搭 | ModelScope - MCP 广场 |
| MCP.so | mcp.so |
四、MCP client配置
以 vscode 的 Cline 插件为例,直接通过 UI 操作也很方便。
点击设置可以直接打开全局配置添加,也可以在项目中添加。
五、三方MCP调试工具Inspector
安装工具:npx @modelcontextprotocol/inspector