xdebug-mcp/internal/app/app.go
thibaud-leclere 6246b88bd5 refactor: bypass bootstrap, expose only mcp and version commands
The framework's help listed setup/login/config/update commands that are
irrelevant for xdebug-mcp (no auth or config needed). Replace bootstrap.Run
with a minimal dispatcher that only exposes the commands that matter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 10:18:35 +02:00

52 lines
1.4 KiB
Go

package app
import (
"context"
"fmt"
"io"
"os"
"strings"
"github.com/mark3labs/mcp-go/server"
"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(_ context.Context, args []string, version string) error {
c := cache.New(cache.DefaultCapacity)
return dispatch(args, version, c, os.Stdout)
}
func dispatch(args []string, version string, c *cache.Cache, stdout io.Writer) error {
cmd := "mcp"
if len(args) > 0 {
cmd = strings.TrimSpace(args[0])
}
switch cmd {
case "", "mcp":
return runMCP(c, version)
case "version":
_, err := fmt.Fprintln(stdout, version)
return err
case "help", "-h", "--help":
_, err := fmt.Fprintf(stdout,
"%s\n\nUsage:\n %s [command]\n\nCommands:\n mcp Run the MCP server (default)\n version Print the version\n\nOptions:\n -h, --help Show this help\n",
mcpgen.DefaultDescription,
mcpgen.BinaryName,
)
return err
default:
return fmt.Errorf("unknown command %q — run '%s --help' for usage", cmd, mcpgen.BinaryName)
}
}
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)
}