Documentation
¶
Overview ¶
Package commands implements individual commands for the MCP CLI.
Package commands implements individual commands for the MCP CLI.
Index ¶
- Constants
- Variables
- func AliasCmd() *cobra.Command
- func CallCmd() *cobra.Command
- func ConfigsCmd() *cobra.Command
- func ConvertJSONToMap(jsonData any) map[string]any
- func ConvertJSONToSlice(jsonData any) []any
- func FormatAndPrintResponse(cmd *cobra.Command, resp any, err error) error
- func GetPromptCmd() *cobra.Command
- func GuardCmd() *cobra.Command
- func IsHTTP(str string) bool
- func IsValidFormat(format string) bool
- func LoadProxyConfig() (map[string]map[string]string, error)
- func MockCmd() *cobra.Command
- func NewCmd() *cobra.Command
- func ParseCommandString(cmdStr string) []string
- func ProcessFlags(args []string) []string
- func PromptsCmd() *cobra.Command
- func ProxyCmd() *cobra.Command
- func ProxyStartCmd() *cobra.Command
- func ProxyToolCmd() *cobra.Command
- func ReadResourceCmd() *cobra.Command
- func ResourcesCmd() *cobra.Command
- func RootCmd() *cobra.Command
- func SaveProxyConfig(config map[string]map[string]string) error
- func ShellCmd() *cobra.Command
- func ToolsCmd() *cobra.Command
- func VersionCmd() *cobra.Command
- func WebCmd() *cobra.Command
- type ConfigAlias
- type ConfigsFile
- type MCPClientCache
- type MockTransport
- func (m *MockTransport) Close() error
- func (m *MockTransport) SendNotification(_ context.Context, _ mcp.JSONRPCNotification) error
- func (m *MockTransport) SendRequest(_ context.Context, request transport.JSONRPCRequest) (*transport.JSONRPCResponse, error)
- func (m *MockTransport) SetNotificationHandler(_ func(notification mcp.JSONRPCNotification))
- func (m *MockTransport) Start(_ context.Context) error
- type ServerConfig
Constants ¶
const ( FlagAllow = "--allow" FlagAllowShort = "-a" FlagDeny = "--deny" FlagDenyShort = "-d" )
Guard flags.
const ( FlagFormat = "--format" FlagFormatShort = "-f" FlagParams = "--params" FlagParamsShort = "-p" FlagHelp = "--help" FlagHelpShort = "-h" FlagServerLogs = "--server-logs" )
flags.
const ( EntityTypeTool = "tool" EntityTypePrompt = "prompt" EntityTypeRes = "resource" )
entity types.
Variables ¶
var ( // FormatOption is the format option for the command, valid values are "table", "json", and // "pretty". // Default is "table". FormatOption = "table" // ParamsString is the params for the command. ParamsString string // ShowServerLogs is a flag to show server logs. ShowServerLogs bool )
var ConfigFileOption string
ConfigFileOption stores the path to the configuration file.
var CreateClientFunc = func(args []string, _ ...client.ClientOption) (*client.Client, error) { if len(args) == 0 { return nil, ErrCommandRequired } if len(args) == 1 { server, found := alias.GetServerCommand(args[0]) if found { args = ParseCommandString(server) } } var c *client.Client var err error if len(args) == 1 && IsHTTP(args[0]) { c, err = client.NewSSEMCPClient(args[0]) if err != nil { return nil, err } err = c.Start(context.Background()) } else { c, err = client.NewStdioMCPClient(args[0], nil, args[1:]...) } if err != nil { return nil, err } stdErr, ok := client.GetStderr(c) if ok && ShowServerLogs { go func() { scanner := bufio.NewScanner(stdErr) for scanner.Scan() { fmt.Printf("[>] %s\n", scanner.Text()) } }() } done := make(chan error, 1) go func() { _, err := c.Initialize(context.Background(), mcp.InitializeRequest{}) done <- err }() select { case err := <-done: if err != nil { return nil, fmt.Errorf("init error: %w", err) } case <-time.After(10 * time.Second): return nil, fmt.Errorf("initialization timed out") } return c, nil }
CreateClientFunc is the function used to create MCP clients. This can be replaced in tests to use a mock transport.
var EnvOption string
EnvOption stores the environment variables.
var (
ErrCommandRequired = fmt.Errorf("command to execute is required when using stdio transport")
)
sentinel errors.
var HeadersOption string
HeadersOption stores the headers for URL-based servers.
var TemplatesPath = getHomeDirectory() + "/.mcpt/templates"
TemplatesPath information placeholder.
var URLOption string
URLOption stores the URL for URL-based servers.
var Version = "dev"
Version information placeholder.
Functions ¶
func ConfigsCmd ¶ added in v0.5.0
ConfigsCmd creates the configs command.
func ConvertJSONToMap ¶ added in v0.7.0
ConvertJSONToMap converts a JSON serialized object to a map of strings to any type.
func ConvertJSONToSlice ¶ added in v0.7.0
ConvertJSONToSlice converts a JSON serialized object to a slice of any type.
func FormatAndPrintResponse ¶
FormatAndPrintResponse formats and prints an MCP response in the format specified by FormatOption.
func GuardCmd ¶ added in v0.6.0
GuardCmd creates the guard command to filter tools, prompts, and resources.
func IsValidFormat ¶ added in v0.4.2
IsValidFormat returns true if the format is valid.
func LoadProxyConfig ¶
LoadProxyConfig loads the proxy configuration from the config file.
func ParseCommandString ¶ added in v0.7.0
ParseCommandString splits a command string into separate arguments, respecting spaces as argument separators. Note: This is a simple implementation that doesn't handle quotes or escapes.
func ProcessFlags ¶
ProcessFlags processes command line flags, sets the format option, and returns the remaining arguments. Supported format options: json, pretty, and table.
For example, if the input arguments are ["tools", "--format", "pretty", "npx", "-y", "@modelcontextprotocol/server-filesystem", "~"], it would return ["npx", "-y", "@modelcontextprotocol/server-filesystem", "~"] and set the format option to "pretty".
func ProxyStartCmd ¶
ProxyStartCmd creates the proxy start command.
func ReadResourceCmd ¶
ReadResourceCmd creates the read-resource command.
func SaveProxyConfig ¶
SaveProxyConfig saves the proxy configuration to the config file.
Types ¶
type ConfigAlias ¶ added in v0.5.0
type ConfigAlias struct { Path string `json:"path"` JSONPath string `json:"jsonPath"` Source string `json:"source,omitempty"` }
ConfigAlias represents a configuration alias.
type ConfigsFile ¶ added in v0.5.0
type ConfigsFile struct {
Aliases map[string]ConfigAlias `json:"aliases"`
}
ConfigsFile represents the structure of the configs file.
type MCPClientCache ¶ added in v0.6.5
type MCPClientCache struct {
// contains filtered or unexported fields
}
MCPClientCache provides thread-safe access to the MCP client.
type MockTransport ¶
MockTransport implements the transport.Transport interface for testing.
func (*MockTransport) Close ¶ added in v0.7.0
func (m *MockTransport) Close() error
Close is a no-op for the mock transport.
func (*MockTransport) SendNotification ¶ added in v0.7.0
func (m *MockTransport) SendNotification(_ context.Context, _ mcp.JSONRPCNotification) error
SendNotification is a no-op for the mock transport.
func (*MockTransport) SendRequest ¶ added in v0.7.0
func (m *MockTransport) SendRequest(_ context.Context, request transport.JSONRPCRequest) (*transport.JSONRPCResponse, error)
SendRequest overrides the default implementation of the transport.SendRequest method.
func (*MockTransport) SetNotificationHandler ¶ added in v0.7.0
func (m *MockTransport) SetNotificationHandler(_ func(notification mcp.JSONRPCNotification))
SetNotificationHandler is a no-op for the mock transport.
type ServerConfig ¶ added in v0.4.1
type ServerConfig struct { Headers map[string]string `json:"headers,omitempty"` Env map[string]string `json:"env,omitempty"` Config map[string]interface{} `json:"config,omitempty"` Source string `json:"source"` Type string `json:"type,omitempty"` Command string `json:"command,omitempty"` URL string `json:"url,omitempty"` Path string `json:"path,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Args []string `json:"args,omitempty"` }
ServerConfig represents a configuration for a server.