feat: add some useful skills
This commit is contained in:
111
skills/mcp-cli/SKILL.md
Normal file
111
skills/mcp-cli/SKILL.md
Normal file
@@ -0,0 +1,111 @@
|
||||
---
|
||||
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 <server>` | Show server tools and parameters |
|
||||
| `mcp-cli info <server> <tool>` | Get tool JSON schema |
|
||||
| `mcp-cli grep "<pattern>"` | Search tools by name |
|
||||
| `mcp-cli call <server> <tool>` | Call tool (reads JSON from stdin if no args) |
|
||||
| `mcp-cli call <server> <tool> '<json>'` | Call tool with arguments |
|
||||
|
||||
**Both formats work:** `<server> <tool>` or `<server>/<tool>`
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Discover**: `mcp-cli` → see available servers
|
||||
2. **Explore**: `mcp-cli info <server>` → see tools with parameters
|
||||
3. **Inspect**: `mcp-cli info <server> <tool>` → get full JSON schema
|
||||
4. **Execute**: `mcp-cli call <server> <tool> '<json>'` → 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 <path>` | 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
|
||||
|
||||
Reference in New Issue
Block a user