增加供应商智能添加功能

This commit is contained in:
hero920103 committed 2026-09-04 00:09:32 +08:00
1 parent d8936d9730
commit 20be7f4817
29 files changed
+4317 -1476

No files matched your search

+98
View File
@@ -0,0 +1,98 @@
# 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`。
重新编译(如需):
```bash
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`(本环境已执行建表)。
## 六、构建与运行
```bash
# 后端(go/ 目录)
go build -o main.exe .
./main.exe # 监听 9000
# 前端(backend/ 目录,Vue SPA)
npm run dev # 开发,vite 端口 4001,/api 代理到 9000
npm run build # 生产构建
```