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>
52 lines
1.4 KiB
Go
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)
|
|
}
|