Files
yunzerwebsiteallinone/backend/src/views/apps/ai/README.md
T

4.8 KiB
Raw Blame History

MCP 工具中心(AI 模块)

本模块为「AI 智能体」接入 MCP(Model Context Protocol) 工具调用能力:

  • MCP 市场:内置一批可一键添加的服务,以及项目自带的「内置演示 MCP」(零配置,直接可用)。
  • 选择即用:在「我的服务」里通过「启用」开关控制哪些 MCP 在会话中被调用;只有启用状态的服务 才会注入到 AI 会话。
  • 会话自动调用:聊天时,AI 会自动决定是否调用已启用的 MCP 工具,前端实时展示工具调用卡片(参数 / 结果 / 状态)。

一、如何使用

  1. 打开「AI 广场」→ 左侧边栏点击 CPU(MCP 工具中心) 按钮。
  2. 「MCP 市场」页 → 点击「内置演示 MCP」的 添加(或添加天眼查/企查查等,需自行申请对应的 URL/Key)。
  3. 切到「我的服务」页 → 把要用的服务 启用 开关打开;可点击「测试」验证连接并预览工具。
  4. 回到聊天窗 → 提问。例如:
    • 现在几点钟了?(触发 get_time)
    • 帮我计算 (3+5)*2(触发 calculate)
    • 连云港今天天气怎么样?(触发 weather_query)
  5. 回答过程中,AI 气泡内会出现工具调用卡片:展开可看参数与返回结果。

头部「MCP」绿色指示器表示当前会话已接入 N 个 MCP 工具。

二、手动新增 MCP 服务

「我的服务」→「新增配置」,支持三种传输:

传输 说明 必填字段
stdio 本地进程(MCP Server 以子进程方式启动) 启动命令 command;可选参数 args(JSON数组)、环境变量 env(JSON对象)
http Streamable HTTP 传输 服务地址 url;可选请求头 headers(JSON对象)
sse 传统 SSE 传输 服务地址 url;可选请求头 headers(JSON对象)

示例(stdio + npx 远程包,Windows 会自动用 cmd /c 包装):

命令: npx -y @modelcontextprotocol/server-everything

示例(http):

地址: https://mcp.tianyancha.com/mcp
请求头: {"Authorization":"Bearer 你的Key"}

三、内置演示 MCP(cmd/demo-mcp)

项目自带一个 Go 编写的 stdio MCP Server,提供 5 个工具,用于零配置验证全链路: get_time(当前时间)、calculate(表达式计算)、weather_query(模拟天气)、echo、get_user_profile。

重新编译(如需):

cd go
go build -o bin/demo-mcp.exe ./cmd/demo-mcp

四、实现说明(文件清单)

后端(Go / Beego,go/)

文件 作用
models/backend_mcp_server.go MCP 服务器配置模型(传输、命令、URL、启用、状态、工具数)
controllers/backend_mcp_server.go MCP 服务器接口:市场 / 增删改查 / 测试 / 工具发现 / 启停
services/mcp_client.go MCP 客户端管理器:stdio/http/sse 连接、工具列表、工具调用、连接缓存
services/mcp_market.go MCP 市场目录(内置演示 + 天眼查/企查查/前瞻/IT桔子/BOSS直聘)
controllers/backend_ai_chat.go 聊天工具调用循环:注入已启用 MCP 工具 → LLM 返回 tool_calls → 执行 → 回填 → 流式输出
cmd/demo-mcp/main.go 内置演示 MCP Server(stdio)
sql/create_backend_mcp_server.sql 建表 SQL(yz_backend_mcp_server)

SSE 事件扩展(POST /backend/ai/chat/send-stream): session / tool_list(本次启用的工具)/ tool_start(开始调用某工具)/ tool_result(工具返回)/ content(文本增量)/ done / error

前端(Vue3 + Element Plus,backend/src/)

文件 作用
views/apps/ai/components/mcpConfig.vue MCP 工具中心(市场 + 我的服务 + 新增/编辑 + 工具预览)
views/apps/ai/components/chatWindow.vue 聊天窗:SSE 工具事件解析 + 工具调用卡片渲染 + MCP 状态指示
views/apps/ai/components/chatSidebar.vue CPU 按钮入口(标题更新为「MCP 工具中心」)
api/ai.js MCP 服务器 / 市场 API 封装

模型要求

  • 需支持 Function Calling / Tool Calling(OpenAI 兼容与 Anthropic 均已适配)。
  • 已内置两种接入:OpenAI 兼容(含豆包/DeepSeek/OpenRouter 等)与 Anthropic。

五、依赖说明

  • 新增 Go 依赖:github.com/mark3labs/mcp-go v0.33.0(MCP 官方协议的 Go 客户端/服务端库)。
  • go.mod 的 go 指令由 1.17 调整为 1.23(mcp-go v0.33 的最低要求;本机 Go 1.25 完全兼容)。
  • 数据库:需先执行 sql/create_backend_mcp_server.sql(本环境已执行建表)。

六、构建与运行

# 后端(go/ 目录)
go build -o main.exe .
./main.exe          # 监听 9000

# 前端(backend/ 目录,Vue SPA)
npm run dev         # 开发,vite 端口 4001,/api 代理到 9000
npm run build       # 生产构建