serve.go

 1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
 2//
 3// SPDX-License-Identifier: LicenseRef-MutuaL-1.2
 4
 5package main
 6
 7import (
 8	"github.com/spf13/cobra"
 9
10	"git.secluded.site/sb-mcp/internal/config"
11	"git.secluded.site/sb-mcp/internal/server"
12)
13
14func serveCmd() *cobra.Command {
15	var httpAddr string
16
17	cmd := &cobra.Command{
18		Use:   "serve",
19		Short: "Start the MCP server",
20		Long:  "Start the SilverBullet MCP server. Uses stdio transport by default, or streamable HTTP with --http.",
21		RunE: func(cmd *cobra.Command, args []string) error {
22			cfg, err := config.Load()
23			if err != nil {
24				return err
25			}
26			cfg.HTTPAddr = httpAddr
27
28			return server.Run(cmd.Context(), cfg)
29		},
30	}
31
32	cmd.Flags().StringVar(&httpAddr, "http", "", "listen address for streamable HTTP transport (e.g. :3001); default is stdio")
33
34	return cmd
35}