From c419d8ce1d0168544378169bff9f6d205701c544 Mon Sep 17 00:00:00 2001 From: thibaud-leclere Date: Tue, 12 May 2026 09:58:19 +0200 Subject: [PATCH] feat: wire MCP server with bootstrap CLI Co-Authored-By: Claude Sonnet 4.6 --- cmd/xdebug-mcp/main.go | 17 +++++++++++++++++ internal/app/app.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 cmd/xdebug-mcp/main.go create mode 100644 internal/app/app.go diff --git a/cmd/xdebug-mcp/main.go b/cmd/xdebug-mcp/main.go new file mode 100644 index 0000000..a02ad62 --- /dev/null +++ b/cmd/xdebug-mcp/main.go @@ -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) + } +} diff --git a/internal/app/app.go b/internal/app/app.go new file mode 100644 index 0000000..38744ff --- /dev/null +++ b/internal/app/app.go @@ -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) +}