案例如下,看看AI的回复,比很多专业老师回复得都好吧!
我的问题:
我使用springboot框架搭建好了项目,并且通过dashscope连接上了阿里云百炼平台,并且已经调通了阿里云百炼平台上的智能体,我现在想创建mcp服务,让智能体能够调用我的mcp服务,如何做?
AI的回复:
你已经成功使用 Spring Boot 搭建项目,并通过 DashScope SDK 连接上了阿里云百炼平台,调通了智能体(Agent),现在你想创建一个 MCP(Model Calling Protocol)服务,让智能体能够调用你的自定义服务(比如查询数据库、执行业务逻辑等),这是实现“智能体具备工具调用能力”的关键一步。
✅ 一、什么是 MCP?
在阿里云百炼平台中,MCP(Model Calling Protocol) 是一种协议或模式,允许大模型驱动的智能体调用外部服务(即你开发的服务),从而完成复杂任务。你可以理解为:
MCP 服务 = 可被智能体调用的 API 工具
这些服务通常用于:
- 查询天气
- 获取用户订单
- 发送邮件
- 执行数据库操作
- 调用第三方系统
✅ 二、目标:让智能体调用你的 Spring Boot 服务
你需要做三件事:
| 步骤 | 内容 |
|---|---|
| 1️⃣ | 编写一个 HTTP 接口(REST API),作为你的 MCP 服务 |
| 2️⃣ | 在百炼平台注册这个服务(描述其功能、参数) |
| 3️⃣ | 百炼智能体会自动调用该接口完成任务 |
🚀 三、详细步骤
🔹 步骤 1:创建 MCP 服务接口(Spring Boot)
假设你要提供一个「根据用户 ID 查询用户信息」的服务。
示例代码:
@RestController
@RequestMapping("/api/mcp")
public class UserService {
@PostMapping("/getUserInfo")
public ResponseEntity<Map<String, Object>> getUserInfo(@RequestBody Map<String, Object> request) {
// 提取参数(由智能体传入)
String userId = (String) request.get("userId");
if (userId == null || userId.isEmpty()) {
return ResponseEntity.badRequest().body(Map.of(
"error", "Missing required parameter: userId"
));
}
// 模拟业务逻辑
Map<String, Object> result = new HashMap<>();
result.put("userId", userId);
result.put("name", "张三");
result.put("age", 30);
result.put("email", "zhangsan@example.com");
return ResponseEntity.ok(Map.of(
"result", result
));
}
}
💡 注意:返回格式建议统一为
{ "result": { ... } }或{ "data": ... },便于百炼解析。
启动后接口地址可能是:
👉 http://your-server.com/api/mcp/getUserInfo
🔹 步骤 2:配置公网可访问地址(内网穿透)
本地开发时,Spring Boot 项目运行在 localhost:8080,但百炼平台无法访问。
解决方案:
使用 内网穿透工具 将本地服务暴露到公网:
| 工具 | 推荐 |
|---|---|
| ngrok | 简单易用 |
| localtunnel | 免费 |
| 阿里云/腾讯云服务器反向代理 | 生产推荐 |
使用 ngrok 示例:
ngrok http 8080
输出类似:
Forwarding https://abc123.ngrok.io -> http://localhost:8080
那么你的服务公网地址就是:
👉 https://abc123.ngrok.io/api/mcp/getUserInfo
🔹 步骤 3:在百炼平台注册 MCP 服务(工具)
登录 阿里云百炼平台
操作路径:
- 进入「智能体」 → 「工具管理」 → 「自定义工具」
- 点击「创建工具」
- 填写以下信息:
| 字段 | 示例值 |
|---|---|
| 工具名称 | 查询用户信息 |
| 描述 | 根据用户 ID 查询用户的基本信息 |
| 请求方式 | POST |
| 请求地址 | https://abc123.ngrok.io/api/mcp/getUserInfo |
| 认证方式 | 无 / 或填 API Key(如有安全要求) |
| 请求参数(JSON Schema) | 见下方示例 |
| 返回结果描述 | 用户信息对象 |
📝 请求参数示例(JSON Schema):
{
"type": "object",
"properties": {
"userId": {
"type": "string",
"description": "用户的唯一标识 ID"
}
},
"required": ["userId"]
}
✅ 返回示例(供平台学习结构):
{
"result": {
"userId": "U123",
"name": "张三",
"age": 30,
"email": "zhangsan@example.com"
}
}
保存后,该工具就可在智能体中被调用了!
🔹 步骤 4:在智能体中使用该工具
当你和智能体对话时,例如说:
“请帮我查一下用户 ID 为 U123 的信息”
智能体会自动识别需要调用你注册的「查询用户信息」工具,发送请求到你的 Spring Boot 接口,并返回结果。
🔐 四、安全建议(生产环境)
-
添加认证机制
- 使用 Header 中的
Authorization: Bearer <token> - 或在请求 body 中校验 secret key
String token = request.getHeader("X-Api-Key"); if (!"your-secret-key".equals(token)) { return ResponseEntity.status(401).build(); } - 使用 Header 中的
-
限制 IP 白名单(如果部署在公网服务器)
- 百炼平台会提供出口 IP 列表(联系客服获取)
-
启用 HTTPS(必须!ngrok 已支持)
🧪 五、调试技巧
- 使用 Postman 或 curl 测试接口是否正常:
curl -X POST https://abc123.ngrok.io/api/mcp/getUserInfo \
-H "Content-Type: application/json" \
-d '{"userId": "U123"}'
- 查看 Spring Boot 控制台日志,确认收到请求
- 在百炼平台查看「工具调用日志」
✅ 总结:完整流程图
[用户提问]
↓
[智能体分析是否需调用工具]
↓
[调用你注册的 MCP 服务 URL]
↓
[你的 Spring Boot 接口处理请求]
↓
[返回结构化数据]
↓
[智能体整合结果并回复用户]
📚 参考文档
- 阿里云百炼平台文档:help.aliyun.com/product/217…
- DashScope SDK:github.com/modelscope/…
- MCP 工具注册指南(搜索“百炼 自定义工具”)
如果你希望我帮你生成完整的 JSON Schema、Spring Boot Controller 模板、或集成身份验证,也可以告诉我具体需求,我可以继续补充 👇
总结
对应真正想学习,想做产品的人来说,有AI后学习成本和开发成本已经降得非常低了,关键是要真正行动起来。现在不是像之前的学习路径:把前后端数据库等都学好了才开始做产品,而是定一个目标,然后由AI来帮你拆解任务,然后一步一步的以终为始的去问ai怎么做,在做中学!