s07
MCP 集成
集成层Model Context Protocol 服务器管理
多源配置合并 → 连接池管理 → 动态工具注册MCP 工具在运行时动态发现并注册,与内置工具共享同一执行管道
Model Context Protocol 服务器管理
多源配置合并 → 连接池管理 → 动态工具注册MCP 工具在运行时动态发现并注册,与内置工具共享同一执行管道
Claude Code 内置了 40+ 工具(文件读写、Bash、搜索等),但用户的需求是无限的——有人需要访问数据库,有人需要调用 Slack API,有人需要操作 Kubernetes。MCP(Model Context Protocol)让 Claude Code 能够在运行时发现并连接外部工具服务器,将第三方能力无缝集成为 LLM 可调用的工具。核心挑战是:如何在保持安全性的同时,让工具集合动态可扩展?
MCP 客户端 — 三种传输协议的统一抽象
// MCP 客户端支持三种传输协议:
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
// 每种传输协议适用于不同场景:
// - stdio: 本地进程通信,最常见(如 npx @mcp/server-xxx)
// - SSE: 远程 HTTP 长连接,适合云端服务
// - StreamableHTTP: 新一代 HTTP 传输,支持双向流
// MCPTool 将外部工具包装为 Claude Code 原生 Tool 接口工具发现 — 从 MCP 服务器加载工具列表
// MCP 客户端连接后自动发现工具:
// 1. client.listTools() → 获取服务器提供的工具列表
// 2. 每个 MCP 工具被包装为 MCPTool 实例
// 3. MCPTool 实现了 Claude Code 的 Tool 接口
// 4. 工具的 JSON Schema 直接从 MCP 服务器获取
// 5. 同时支持 listResources() 和 listPrompts()
// 6. OAuth 认证流程处理需要授权的 MCP 服务器