以下是为《MCP服务协议核心架构解析》设计的课件内容,采用“概念解析→代码实践→运行验证”三段式教学结构,结合可视化图表与可运行代码示例,增强学生对MCP协议核心组件的理解与实操能力:
一、课程导入:MCP协议定位与核心价值
1.1 为什么需要MCP协议?
- 多智能体协作痛点:
- 智能体间服务调用接口不统一(如REST API、gRPC混杂)
- 动态服务发现效率低(需硬编码IP/端口)
- 跨域安全风险(权限控制粗放)
- MCP协议目标:定义标准化智能体通信语言,实现“服务即插即用”
二、核心概念解析:MCP协议三大组件
2.1 MCP Client(智能体客户端)
-
功能:
- 封装智能体对外服务调用逻辑
- 支持动态服务目录检索与API生成
- 集成安全认证模块
-
核心接口:
public interface MCPAgent {// 向MCP Server注册自身能力void registerService(ServiceDescriptor serviceDesc);// 检索符合条件的远端服务List<ServiceDescriptor> discoverServices(ContextQuery query);// 发起带安全认证的服务调用Response invokeService(APIRequest request); }
-
可视化交互图:
(说明:Client通过SDK向Server注册服务,检索时发送ContextQuery,Server返回匹配的ServiceDescriptor)
2.2 MCP Server(服务管理中枢)
- 核心模块:
- 服务目录(Service Catalog):
- 存储结构:
Map<ContextTag, List<ServiceDescriptor>>
- 示例ServiceDescriptor:
{"serviceId": "file-system-001","contextTags": ["fileIO", "localStorage"],"apiSpec": "fileOperations.yaml", // OpenAPI规范文件"securityPolicy": "RBAC_GROUP_LOW" }
- 存储结构:
- 动态发现引擎:
- 算法:基于TF-IDF的上下文标签匹配 + 余弦相似度排序
- 优化:支持模糊查询(如“文件操作”匹配“fileIO”标签)
- 服务目录(Service Catalog):
2.3 SDK工具链(开发赋能层)
- 核心工具:
- 代码生成器:根据ServiceDescriptor生成客户端SDK代码
# 命令示例:生成Java客户端代码 mcp-sdk-generator --spec fileOperations.yaml --lang java
- 安全配置助手:自动生成TLS证书与RBAC策略文件
- 调试工具:可视化服务调用链路追踪界面
- 代码生成器:根据ServiceDescriptor生成客户端SDK代码
三、动态上下文发现机制深度解析
3.1 核心流程演示
- ContextQuery构造:
// 智能体A需要调用文件写入服务 ContextQuery query = new ContextQueryBuilder().addPrimaryTag("fileWrite").addAttribute("storageType", "local").setSecurityLevel(SecurityLevel.MEDIUM).build();
- 服务目录检索:
- Server接收到Query后,在Service Catalog中匹配
contextTags
包含“fileIO”且securityPolicy
符合要求的服务
- Server接收到Query后,在Service Catalog中匹配
- API指令生成:
- 根据匹配的ServiceDescriptor中的
apiSpec
,生成具体HTTP请求(如POST /file/write)
- 根据匹配的ServiceDescriptor中的
3.2 代码实践:模拟服务发现
# 模拟MCP Server服务目录
service_catalog = {"fileIO": [{"serviceId": "localFS","apiSpec": {"method": "POST", "url": "/local/write"},"securityLevel": 2},{