123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package mcp
- import (
- "context"
- "sync"
- "github.com/gin-gonic/gin"
- "github.com/mark3labs/mcp-go/mcp"
- "github.com/mark3labs/mcp-go/server"
- )
- var (
- mcpServer = server.NewMCPServer(
- "Nginx",
- "1.0.0",
- server.WithResourceCapabilities(true, true),
- server.WithLogging(),
- server.WithRecovery(),
- )
- sseServer = server.NewSSEServer(
- mcpServer,
- server.WithSSEEndpoint("/mcp"),
- server.WithMessageEndpoint("/mcp_message"),
- )
- )
- const (
- MimeTypeJSON = "application/json"
- MimeTypeText = "text/plain"
- )
- type Resource struct {
- Resource mcp.Resource
- Handler func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error)
- }
- type Tool struct {
- Tool mcp.Tool
- Handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)
- }
- var (
- tools = []Tool{}
- toolMutex sync.Mutex
- )
- func AddTool(tool mcp.Tool, handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)) {
- toolMutex.Lock()
- defer toolMutex.Unlock()
- tools = append(tools, Tool{Tool: tool, Handler: handler})
- }
- func ServeHTTP(c *gin.Context) {
- sseServer.ServeHTTP(c.Writer, c.Request)
- }
- func Init() {
- for _, tool := range tools {
- mcpServer.AddTool(tool.Tool, tool.Handler)
- }
- }
|