MCP Server

/app/cmd/mcp.go (1.1 KB)

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package cmd

import (
"context"

"github.com/muesli/coral"
"github.com/pkg/errors"
"go.uber.org/zap"

"{{{ .Package }}}/app"
"{{{ .Package }}}/app/lib/log"
"{{{ .Package }}}/app/lib/mcpserver"
"{{{ .Package }}}/app/util"
)

func mcpCmd() *coral.Command {
f := func(*coral.Command, []string) error { return runMCP(rootCtx) }
ret := &coral.Command{Use: "mcp", Short: "Handles Model Context Protocol requests", RunE: f}
return ret
}

func runMCP(ctx context.Context) error {
// override logging
l, err := log.InitDevLogging(log.GetLevel(zap.FatalLevel))
if err != nil {
return errors.Wrap(err, "error initializing logging")
}
logger := l.Sugar()
util.RootLogger = logger

if _, err = initIfNeeded(ctx); err != nil {
return errors.Wrap(err, "error initializing application")
}
st, err := app.Bootstrap(ctx, _buildInfo, _flags.ConfigDir, _flags.Port, false, logger)
if err != nil {
return err
}
mcp, err := mcpserver.NewServer(ctx, st, logger)
if err != nil {
return err
}
if err := mcp.ServeCLI(ctx); err != nil {
return err
}
return nil
}