feat: wire MCP server with bootstrap CLI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
thibaud-leclere 2026-05-12 09:58:19 +02:00
parent 3943bfb8cc
commit c419d8ce1d
2 changed files with 53 additions and 0 deletions

17
cmd/xdebug-mcp/main.go Normal file
View file

@ -0,0 +1,17 @@
package main
import (
"context"
"log"
"os"
"forge.lclr.dev/AI/xdebug-mcp/internal/app"
)
var version = "dev"
func main() {
if err := app.Run(context.Background(), os.Args[1:], version); err != nil {
log.Fatal(err)
}
}

36
internal/app/app.go Normal file
View file

@ -0,0 +1,36 @@
package app
import (
"context"
"github.com/mark3labs/mcp-go/server"
"forge.lclr.dev/AI/mcp-framework/bootstrap"
"forge.lclr.dev/AI/xdebug-mcp/internal/cache"
"forge.lclr.dev/AI/xdebug-mcp/internal/tools"
"forge.lclr.dev/AI/xdebug-mcp/mcpgen"
)
func Run(ctx context.Context, args []string, version string) error {
c := cache.New(cache.DefaultCapacity)
return bootstrap.Run(ctx, bootstrap.Options{
BinaryName: mcpgen.BinaryName,
Description: mcpgen.DefaultDescription,
Version: version,
Args: args,
Hooks: bootstrap.Hooks{
MCP: func(ctx context.Context, inv bootstrap.Invocation) error {
return runMCP(c, version)
},
},
})
}
func runMCP(c *cache.Cache, version string) error {
s := server.NewMCPServer(mcpgen.BinaryName, version)
s.AddTool(tools.AnalyzeTool(), tools.AnalyzeHandler(c))
s.AddTool(tools.CallersTool(), tools.CallersHandler(c))
s.AddTool(tools.CalleesTool(), tools.CalleesHandler(c))
return server.ServeStdio(s)
}