- cmd/amcs-cli: new CLI tool for human/AI MCP tool access - amcs-cli tools: list all tools from remote MCP server - amcs-cli call <tool> --arg k=v: invoke a tool, print JSON/YAML result - amcs-cli stdio: stdio→HTTP MCP bridge for AI clients - Config: ~/.config/amcs/config.yaml, AMCS_URL/AMCS_TOKEN env vars, --server/--token flags - Token never logged in errors - Makefile: add build-cli target Closes #18
39 lines
779 B
Go
39 lines
779 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"text/tabwriter"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var toolsCmd = &cobra.Command{
|
|
Use: "tools",
|
|
Short: "List tools available on the remote AMCS server",
|
|
RunE: func(cmd *cobra.Command, _ []string) error {
|
|
session, err := connectRemote(cmd.Context())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer func() { _ = session.Close() }()
|
|
|
|
res, err := session.ListTools(cmd.Context(), nil)
|
|
if err != nil {
|
|
return fmt.Errorf("list tools: %w", err)
|
|
}
|
|
|
|
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
|
|
fmt.Fprintln(w, "NAME\tDESCRIPTION")
|
|
for _, tool := range res.Tools {
|
|
fmt.Fprintf(w, "%s\t%s\n", tool.Name, strings.TrimSpace(tool.Description))
|
|
}
|
|
return w.Flush()
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(toolsCmd)
|
|
}
|