--- name: mcp-cli description: Interface for MCP (Model Context Protocol) servers via CLI. Use when you need to interact with external tools, APIs, or data sources through MCP servers. --- # MCP-CLI Access MCP servers through the command line. MCP enables interaction with external systems like GitHub, filesystems, databases, and APIs. ## Commands | Command | Output | |---------|--------| | `mcp-cli` | List all servers and tools | | `mcp-cli info ` | Show server tools and parameters | | `mcp-cli info ` | Get tool JSON schema | | `mcp-cli grep ""` | Search tools by name | | `mcp-cli call ` | Call tool (reads JSON from stdin if no args) | | `mcp-cli call ''` | Call tool with arguments | **Both formats work:** ` ` or `/` ## Workflow 1. **Discover**: `mcp-cli` → see available servers 2. **Explore**: `mcp-cli info ` → see tools with parameters 3. **Inspect**: `mcp-cli info ` → get full JSON schema 4. **Execute**: `mcp-cli call ''` → run with arguments ## Examples ```bash # List all servers mcp-cli # With descriptions mcp-cli -d # See server tools mcp-cli info filesystem # Get tool schema (both formats work) mcp-cli info filesystem read_file mcp-cli info filesystem/read_file # Call tool mcp-cli call filesystem read_file '{"path": "./README.md"}' # Pipe from stdin (no '-' needed!) cat args.json | mcp-cli call filesystem read_file # Search for tools mcp-cli grep "*file*" # Output is raw text (pipe-friendly) mcp-cli call filesystem read_file '{"path": "./file"}' | head -10 ``` ## Advanced Chaining ```bash # Chain: search files → read first match mcp-cli call filesystem search_files '{"path": ".", "pattern": "*.md"}' \ | head -1 \ | xargs -I {} mcp-cli call filesystem read_file '{"path": "{}"}' # Loop: process multiple files mcp-cli call filesystem list_directory '{"path": "./src"}' \ | while read f; do mcp-cli call filesystem read_file "{\"path\": \"$f\"}"; done # Conditional: check before reading mcp-cli call filesystem list_directory '{"path": "."}' \ | grep -q "README" \ && mcp-cli call filesystem read_file '{"path": "./README.md"}' # Multi-server aggregation { mcp-cli call github search_repositories '{"query": "mcp", "per_page": 3}' mcp-cli call filesystem list_directory '{"path": "."}' } # Save to file mcp-cli call github get_file_contents '{"owner": "x", "repo": "y", "path": "z"}' > output.txt ``` **Note:** `call` outputs raw text content directly (no jq needed for text extraction) ## Options | Flag | Purpose | |------|---------| | `-d` | Include descriptions | | `-c ` | Specify config file | ## Common Errors | Wrong Command | Error | Fix | |---------------|-------|-----| | `mcp-cli server tool` | AMBIGUOUS_COMMAND | Use `call server tool` or `info server tool` | | `mcp-cli run server tool` | UNKNOWN_SUBCOMMAND | Use `call` instead of `run` | | `mcp-cli list` | UNKNOWN_SUBCOMMAND | Use `info` instead of `list` | | `mcp-cli call server` | MISSING_ARGUMENT | Add tool name | | `mcp-cli call server tool {bad}` | INVALID_JSON | Use valid JSON with quotes | ## Exit Codes - `0`: Success - `1`: Client error (bad args, missing config) - `2`: Server error (tool failed) - `3`: Network error