go-common中增加mcp抽离成通用方法(编排由业务方自行处理)
This commit is contained in:
@@ -88,6 +88,7 @@ go run ./cmd/server -config config.json -addr :8080
|
||||
| 短信 | `SMS()` / `MustSMS()` | SendSMS / SendSMSAsync |
|
||||
| Excel | `Excel()` | 每次新建导出器 |
|
||||
| 国际化 | `I18n()` / `MustI18n()` | 一般由 `NewHandler` 注入 |
|
||||
| MCP 工具 | `MCP()` / `MustMCP()` | `ListTools` / `CallTool`(见 §8) |
|
||||
| HTTP 出参 | `NewHandler(w, r)` | `Success` / `Error` / `ErrorData` |
|
||||
| 中间件 | `MiddlewareChain()` | `Append` / `ThenFunc` |
|
||||
| 迁移 | `Migrator(dir)` | Up / Down / Status |
|
||||
@@ -184,6 +185,26 @@ tools.Now()
|
||||
tools.MD5("text")
|
||||
```
|
||||
|
||||
### MCP 工具(Model Context Protocol)Client
|
||||
|
||||
本库只做 **MCP Client**:按配置连接外部 MCP server(容器/服务),发现工具、调用工具;
|
||||
**不含路由/抽参/编排逻辑**——用哪个工具、怎么填参数、怎么组合答复,属于业务侧的
|
||||
Prompt/Agent 编排,需要业务项目自行实现(可参考已有 RAG 项目里的 ToolOrchestrator 写法)。
|
||||
|
||||
```go
|
||||
m := app.MustMCP() // config.mcp 未配置或 enabled=false 时 m.Enabled() 为 false
|
||||
|
||||
tools, _ := m.ListTools(ctx) // 聚合全部已启用 server 的工具;FQName = "{toolNamePrefix}__{原始工具名}"
|
||||
res, _ := m.CallTool(ctx, "word__create_document", map[string]any{"title": "周报"})
|
||||
|
||||
// 可选:把 HTTP 层的 request id 传入,调用日志会附带该字段(不传不影响功能)
|
||||
ctx = mcp.WithRequestID(ctx, requestID)
|
||||
```
|
||||
|
||||
`config.json` 中 `mcp.servers[]` 一条 = 一个独立 MCP server(自带多个工具),新增能力 =
|
||||
加一条配置,不改代码;`allowedTools` 留空表示开放该 server 全部工具。完整字段见
|
||||
[`config/example.json`](./config/example.json) 的 `mcp` 段。
|
||||
|
||||
---
|
||||
|
||||
## 9. 最小 config.json
|
||||
@@ -222,6 +243,7 @@ tools.MD5("text")
|
||||
- 自行 `gorm.Open` / `redis.NewClient`
|
||||
- Factory 透传(`LogInfo`、`Success`、`Now` 等)
|
||||
- 请求路径滥用 `MustXxx`
|
||||
- 把 MCP 工具路由/抽参/Prompt 编排逻辑塞进本库(应在业务侧基于 `mcp.Manager` 自行实现)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user