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)
|
||
}
|
||
}
|