| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // Package agentmcp 是新 AI 助手使用的业务数据 MCP 服务(fwh-agent-mcp)。
- //
- // 无用户状态:工具不接收、不推断调用者;由 AgentServer 后台登记为远程 HTTP 服务,经 MCP Gateway 转接给 Agent。
- // 设计见 docs/ai-assistant-agentserver/agent-mcp.md。与旧助手的 cmd/mcp 相互独立。
- package agentmcp
- import (
- "fmt"
- "github.com/mark3labs/mcp-go/server"
- "go.uber.org/zap"
- "fwh-toolbox-server/agentmcp/kit"
- "fwh-toolbox-server/agentmcp/tools"
- )
- const (
- ServerName = "fwh-agent-mcp"
- ServerVersion = "1.0.0"
- SetReadOnly = "readonly"
- SetOps = "ops"
- )
- // Tools 返回指定工具集。
- func Tools(set string) ([]kit.Registrar, error) {
- switch set {
- case SetReadOnly:
- return tools.ReadOnly(), nil
- case SetOps:
- return tools.Ops(), nil
- }
- return nil, fmt.Errorf("未知的工具集:%s(可选 readonly / ops)", set)
- }
- // NewServer 创建 MCPServer 并注册工具集。
- func NewServer(set string, log *zap.Logger, maxConcurrency int) (*server.MCPServer, error) {
- list, err := Tools(set)
- if err != nil {
- return nil, err
- }
- s := server.NewMCPServer(
- ServerName+"-"+set,
- ServerVersion,
- server.WithToolCapabilities(false),
- server.WithInputSchemaValidation(),
- server.WithToolHandlerMiddleware(kit.Middleware(log, maxConcurrency)),
- )
- for _, t := range list {
- t.Register(s)
- }
- return s, nil
- }
|