AI就是最好的编程老师,是不是教编程的培训机构要关门了

4 阅读5分钟

案例如下,看看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 服务(工具)

登录 阿里云百炼平台

操作路径:
  1. 进入「智能体」 → 「工具管理」 → 「自定义工具」
  2. 点击「创建工具」
  3. 填写以下信息:
字段示例值
工具名称查询用户信息
描述根据用户 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 接口,并返回结果。


🔐 四、安全建议(生产环境)

  1. 添加认证机制

    • 使用 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();
    }
    
  2. 限制 IP 白名单(如果部署在公网服务器)

    • 百炼平台会提供出口 IP 列表(联系客服获取)
  3. 启用 HTTPS(必须!ngrok 已支持)


🧪 五、调试技巧

  1. 使用 Postman 或 curl 测试接口是否正常:
curl -X POST https://abc123.ngrok.io/api/mcp/getUserInfo \
     -H "Content-Type: application/json" \
     -d '{"userId": "U123"}'
  1. 查看 Spring Boot 控制台日志,确认收到请求
  2. 在百炼平台查看「工具调用日志」

✅ 总结:完整流程图

[用户提问][智能体分析是否需调用工具][调用你注册的 MCP 服务 URL][你的 Spring Boot 接口处理请求][返回结构化数据][智能体整合结果并回复用户]

📚 参考文档


如果你希望我帮你生成完整的 JSON Schema、Spring Boot Controller 模板、或集成身份验证,也可以告诉我具体需求,我可以继续补充 👇

总结

对应真正想学习,想做产品的人来说,有AI后学习成本和开发成本已经降得非常低了,关键是要真正行动起来。现在不是像之前的学习路径:把前后端数据库等都学好了才开始做产品,而是定一个目标,然后由AI来帮你拆解任务,然后一步一步的以终为始的去问ai怎么做,在做中学!