32 lines
810 B
Go
32 lines
810 B
Go
|
package mcpTool
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"github.com/mark3labs/mcp-go/mcp"
|
|||
|
"github.com/mark3labs/mcp-go/server"
|
|||
|
)
|
|||
|
|
|||
|
// McpTool 定义了MCP工具必须实现的接口
|
|||
|
type McpTool interface {
|
|||
|
// Handle 返回工具调用信息
|
|||
|
Handle(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)
|
|||
|
// New 返回工具注册信息
|
|||
|
New() mcp.Tool
|
|||
|
}
|
|||
|
|
|||
|
// 工具注册表
|
|||
|
var toolRegister = make(map[string]McpTool)
|
|||
|
|
|||
|
// RegisterTool 供工具在init时调用,将自己注册到工具注册表中
|
|||
|
func RegisterTool(tool McpTool) {
|
|||
|
mcpTool := tool.New()
|
|||
|
toolRegister[mcpTool.Name] = tool
|
|||
|
}
|
|||
|
|
|||
|
// RegisterAllTools 将所有注册的工具注册到MCP服务中
|
|||
|
func RegisterAllTools(mcpServer *server.MCPServer) {
|
|||
|
for _, tool := range toolRegister {
|
|||
|
mcpServer.AddTool(tool.New(), tool.Handle)
|
|||
|
}
|
|||
|
}
|