| package main | |
| import ( | |
| "fmt" | |
| "os" | |
| "strings" | |
| "github.com/pinchtab/pinchtab/internal/config" | |
| "github.com/pinchtab/pinchtab/internal/mcp" | |
| "github.com/spf13/cobra" | |
| ) | |
| var mcpCmd = &cobra.Command{ | |
| Use: "mcp", | |
| Short: "Start the MCP stdio server", | |
| Long: "Start the Model Context Protocol stdio server and proxy browser actions to a running PinchTab instance.", | |
| Run: func(cmd *cobra.Command, args []string) { | |
| cfg := config.Load() | |
| runMCP(cfg) | |
| }, | |
| } | |
| func init() { | |
| mcpCmd.GroupID = "primary" | |
| rootCmd.AddCommand(mcpCmd) | |
| } | |
| func runMCP(cfg *config.RuntimeConfig) { | |
| // Default: http://127.0.0.1:{port} | |
| port := cfg.Port | |
| if port == "" { | |
| port = "9867" | |
| } | |
| baseURL := "http://127.0.0.1:" + port | |
| // --server flag overrides | |
| if serverURL != "" { | |
| baseURL = strings.TrimRight(serverURL, "/") | |
| } | |
| // Token from config, env var overrides | |
| token := cfg.Token | |
| if envToken := os.Getenv("PINCHTAB_TOKEN"); envToken != "" { | |
| token = envToken | |
| } | |
| mcp.Version = version | |
| if err := mcp.Serve(baseURL, token); err != nil { | |
| fmt.Fprintf(os.Stderr, "mcp server error: %v\n", err) | |
| os.Exit(1) | |
| } | |
| } | |