MCP 基本概念
背景和价值
以下是对 大模型 MCP 官方协议 的核心解析,综合多篇文档信息整理:
一、协议概述
MCP(Model Context Protocol,模型上下文协议)是 Anthropic 公司于 2024 年 11 月 推出的开放标准协议,旨在为大型语言模型(LLM)提供 标准化的外部资源连接接口。其核心目标包括:
- 标准化集成:统一 LLM 与工具/数据源的交互方式,避免重复开发适配接口。
- 动态扩展:支持即插即用,新增工具或数据源时无需修改现有架构。
- 安全边界:通过本地化数据处理和最小权限原则保护敏感信息。
类比为 AI 领域的“USB-C 接口”,MCP 实现了模型与外部世界的双向实时交互。
应用场景
- 企业级开发:连接内部数据库/OA 系统,构建智能客服或数据分析工具。
- 个人效率工具:通过 MCP 调用 GitHub、Slack 等服务,实现自然语言指令操作。
- 动态知识增强:实时获取天气、股票等外部数据,解决模型信息孤岛问题。
二、核心架构
MCP 采用 客户端-服务器(C/S)架构,包含三大组件:
- MCP 主机(Host)
- 发起请求的 LLM 应用(如 Claude Desktop、IDE 等)。
- 负责管理客户端实例、权限控制和上下文聚合。
- MCP 客户端(Client)
- 与服务器建立 1:1 连接,处理协议消息和状态管理。
- 支持能力协商(如声明支持的协议版本和功能)。
- MCP 服务器(Server)
- 轻量级服务程序,通过标准协议暴露三类能力:
- 工具(Tools):执行外部操作(如 Git 命令、API 调用)。
- 资源(Resources):提供数据访问(如文件、数据库)。
- 提示词(Prompts):预定义任务模板(如医疗诊断模板)。
- 轻量级服务程序,通过标准协议暴露三类能力:
三、通信机制
1. 协议规范
- 基础协议:基于 JSON-RPC 2.0,支持有状态会话。
- 消息类型:
- Requests:双向请求(需响应),如
tools/list(获取工具列表)。 - Responses:对应请求的响应(成功或错误)。
- Notifications:单向通知(无需回复),如资源更新推送。
- Requests:双向请求(需响应),如
2. 传输层
- stdio(标准输入输出)
- 适用于本地进程通信,速度快且无需网络。
- 局限性:仅支持单进程通信,资源占用高。
- SSE(Server-Sent Events)
- 基于 HTTP 的远程通信,支持多客户端连接。
- Streamable HTTP(2025-03-26 新增)
- 替代 SSE,简化双通道响应机制,更适合云原生架构。
3. 生命周期管理
- 初始化(Initialization)
- 客户端与服务器协商协议版本和功能支持(如工具列表)。
- 操作阶段(Operation)
- 动态交互(如调用工具、读取资源)。
- 关闭(Shutdown)
- 优雅终止连接并释放资源。
四、安全设计
MCP 通过以下机制保障安全性:
- 数据不出域
- 敏感操作在本地服务器完成,避免数据上传至云端。
- 最小权限原则
- 服务器自主控制资源访问范围(如限制文件读写路径)。
- 会话隔离
- 每个客户端独立会话,防止跨服务数据泄露。
六、开发规范
- 服务端实现
- 使用 Node.js/Python 开发轻量级服务器,通过注解声明工具和资源。
- 示例代码见网页5的
server_demo.py(支持 stdio 和 SSE 协议)。
- 客户端集成
- 遵循 JSON-RPC 2.0 规范,处理请求/响应和错误重试。
运行模式
STUDIO
本地模式。
@modelcontextprotocol/server-github 是一个基于 Node.js 开发的工具包,其功能可能涉及 GitHub 自动化操作。您可以通过以下方式进一步验证:
查询 npm 仓库:
运行 npm view @modelcontextprotocol/server-github,若返回包信息则确认为公开的 Node.js 包。
如下命令,
$jons = '{xx}' 定义mcpserver的运行的相关参数
echo $json | npx -y @modelcontextprotocol/server-github 把参数以管道形式传给mcpserver, nodejs形式运行mcp server
@modelcontextprotocol/server-github 是 Node.js 包,该包可能来自 npm 公共仓库 或 项目本地依赖
npx 与 npm 的区别:
| 命令 | 用途 | 是否需要全局安装 |
|---|---|---|
npm install -g <包> |
全局安装包 | 是 |
npm run <本地命令> |
运行本地项目中的脚本 | 否(需本地安装) |
npx <包> |
直接运行包(优先本地,若无则临时下载) | 否 |
SSE
SSE模式就是通过网络远程连接MCP server,服务运行在提供Server的厂家服务器上,以各类URL+key的形式提供给用户(这样强能力的Server就能远程收费了,比如xx德MCP-server)

浙公网安备 33010602011771号