MCP集成
AG-Kit的MCP集成提供了AG-Kit工具系统与模型上下文协议(MCP)之间的无缝双向转换能力,使您可以:- 连接标准MCP服务器并将其工具作为AG-Kit的BaseTool实例使用
- 将AG-Kit工具暴露为MCP服务器供外部客户端调用
- 支持多种传输协议包括stdio、HTTP、SSE、内存通信等
概述
MCP集成包含以下核心组件:- MCPClientTool:封装外部MCP工具以在AG-Kit中工作
- MCPToolkit:管理MCP工具的高级工具包
- AGKitMCPServer:将AG-Kit工具暴露为标准MCP服务器
- MCPClientManager:管理多个MCP服务器的连接
快速入门
在AG-Kit中使用外部MCP工具
将AG-Kit工具暴露为MCP服务器
传输协议
Stdio传输
MCP服务器最常用的传输方式,使用标准输入/输出。服务器配置
客户端配置
HTTP传输(StreamableHTTP)
适用于基于Web的MCP服务器和客户端。服务器配置
客户端配置
SSE传输
服务器发送事件(Server-Sent Events)传输,用于实时通信。服务器配置
客户端配置
内存传输
用于测试和同进程通信。服务器配置
客户端配置
核心示例
示例1:创建并运行MCP服务器
将AG-Kit工具暴露为标准MCP服务器:示例2:连接外部MCP服务器
将外部MCP服务器作为AG-Kit工具使用:示例3:使用MCPToolkit简化管理
使用高级工具包管理多个MCP连接:示例5:高级连接管理
处理连接选项和错误场景:示例6:事件处理与监控
通过事件监听器监控MCP操作:高级配置
工具配置
自定义AG-Kit工具通过MCP的暴露方式:客户端工具配置
自定义MCP客户端工具:连接管理
高级连接选项:事件处理
监控MCP操作:模式转换
AG-Kit自动在Zod模式与MCP JSON模式间转换:Zod转MCP模式
MCP转Zod模式
错误处理
服务器错误处理
客户端错误处理
应用程序接口参考
完整应用程序接口文档包含所有接口、类型及详细方法签名,请参阅MCP应用程序接口参考。 AGKitMCPServer - 将AG-Kit工具作为标准MCP服务器暴露registerTool(tool: BaseTool, config?: MCPToolConfig): MCPToolMetadata- 注册单个工具registerTools(tools: BaseTool[], config?: MCPToolConfig): MCPToolMetadata[]- 注册多个工具unregisterTool(name: string): boolean- 从服务器移除工具run(transportConfig: MCPTransportConfig): Promise<void>- 使用指定传输方式启动服务器stop(): Promise<void>- 停止服务器并清理资源callTool(name: string, args: Record<string, any>): Promise<CallToolResult>- 直接执行工具listTools()- 获取所有已注册工具列表isServerRunning(): boolean- 检查服务器是否运行中getStats(): object- 获取服务器统计信息
addServer(serverId: string, config: MCPClientConfig, options?: MCPConnectionOptions): Promise<void>- 连接到MCP服务器disconnectServer(serverId: string): Promise<void>- 断开特定服务器连接disconnectAll(): Promise<void>- 断开所有服务器连接createClientTools(serverId?: string): MCPClientTool[]- 创建AG-Kit工具包装器createClientTool(serverId: string, toolName: string, agKitToolName?: string): MCPClientTool- 创建特定工具包装器callTool(serverId: string, toolName: string, args: any): Promise<any>- 直接调用MCP工具isServerConnected(serverId: string): boolean- 检查连接状态getStats(): object- 获取客户端管理器统计信息
invoke(input: any, context?: ToolExecutionContext): Promise<ToolResult>- 执行MCP工具getMCPMetadata(): MCPToolMetadata- 获取原始MCP工具元数据isConnected(): boolean- 检查底层客户端是否连接updateConfig(newConfig: Partial<MCPToolConfig>): void- 更新工具配置
addServer(serverId: string, config: MCPClientConfig): Promise<void>- 添加MCP服务器removeServer(serverId: string): Promise<void>- 移除服务器getConnectedServers(): string[]- 获取已连接服务器列表getServerTools(serverId: string): MCPClientTool[]- 获取特定服务器工具refresh(): Promise<void>- 刷新所有连接cleanup(): Promise<void>- 清理所有资源getClientManager(): MCPClientManager- 获取底层客户端管理器
最佳实践
- 使用合适的传输方式:CLI工具使用stdio,Web服务使用HTTP,测试使用内存传输
- 优雅处理错误:实现适当的错误处理和重试逻辑
- 监控连接:使用事件监听器跟踪连接状态
- 清理资源:完成后始终调用清理方法
- 全面测试:使用内存传输进行综合测试
- 模式验证:确保Zod和MCP JSON Schema之间的模式兼容
- 连接管理:生产部署使用连接选项确保可靠性
故障排除
常见问题
- 连接超时:增加传输配置中的超时值
- 模式转换错误:确保Zod模式使用支持的类型
- 工具未找到:检查工具注册和命名
- 传输错误:验证传输配置和服务器可用性
- 内存泄漏:始终清理连接和事件监听器