Skip to main content

MCP 工具模块

1. 模块介绍

MCP(Model Context Protocol)工具模块通过集成 Spring AI MCP Client,将 MCP 协议的工具自动转换为 CodeactTool,使 Agent 能够调用外部 MCP 服务提供的工具。

核心概念

概念说明
McpDynamicToolFactoryMCP 动态工具工厂,将 ToolCallback 适配为 CodeactTool
McpToolCallbackAdapter适配器,封装 MCP ToolCallback 为 CodeactTool
McpServerSpecMCP 服务元数据,用于自定义类名和描述
ToolCallbackProviderSpring AI MCP 提供的工具回调提供者

工作流程

MCP 服务配置(mcp-servers.json)


┌─────────────────────────────────────────┐
│ Spring AI MCP Client Starter │
│ (自动创建 ToolCallbackProvider) │
└────────────────┬────────────────────────┘

┌─────────────────────────────────────────┐
│ McpDynamicToolFactory │
│ (ToolCallback → CodeactTool) │
└────────────────┬────────────────────────┘

CodeactToolRegistry


Agent 可调用工具

2. 快速接入方式

步骤 1:配置 MCP 服务

创建 src/main/resources/mcp-servers.json

{
"mcpServers": {
"my-mcp-server": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.example.com/api/mcp",
"--header",
"Authorization: Bearer YOUR_TOKEN"
]
}
}
}

步骤 2:启用 MCP Client

# application.yml
spring:
ai:
mcp:
client:
enabled: true
name: assistant-agent-mcp
version: 1.0.0
type: SYNC
request-timeout: 30s
toolcallback:
enabled: true
stdio:
servers-configuration: classpath:mcp-servers.json

步骤 3:验证工具注册

启动应用后,MCP 工具会自动注册到 CodeactToolRegistry,可在日志中看到:

McpDynamicToolFactory#createTools - reason=创建MCP工具成功, toolName=xxx

Agent 即可在代码中调用这些工具:

# Agent 生成的代码示例
result = mcp.tool_name(param1="value1", param2="value2")

3. 完整配置示例

MCP 服务配置文件

{
"mcpServers": {
"weather-service": {
"command": "node",
"args": ["/path/to/weather-mcp-server.js"]
},
"database-service": {
"command": "npx",
"args": [
"mcp-remote",
"https://db.example.com/mcp",
"--header",
"Authorization: Bearer ${DB_TOKEN}"
]
}
}
}

应用配置

spring:
ai:
mcp:
client:
enabled: true
name: my-agent-mcp
type: SYNC # SYNC 或 ASYNC
request-timeout: 30s
toolcallback:
enabled: true # 必须启用才能获取 ToolCallback
stdio:
servers-configuration: classpath:mcp-servers.json

常见 MCP 服务类型

本地进程(stdio)

{
"mcpServers": {
"local-tool": {
"command": "python",
"args": ["/path/to/mcp_server.py"]
}
}
}

远程服务(streamable-http)

spring:
ai:
mcp:
client:
streamable-http:
connections:
remote-server:
url: https://mcp.example.com
endpoint: /mcp

Docker 容器

{
"mcpServers": {
"docker-tool": {
"command": "docker",
"args": ["run", "--rm", "-i", "my-mcp-image:latest"]
}
}
}

Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。