MCP介绍¶
https://modelcontextprotocol.io/introduction
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议基础 | Model Context Protocol (MCP) | 开源协议,标准化应用程序向LLMs提供上下文的方式,类比USB-C的通用连接标准 |
| 核心组件 | MCP Hosts | 宿主应用程序(如Claude Desktop/IDE/AI工具),通过MCP协议访问数据的终端程序 |
| MCP Clients | 协议客户端,维护与服务器1:1连接的通信模块 | |
| MCP Servers | 轻量级服务程序,通过标准化协议暴露特定功能模块 | |
| 数据与服务 | Local Data Sources | 本地计算机的私有数据资源(文件/数据库/本地服务),受安全协议保护的数据访问层 |
| Remote Services | 通过API等接口连接的互联网远程服务系统 | |
| 开发路径 | Server Developers | 开发自定义MCP服务器的技术角色,需实现协议规范定义的服务接口 |
| Client Developers | 开发协议客户端的工程角色,负责集成MCP服务器功能到宿主应用 | |
| Claude Desktop Users | 终端用户角色,通过预建服务器扩展AI应用功能 | |
| 功能模块 | Resources | 服务端向LLM暴露结构化数据资源的标准化机制 |
| Prompts | 可复用的提示模板系统,支持动态工作流构建 | |
| Tools | 服务端动作执行框架,使LLM能调用预定义功能接口 | |
| Sampling | 服务端主动请求LLM生成内容的逆向交互机制 | |
| Transports | 协议通信层的传输实现(如HTTP/WebSocket等) | |
| 开发工具 | Debugging Guide | 服务端与客户端集成的故障排除技术文档 |
| MCP Inspector | 交互式调试工具,用于协议消息流监控与分析 | |
| 核心优势 | Pre-built Integrations | 协议提供的即插即用功能模块集合 |
| Vendor Agnostic | 支持灵活切换不同LLM供应商的技术中立性 | |
| Security Infrastructure | 数据驻留本地的基础安全架构设计 | |
| 架构概念 | Client-Server Architecture | 基于请求-响应模式的分层系统架构 |
| Standardized Connection | 统一的服务发现与接入规范 | |
| 开发规范 | SDKs | 多语言实现工具包(Python/TypeScript/Java等),包含协议编解码与接口抽象 |
| Specification | 协议核心规范文档,定义通信格式与交互流程 | |
| 功能扩展 | Example Servers | 官方实现的功能参考案例库 |
| Example Clients | 已支持协议的应用示范列表 | |
| 开发流程 | Building with LLMs | 使用大模型加速协议开发的工程方法 |
| 协议扩展机制 | Contributing Guide | 开源社区协作规范与功能扩展指引 |
| 动词 | Standardize | 统一不同数据源和工具的接入方式 |
| Integrate | 实现系统与服务间的功能互操作 | |
| Switch | 在不同LLM供应商间进行技术迁移的操作能力 | |
| 安全机制 | Secure Access | 本地数据源的安全访问控制策略 |
| 交互模式 | Request Completions | 服务端向LLM发起内容生成请求的交互模式 |
| 部署模式 | Lightweight Programs | 服务端要求的轻量化部署特性 |
Resources资源¶
https://modelcontextprotocol.io/docs/concepts/resources
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 核心概念 | Model Context Protocol (MCP) | 一种协议,允许服务器向客户端暴露数据资源,供客户端在LLM交互中作为上下文使用。 |
| Resources | MCP的核心抽象单元,代表服务器暴露的任何形式的数据或内容(如文件、数据库记录、API响应等)。每个资源通过唯一URI标识,支持文本或二进制数据。 | |
| 资源标识 | URI | 唯一标识资源的统一资源标识符,格式由协议和路径结构组成(例如 file://... 或自定义协议)。 |
| URI Scheme | URI的协议部分(如file、postgres、screen),由服务器定义自定义方案以支持动态资源。 | |
| 资源类型 | Text Resources | 包含UTF-8编码的文本数据,适用于源代码、配置文件、日志、JSON/XML等场景。 |
| Binary Resources | 包含Base64编码的二进制数据,适用于图片、PDF、音视频等非文本格式。 | |
| 资源发现 | Direct Resources | 通过resources/list端点直接暴露静态资源列表,包含URI、类型、描述和元数据。 |
| Resource Templates | 动态资源的URI模板(如screen://{display}),客户端通过参数化模板构造有效URI。 | |
| 资源读取 | resources/read | 客户端通过此请求读取资源内容,返回resource_contents结构(包含数据、MIME类型、大小等)。 |
| MIME Type | 资源内容的媒体类型标识(如text/plain),用于客户端解析数据。 | |
| 资源更新 | List Changes | 服务器通过notifications/resources/list_changed通知客户端资源列表变动。 |
| Content Subscriptions | 客户端通过resources/subscribe订阅资源更新,通过notifications/resources/updated接收变更通知,最后取消订阅(resources/unsubscribe)。 | |
| 实现相关 | TypeScript/Python Example | 示例代码展示如何实现资源支持(如端点处理、URI解析、订阅管理)。 |
| 最佳实践 | 命名规范 | 使用清晰、描述性的资源名称和URI(如postgres://database/customers)。 |
| 动态资源模板 | 为动态资源设计URI模板(如screen://{display_id}),并明确参数规则。 | |
| 错误处理 | 返回明确的错误消息(如无效URI、权限不足等),并支持分页处理大型资源列表。 | |
| 缓存与验证 | 缓存频繁访问的资源内容,并在处理前验证URI有效性。 | |
| 安全考虑 | URI验证 | 防止恶意URI注入,确保路径合法性(如禁止../目录遍历)。 |
| 访问控制 | 按需限制资源访问权限(如数据库敏感记录仅限授权用户)。 | |
| 二进制数据风险 | 避免直接执行或渲染未经验证的二进制数据(如可能包含恶意代码的文件)。 | |
| 速率限制与审计 | 对高频读取请求实施限速,并记录资源访问日志用于审计。 | |
| 数据加密 | 在传输过程中对敏感资源内容使用TLS等加密协议。 | |
| 操作动词 | 暴露(Expose) | 服务器主动公开资源供客户端使用。 |
| 订阅(Subscribe) | 客户端通过订阅机制接收资源更新通知。 | |
| 解析(Parse) | 客户端根据MIME类型解析资源内容(如JSON转结构化数据)。 | |
| 清理(Cleanup) | 服务器定期清理过期或无效资源(如临时生成的文件)。 |
Prompts¶
https://modelcontextprotocol.io/docs/concepts/prompts
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议基础 | Prompts (MCP) | 服务器预定义的可复用提示模板和交互流程,用于标准化客户端与LLM的交互方式。 |
| Model Context Protocol (MCP) | 支持通过结构化协议管理提示模板的框架,提供动态参数、上下文嵌入和多步骤流程控制。 | |
| 核心组件 | Prompt Templates | 预定义的文本模板,允许动态参数插入和上下文资源引用,例如表单生成或对话引导。 |
| Dynamic Arguments | 提示模板中需要运行时传入的参数(如用户输入或环境变量),用于生成具体任务内容。 | |
| Context Resources | 来自系统或用户会话的上下文数据(如用户ID、文档内容),可自动嵌入到提示模板中。 | |
| 动态特性 | Embedded Resource Context | 服务器在处理prompts/get请求时自动将相关资源上下文注入提示模板的能力。 |
| Multi-step Workflows | 通过串联多个提示模板实现复杂交互流程(如问答后自动执行数据分析)。 | |
| 技术实现 | RESTful Endpoints | prompts/list(发现可用提示)、prompts/get(获取具体提示实例)等API接口。 |
| Server Capability | 服务器通过prompts.listChanged声明支持提示列表变更通知的能力。 | |
| 客户端交互 | Client Discovery | 客户端通过调用prompts/list端点获取服务器支持的提示模板列表。 |
| Argument Validation | 对客户端传入参数进行格式和完整性校验,防止模板渲染错误。 | |
| 最佳实践 | Descriptive Naming | 使用清晰描述性的提示命名(如/generate-summary),便于人工和LLM理解用途。 |
| Versioning | 对提示模板进行版本控制以兼容不同客户端,避免接口变更导致系统故障。 | |
| Content Caching | 对动态生成的内容(如实时数据)进行缓存,提升响应速度并降低资源消耗。 | |
| 安全考虑 | Sanitize User Input | 对用户输入进行净化和转义处理,防止XSS等攻击方式通过提示参数注入。 |
| Rate Limiting | 限制提示调用频率,防止恶意用户通过高频调用消耗系统资源。 | |
| Access Controls | 基于角色或权限控制提示模板的访问范围(如仅允许特定用户组使用敏感操作提示)。 | |
| Prompt Injection Risks | 防范通过参数注入恶意指令影响LLM输出的攻击行为(如诱导模型泄露隐私数据)。 | |
| UI集成 | Slash Commands | 将提示模板映射为/command形式的快捷指令,集成到聊天界面或搜索框中。 |
| Command Palette | 通过全局命令面板集中展示可用的提示操作,支持关键词搜索和分类过滤。 | |
| Interactive Forms | 将参数化的提示模板转换为可视化表单,引导用户逐步输入所需信息。 | |
| 更新与通知 | ListChanged Notification | 通过notifications/prompts/list_changed事件通知客户端提示列表发生变更,触发重新拉取。 |
Tools工具¶
https://modelcontextprotocol.io/docs/concepts/tools
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议与架构 | Model Context Protocol (MCP) | 一种协议规范,定义服务器向客户端暴露可执行功能(工具)的交互方式,支持LLM与外部系统交互。 |
| Tools | MCP的核心组件,表示服务器提供的动态操作能力,可修改系统状态或调用外部API,区别于静态资源。 | |
| Resources | MCP中的静态数据实体,与动态工具形成对比,通过唯一名称标识但不支持执行操作。 | |
| 工具核心机制 | Discovery | 客户端通过tools/list端点动态发现可用工具,支持运行时工具列表更新。 |
| Invocation | 客户端通过tools/call端点调用工具,服务器执行操作后返回结构化结果。 | |
| Flexibility | 工具支持的操作范围从简单计算到复杂API集成,体现协议扩展性。 | |
| 工具定义结构 | Name/Description | 工具的唯一标识符和自然语言描述,用于指导LLM选择合适工具。 |
| Parameters | 使用JSON Schema定义的输入参数规范,支持类型验证和示例说明。 | |
| Return Value Structure | 明确定义的工具输出格式,包括成功响应和错误信息的标准化结构。 | |
| 实现模式 | System Operations | 本地系统交互类工具(如文件读写、命令执行),需严格限制权限。 |
| API Integrations | 封装第三方API的工具(如发送邮件、查询数据库),需处理认证和错误重试。 | |
| Data Processing | 数据转换/分析工具(如JSON解析、统计计算),需考虑性能优化。 | |
| 安全实践 | Input Validation | 参数校验策略:包括路径消毒、URL验证、参数范围检查,防范注入攻击。 |
| Access Control | 认证授权机制:基于角色的访问控制、操作审计和速率限制。 | |
| Error Sanitization | 错误处理原则:隐藏内部错误细节,记录安全相关日志,执行超时后的资源清理。 | |
| 最佳实践 | Atomic Operations | 保持工具功能单一化,确保操作原子性以便错误恢复。 |
| Progress Reporting | 长时间运行工具需提供进度反馈机制。 | |
| Documentation Standards | 要求包含参数示例、返回值示例和使用场景说明。 | |
| 动态更新机制 | Notifications | 通过notifications/tools/list_changed推送工具列表变更事件。 |
| Hot Swapping | 支持运行时动态添加/移除工具定义,需保证版本兼容性。 | |
| 错误处理规范 | isError Flag | 结果对象中的布尔标志位,明确指示操作失败状态。 |
| Error Payload | 标准化错误详情格式,包含错误代码、描述和可恢复性标识。 | |
| 测试策略 | Functional Testing | 验证工具在合法/非法输入下的行为符合预期。 |
| Integration Testing | 使用真实和模拟依赖测试外部系统集成。 | |
| Security Testing | 覆盖输入消毒、身份验证、权限提升防护等安全维度。 | |
| Performance Testing | 评估高负载下的超时处理、资源泄漏预防和吞吐量表现。 |
Sampling采样¶
https://modelcontextprotocol.io/docs/concepts/sampling
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 核心概念 | Sampling | MCP协议的核心功能,允许服务器通过客户端请求LLM补全,在保持安全隐私的前提下实现智能代理行为 |
| Model Context Protocol (MCP) | 支持跨服务器上下文管理的协议框架 | |
| Human-in-the-loop | 用户参与审核和修改请求/补全的设计原则,确保对LLM输入输出的控制 | |
| 协议流程 | sampling/createMessage | 服务器向客户端发起采样请求的API端点 |
| Request Review | 客户端对请求的审查和修改阶段 | |
| Completion Review | 客户端对LLM生成结果的审查阶段 | |
| 消息格式 | messages array | 包含对话历史的结构化数组,每个元素包含角色和内容 |
| role | 消息角色定义:user(用户)或 assistant(助手) | |
| content | 消息内容容器,支持文本或图像格式 | |
| text | 纯文本内容字段 | |
| data & mimeType | 图像内容的Base64编码数据和MIME类型标识 | |
| 模型偏好 | modelPreferences | 服务器指定的模型选择偏好配置 |
| hints | 建议模型名称列表(如"claude-3"),支持模糊匹配不同供应商的等效模型 | |
| name | 模型名称匹配模式(完整或部分名称) | |
| costPriority | 成本优化优先级(0-1标准化值) | |
| speedPriority | 响应速度优先级(0-1标准化值) | |
| intelligencePriority | 模型智能能力优先级(0-1标准化值) | |
| 上下文管理 | includeContext | 控制上下文包含范围的参数:none(无)/thisServer(当前服务器)/allServers(所有服务器) |
| 系统控制 | systemPrompt | 可选的系统级提示词,客户端可修改或忽略 |
| 采样参数 | temperature | 控制生成随机性的参数(0.0确定性 ~ 1.0高随机性) |
| maxTokens | 生成结果的最大token数量限制 | |
| stopSequences | 触发生成终止的字符串序列数组 | |
| metadata | 供应商特定的扩展参数容器 | |
| 安全控制 | Sanitization | 敏感信息过滤处理流程 |
| Rate Limiting | 请求频率限制机制 | |
| Data Encryption | 传输数据加密要求 | |
| Privacy Auditing | 用户数据隐私审计功能 | |
| 代理模式 | Agentic Workflows | 支持智能代理行为的模式,包括:资源分析、上下文决策、结构化数据生成、多步骤任务处理等 |
| 限制条件 | Context Size Limits | 上下文内容的容量限制 |
| Model Availability | 不同供应商模型的可访问性差异 | |
| Content Type Support | 支持的内容类型限制(如某些模型不支持图像) | |
| 最佳实践 | Prompt Structuring | 构建清晰、结构化的提示词要求 |
| Context Management | 上下文管理原则:最小必要量、清晰结构、及时更新 | |
| Fallback Handling | 错误处理机制:超时管理、限速处理、响应验证、备用方案 | |
| 监控机制 | Usage Monitoring | 采样使用情况的跟踪和分析 |
| Cost Monitoring | 资源消耗成本的追踪管理 | |
| 交互控制 | User Moderation | 用户对提示词/补全结果的修改/拒绝权限 |
| Model Selection Control | 用户对最终模型选择的控制权 |
- 优先级参数采用0-1标准化值实现多目标优化
- 上下文管理采用分级控制(none/thisServer/allServers)
- 安全机制强调端到端控制(从输入审查到传输加密)
- 代理模式支持多模态智能交互(文本+图像)
- 用户控制贯穿整个生命周期(请求-生成-输出)
Roots根¶
https://modelcontextprotocol.io/docs/concepts/roots
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 核心概念 | Roots | MCP中定义服务器操作边界的URI集合,用于声明客户端希望服务器关注的资源范围(如文件路径、API端点等) |
| 技术术语 | URI | 统一资源标识符,用于唯一标识资源(如file://或https://开头的路径) |
| 文件系统路径 | 本地文件系统的物理路径(如file:///home/user/projects/myapp) | |
| HTTP URL | 网络资源地址(如https://api.example.com/v1) | |
| 功能特性 | 声明能力(Declare) | 客户端在连接时通过声明roots capability告知服务器支持根目录配置 |
| 逻辑分离 | 通过多个根目录将不同资源(如前端代码库和API)保持独立管理 | |
| 操作流程 | 连接时建议 | 客户端首次连接服务器时提供建议的根目录列表 |
| 动态变更通知 | 客户端在根目录变化时主动通知服务器(需服务器支持) | |
| 服务器行为 | 资源定位 | 服务器根据根目录URI访问对应资源(如解析文件路径或调用API) |
| 边界优先 | 服务器优先处理根目录边界内的操作请求 | |
| 配置字段 | uri | JSON配置中定义根目录位置的核心字段(必须为有效URI) |
name | JSON配置中根目录的可读性标识(如"Frontend Repository") | |
| 使用场景 | 项目目录 | 开发项目所在的本地或远程目录 |
| 仓库位置 | 代码版本控制系统(如Git)的存储路径 | |
| API端点 | 网络服务接口的统一入口地址 | |
| 配置位置 | 应用程序配置文件的存储路径 | |
| 资源边界 | 限制服务器操作范围的安全策略(如仅允许访问指定目录) | |
| 设计原则 | 必要资源声明 | 仅向服务器暴露必需的最小资源集 |
| 描述性名称 | 使用清晰命名的根目录帮助开发者理解资源用途(如"生产环境数据库") | |
| 运维要求 | 可访问性监控 | 持续验证根目录指向资源的可用性(如网络连接/文件权限检查) |
| 变更容错处理 | 服务器需优雅处理根目录失效或变更场景(如自动重试或通知客户端) |
特别说明¶
- **非技术概念**包含
工作区(Workspace),指通过根目录定义的逻辑资源集合 - **隐含关系**中:
guidance(引导)体现为通过根目录影响服务器行为clarity(清晰性)通过显式声明资源范围实现
- **系统特性**包含
弱约束性,即根目录属建议性配置而非强制访问控制 - **扩展能力**支持任意协议URI(如
s3://云存储或ftp://文件传输协议)
Transports传输¶
https://modelcontextprotocol.io/docs/concepts/transports
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 核心协议 | Model Context Protocol (MCP) | 定义客户端与服务端通信的基础协议,包含传输层、消息格式等规范 |
| 消息格式 | JSON-RPC 2.0 | MCP协议使用的网络传输格式,包含请求(Requests)、响应(Responses)、通知(Notifications)三种消息类型 |
| 传输层基础 | Transport | 负责消息的实际传输机制,需实现消息与JSON-RPC格式的互相转换 |
| 内置传输类型 | 标准输入/输出 (stdio) | 基于标准输入输出流的传输方式,适用于命令行工具和本地集成 |
| 服务器推送事件 (SSE) | 基于HTTP的传输方式,支持服务端到客户端的单向流式通信 | |
| 自定义传输 | 自定义网络协议 | 可扩展实现如WebSocket、gRPC等特殊协议 |
| 专用通信通道 | 针对特定硬件或场景优化的通信方式(如IoT设备) | |
| 错误处理 | 连接错误 | 网络连接失败、认证失败等底层错误 |
| 消息解析错误 | JSON-RPC格式转换过程中的数据异常 | |
| 协议错误 | 不符合MCP规范的消息结构或流程错误 | |
| 最佳实践 | 连接生命周期管理 | 包含建立连接、维持心跳、优雅断开等全过程管理 |
| 资源清理 | 释放网络连接、内存缓存等系统资源 | |
| 安全措施 | TLS加密 | 为网络传输层提供加密保护 |
| 认证授权机制 | 包括OAuth、API密钥等身份验证方式 | |
| 性能优化 | 消息队列背压处理 | 防止消息积压导致系统过载的流量控制机制 |
| 调试方法 | 网络分析工具 | Wireshark、tcpdump等报文抓取工具 |
| 消息规范 | 请求(Requests) | 需要接收方响应的消息类型 |
| 响应(Responses) | 包含请求处理结果的返回消息 | |
| 通知(Notifications) | 无需回应的单向消息类型 | |
| 系统集成 | 现有系统集成 | 支持与企业遗留系统或第三方平台对接 |
| 监控运维 | 健康检查 | 定期检测连接可用性的机制 |
| 异常模式监控 | 识别异常流量或错误爆发的监控系统 | |
| 网络策略 | 速率限制 | 防止服务被滥用的流量控制策略 |
| 防火墙规则 | 控制网络访问权限的安全策略 | |
| 开发实现 | Transport接口 | 自定义传输需要实现的标准接口规范 |
| 数据安全 | 消息完整性验证 | 确保传输内容未被篡改的校验机制 |
| 输入数据清洗 | 防止注入攻击的安全过滤机制 | |
| 错误跟踪 | 错误日志记录 | 记录传输层异常的调试信息 |
| 特殊场景 | 受限网络环境 | 网络端口受限或需要代理的特殊部署场景 |
注:此表格已合并重复类别(如将"安全考虑"统一为"安全措施" ),排除了示例代码语言(TypeScript/Python)等具体实现细节,聚焦协议层面的核心概念。涵盖了传输机制、消息规范、安全策略、运维监控等完整技术栈要素。
Java SDK¶
概述¶
https://modelcontextprotocol.io/sdk/java/mcp-overview
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议相关 | Model Context Protocol (MCP) | 整体协议框架,用于工具和资源的上下文管理,支持客户端-服务器交互的标准化协议 |
| JSON-RPC | 消息传输格式,用于协议层消息的序列化和反序列化,支持请求-响应模式的消息处理 | |
| 架构层 | Client/Server Layer | 客户端(McpClient)和服务器(McpServer)的协议操作层,McpClient处理客户端协议,McpServer管理服务端逻辑 |
| Session Layer (McpSession) | 通过DefaultMcpSession实现通信模式和状态管理,支持同步/异步操作 | |
| Transport Layer | 负责消息传输的底层实现,包括StdioTransport和多种HTTP SSE传输方式 | |
| 核心组件 | MCP Client | 客户端组件,负责与MCP服务器建立连接、管理通信并执行协议操作 |
| MCP Server | 服务端组件,提供工具、资源和能力给客户端,实现服务器端协议逻辑 | |
| McpSession | 会话管理对象,控制通信状态和模式(同步/异步) | |
| 协议功能 | Tool discovery | 工具发现机制,客户端可动态识别服务器提供的功能 |
| Execution | 工具执行能力,客户端通过协议触发服务器端工具运行 | |
| Roots list management | 资源根目录列表管理功能,支持列表变更通知和订阅机制 | |
| URI template-based access | 基于URI模板的资源访问方式,支持动态参数化资源定位 | |
| 传输实现 | StdioTransport | 基于标准输入输出的进程间通信传输方式,核心模块默认实现 |
| HTTP SSE transports | 服务器发送事件的HTTP传输实现,包括: - Java HttpClient - Spring WebFlux(响应式) - Spring WebMVC(Servlet) | |
| 编程范式 | Synchronous | 同步编程模式,支持阻塞式请求处理 |
| Asynchronous | 异步编程模式,支持非阻塞式消息处理 | |
| 消息处理 | Type-safe response | 类型安全的响应处理机制,确保数据格式正确性 |
| Error handling | 协议层的错误处理机制,包含验证和异常管理 | |
| 交互流程 | Protocol compatibility check | 协议初始化时的版本兼容性验证 |
| Capability negotiation | 客户端与服务器之间的能力协商过程 | |
| 资源管理 | Subscription system | 资源变更订阅机制,支持客户端注册监听特定资源变化 |
| Content retrieval | 资源内容获取功能,支持按需获取服务器资源 | |
| 依赖管理 | Maven/Gradle | 项目构建工具,用于管理协议SDK的依赖集成 |
| BOM (Bill of Materials) | 依赖版本管理机制,声明所有推荐依赖版本,确保各传输模块版本兼容性 | |
| SDK组件 | mcp (核心库) | 提供基础协议实现和API的核心依赖 |
| mcp-spring-webflux | 基于响应式编程的WebFlux SSE传输实现 | |
| mcp-spring-webmvc | 基于Servlet的WebMVC SSE传输实现 | |
| mcp-test | 测试工具库,支持MCP应用的集成测试 |
MCP ClientMCP 客户端¶
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议组件 | MCP Client | Model Context Protocol(MCP)架构中的核心组件,负责与MCP服务器建立连接、管理协议实现及客户端功能。 |
| Model Context Protocol | 定义客户端与服务器之间交互规则的协议,涵盖通信、资源管理、工具执行等模块。 | |
| 协议协商 | Protocol version negotiation | 客户端与服务器协商协议版本,确保兼容性。 |
| Capability negotiation | 确定客户端与服务器之间支持的功能(如资源访问、采样等),以启用或禁用特定交互能力。 | |
| 通信机制 | Message transport | 客户端与服务器之间的消息传输机制,支持同步和异步通信。 |
| JSON-RPC | 基于JSON的远程过程调用协议,用于客户端与服务器之间的结构化数据交换。 | |
| 工具与执行 | Tool discovery | 客户端发现服务器端提供的可用工具列表,工具为服务器端定义的函数。 |
| Tool execution | 客户端通过参数映射调用服务器端工具,支持同步(Sync API)和异步(Async API)方式。 | |
| 资源管理 | Resource access | 客户端通过URI模板访问服务器端资源(如数据源),支持发现和检索资源内容。 |
| Resource management | 客户端对服务器端资源的统一管理接口,包括资源权限控制和生命周期管理。 | |
| 提示系统 | Prompt system | 客户端与服务器端预定义提示模板的交互系统,支持动态生成文本(如基于参数的对话或指令生成)。 |
| 客户端能力 | Roots Support | 定义服务器可访问的文件系统根目录边界,包括根目录列表查询、变更通知及权限控制。 |
| Sampling Support | 允许服务器通过客户端发起LLM(大语言模型)交互请求(如文本生成或图像生成),客户端控制模型访问权限并可选附加MCP上下文信息。 | |
| 传输层实现 | STDIO | 基于标准输入输出的传输层实现,用于本地进程间通信。 |
| SSE (HttpClient) | 基于HTTP客户端的长连接(Server-Sent Events)传输实现,适用于实时流式通信场景。 | |
| SSE (WebFlux) | 使用Reactive Web框架(如Spring WebFlux)实现的SSE传输层,支持高并发异步通信。 | |
| API类型 | Sync API | 同步接口,适用于需要阻塞式调用的应用场景(如命令行工具)。 |
| Async API | 异步接口,适用于非阻塞式高并发场景(如Web应用或实时系统)。 | |
| 核心功能 | Roots management | 管理服务器可访问的文件系统根目录列表,支持动态更新和权限分配。 |
| LLM interactions | 通过客户端代理的大语言模型交互,包括文本补全(completions)和生成(generations)等操作。 | |
| API keys | 客户端集中管理模型API密钥,避免服务器直接接触敏感信息,提升安全性。 | |
| 交互类型 | Text-based interactions | 基于文本的LLM交互(如自然语言生成)。 |
| Image-based interactions | 基于图像的LLM交互(如图像生成或视觉推理)。 | |
| 上下文控制 | MCP server context | 可选功能,允许将MCP服务器上下文信息(如会话状态)注入到LLM提示中,以增强生成相关性。 |
| 数据结构 | Parameters map | 工具或提示模板执行时传入的键值对参数集合,用于动态配置操作行为。 |
| URI templates | 资源访问中使用的统一资源标识符模板,支持动态路径匹配和参数化查询。 |
MCP Server¶
| 类别 | 词条 | 详细说明 |
|---|---|---|
| 协议与架构 | Model Context Protocol (MCP) | 核心协议,定义了服务器与客户端之间的交互规范,包括工具、资源、提示等功能的标准化操作流程。 |
| MCP架构 | 包含服务器和客户端的整体架构设计,支持会话管理、能力协商等功能。 | |
| 会话架构 | 版本0.8.x引入的基于会话的架构,支持多客户端并发连接和状态管理。 | |
| JSON-RPC | 用于STDIO传输的消息协议,支持双向通信和非阻塞处理。 | |
| 服务器组件与功能 | MCP Server | 协议的服务端实现,负责暴露工具、管理资源、提供提示模板、处理客户端请求等核心功能。 |
| 工具支持 | 允许服务器注册工具(如计算器、API调用),供客户端调用。 | |
| 资源支持 | 支持URI访问模式的资源管理(如文件、数据库记录),客户端可读取资源内容。 | |
| 提示支持 | 提供预定义的提示模板,供客户端生成标准化请求(如用户问候)。 | |
| 完成支持 | 为提示或资源URI提供自动补全建议(如代码补全)。 | |
| 能力协商 | 服务器与客户端协商支持的功能(如是否支持资源、工具、日志)。 | |
| 结构化日志 | 支持按不同级别(DEBUG、INFO等)发送日志通知,客户端可过滤接收。 | |
| 会话管理 | 管理多个客户端连接的会话生命周期,包括状态维护和优雅关闭。 | |
| 传输与通信 | 传输层 | 负责客户端与服务器的通信协议实现,如STDIO、SSE等。 |
| STDIO传输 | 通过标准输入/输出流进行JSON-RPC通信,适合进程间集成。 | |
| SSE (Server-Sent Events) | 基于HTTP的服务器推送技术,支持WebFlux、WebMvc、Servlet等实现。 | |
| WebFlux | 响应式SSE传输实现,适用于Spring WebFlux框架。 | |
| WebMvc | 传统Spring MVC的SSE传输实现。 | |
| Servlet | 基于Servlet API的SSE传输,支持异步处理和会话管理。 | |
| 双向通信 | STDIO支持客户端与服务器的双向请求/响应。 | |
| 非阻塞消息处理 | STDIO传输的消息处理机制,避免阻塞主线程。 | |
| 序列化/反序列化 | 使用ObjectMapper处理JSON消息的转换。 | |
| 优雅关闭 | 支持安全终止连接,确保未完成请求处理完毕。 | |
| HTTP流式传输 | SSE通过HTTP长连接持续推送事件。 | |
| 工具与资源 | 工具(Tool) | 服务器暴露的可执行功能(如计算器),需定义名称、描述和参数模式(JSON Schema)。 |
| 资源(Resource) | 通过URI访问的数据实体(如文件、API响应),需定义MIME类型和读取逻辑。 | |
| 提示模板(Prompt Template) | 预定义的交互模板,包含参数化消息(如动态生成用户提示)。 | |
| 参数模式(JSON Schema) | 工具或提示的参数约束定义,使用JSON Schema描述。 | |
| CallToolResult | 工具调用的返回结果,包含输出内容及是否需进一步交互。 | |
| ReadResourceResult | 资源读取的返回结果,包含资源内容。 | |
| GetPromptResult | 提示请求的返回结果,包含格式化后的消息列表。 | |
| CompleteResult | 自动补全的返回结果,包含建议列表及分页信息。 | |
| 规范与配置 | Server Capabilities | 服务器配置的功能开关(如启用资源、工具、日志)。 |
| SyncToolSpecification/AsyncToolSpecification | 同步/异步工具的实现规范,包含工具定义和处理器函数。 | |
| SyncResourceSpecification/AsyncResourceSpecification | 同步/异步资源的实现规范,包含资源定义和读取逻辑。 | |
| SyncPromptSpecification/AsyncPromptSpecification | 同步/异步提示的实现规范,包含提示定义和模板生成逻辑。 | |
| SyncCompletionSpecification/AsyncCompletionSpecification | 同步/异步自动补全的实现规范,包含补全类型(提示或资源)和处理器函数。 | |
| ServerCapabilities构建器 | 使用建造者模式配置服务器能力(如.resources(true).tools(true))。 | |
| 交互与操作 | 注册工具/资源/提示 | 通过addTool()、addResource()等方法将功能注册到服务器。 |
| 管理客户端连接 | 处理并发连接,支持同步(McpSyncServer)或异步(McpAsyncServer)模式。 | |
| 处理请求 | 在工具/资源/提示的处理器函数中执行具体逻辑(如计算、读取数据)。 | |
| 发送日志通知 | 通过exchange.loggingNotification()在会话中发送日志消息。 | |
| 设置日志级别 | 客户端通过setLoggingLevel()过滤日志(如仅接收INFO及以上级别)。 | |
| 调用工具(CallTool) | 客户端通过工具名称和参数调用服务器功能。 | |
| 请求采样(Sampling) | 服务器向客户端请求语言模型生成内容(需客户端支持),需定义CreateMessageRequest。 | |
| CreateMessageRequest | 采样请求参数,包含输入内容、模型偏好(如模型提示词、优先级)、最大生成长度等。 | |
| 日志与错误处理 | LoggingLevel | 日志级别枚举(DEBUG=0, INFO=1, NOTICE=2, ..., EMERGENCY=7)。 |
| LoggingMessageNotification | 日志消息通知对象,包含级别、记录器名称、数据内容等。 | |
| McpError | 统一错误类,覆盖协议兼容性、传输问题、工具执行异常等场景。 | |
| 其他概念 | 同步API/异步API | 服务器支持两种集成模式:同步(阻塞式)和异步(响应式,如Project Reactor的Mono)。 |
| 内容序列化 | 使用ObjectMapper将对象转换为JSON格式。 | |
| 上下文注入 | 提示模板支持参数化替换(如将用户名动态插入问候语)。 | |
| 会话生命周期 | 从客户端连接到断开期间的状态管理(如资源释放)。 |