feat: wire MCP server with bootstrap CLI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3943bfb8cc
commit
c419d8ce1d
2 changed files with 53 additions and 0 deletions
17
cmd/xdebug-mcp/main.go
Normal file
17
cmd/xdebug-mcp/main.go
Normal 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
36
internal/app/app.go
Normal 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)
|
||||
}
|
||||
Loading…
Reference in a new issue