mcp-cli
Original:🇺🇸 English
Translated
Use MCP servers on-demand via the mcp CLI tool - discover tools, resources, and prompts without polluting context with pre-loaded MCP integrations
8installs
Sourceobra/superpowers-lab
Added on
NPX Install
npx skill4agent add obra/superpowers-lab mcp-cliTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →MCP CLI: On-Demand MCP Server Usage
Use the CLI tool to dynamically discover and invoke MCP server capabilities without pre-configuring them as permanent integrations.
mcpWhen to Use This Skill
Use this skill when you need to:
- Explore an MCP server's capabilities before deciding to use it
- Make one-off calls to an MCP server without permanent integration
- Access MCP functionality without polluting the context window
- Test or debug MCP servers
- Use MCP servers that aren't pre-configured
Prerequisites
The CLI must be installed at . If not present:
mcp~/.local/bin/mcpbash
# Clone and build
cd /tmp && git clone --depth 1 https://github.com/f/mcptools.git
cd mcptools && CGO_ENABLED=0 go build -o ~/.local/bin/mcp ./cmd/mcptoolsAlways ensure PATH includes the binary:
bash
export PATH="$HOME/.local/bin:$PATH"Discovery Workflow
Step 1: Discover Available Tools
bash
mcp tools <server-command>Examples:
bash
# Filesystem server
mcp tools npx -y @modelcontextprotocol/server-filesystem /path/to/allow
# Memory/knowledge graph server
mcp tools npx -y @modelcontextprotocol/server-memory
# GitHub server (requires token)
mcp tools docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
# HTTP-based server
mcp tools https://example.com/mcpStep 2: Discover Resources (if supported)
bash
mcp resources <server-command>Resources are data sources the server exposes (files, database entries, etc.).
Step 3: Discover Prompts (if supported)
bash
mcp prompts <server-command>Prompts are pre-defined prompt templates the server provides.
Step 4: Get Detailed Info (JSON format)
bash
# For full schema details including parameter types
mcp tools --format json <server-command>
mcp tools --format pretty <server-command>Making Tool Calls
Basic Syntax
bash
mcp call <tool_name> --params '<json>' <server-command>Examples
Read a file:
bash
mcp call read_file --params '{"path": "/tmp/example.txt"}' \
npx -y @modelcontextprotocol/server-filesystem /tmpWrite a file:
bash
mcp call write_file --params '{"path": "/tmp/test.txt", "content": "Hello world"}' \
npx -y @modelcontextprotocol/server-filesystem /tmpList directory:
bash
mcp call list_directory --params '{"path": "/tmp"}' \
npx -y @modelcontextprotocol/server-filesystem /tmpCreate entities (memory server):
bash
mcp call create_entities --params '{"entities": [{"name": "Project", "entityType": "Software", "observations": ["Uses TypeScript"]}]}' \
npx -y @modelcontextprotocol/server-memorySearch (memory server):
bash
mcp call search_nodes --params '{"query": "TypeScript"}' \
npx -y @modelcontextprotocol/server-memoryComplex Parameters
For nested objects and arrays, ensure valid JSON:
bash
mcp call edit_file --params '{
"path": "/tmp/file.txt",
"edits": [
{"oldText": "foo", "newText": "bar"},
{"oldText": "baz", "newText": "qux"}
]
}' npx -y @modelcontextprotocol/server-filesystem /tmpOutput Formats
bash
# Table (default, human-readable)
mcp call <tool> --params '{}' <server>
# JSON (for parsing)
mcp call <tool> --params '{}' -f json <server>
# Pretty JSON (readable JSON)
mcp call <tool> --params '{}' -f pretty <server>Reading Resources
bash
# List available resources
mcp resources <server-command>
# Read a specific resource
mcp read-resource <resource-uri> <server-command>
# Alternative syntax
mcp call resource:<resource-uri> <server-command>Using Prompts
bash
# List available prompts
mcp prompts <server-command>
# Get a prompt (may require arguments)
mcp get-prompt <prompt-name> <server-command>
# With parameters
mcp get-prompt <prompt-name> --params '{"arg": "value"}' <server-command>Server Aliases (for repeated use)
If using a server frequently during a session:
bash
# Create alias
mcp alias add fs npx -y @modelcontextprotocol/server-filesystem /home/user
# Use alias
mcp tools fs
mcp call read_file --params '{"path": "README.md"}' fs
# List aliases
mcp alias list
# Remove when done
mcp alias remove fsAliases are stored in .
~/.mcpt/aliases.jsonAuthentication
HTTP Basic Auth
bash
mcp tools --auth-user "username:password" https://api.example.com/mcpBearer Token
bash
mcp tools --auth-header "Bearer your-token-here" https://api.example.com/mcpEnvironment Variables (for Docker-based servers)
bash
mcp tools docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN="$GITHUB_TOKEN" \
ghcr.io/github/github-mcp-serverTransport Types
Stdio (default for npx/node commands)
bash
mcp tools npx -y @modelcontextprotocol/server-filesystem /tmpHTTP (auto-detected for http/https URLs)
bash
mcp tools https://example.com/mcpSSE (Server-Sent Events)
bash
mcp tools http://localhost:3001/sse
# Or explicitly:
mcp tools --transport sse http://localhost:3001Common MCP Servers
Filesystem
bash
# Allow access to specific directory
mcp tools npx -y @modelcontextprotocol/server-filesystem /path/to/allowMemory (Knowledge Graph)
bash
mcp tools npx -y @modelcontextprotocol/server-memoryGitHub
bash
export GITHUB_PERSONAL_ACCESS_TOKEN="your-token"
mcp tools docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-serverBrave Search
bash
export BRAVE_API_KEY="your-key"
mcp tools npx -y @anthropic/mcp-server-brave-searchPuppeteer (Browser Automation)
bash
mcp tools npx -y @anthropic/mcp-server-puppeteerBest Practices
1. Always Discover First
Before calling tools, run to understand what's available and the exact parameter schema.
mcp tools2. Use JSON Format for Parsing
When you need to process results programmatically:
bash
mcp call <tool> --params '{}' -f json <server> | jq '.field'3. Validate Parameters
The table output shows parameter signatures. Match them exactly:
- = string
param:str - = number
param:num - = boolean
param:bool - = array of strings
param:str[] - = optional parameter
[param:str]
4. Handle Errors Gracefully
Tool calls may fail. Check exit codes and stderr:
bash
if ! result=$(mcp call tool --params '{}' server 2>&1); then
echo "Error: $result"
fi5. Use Aliases for Multi-Step Operations
If making several calls to the same server:
bash
mcp alias add tmp-server npx -y @modelcontextprotocol/server-filesystem /tmp
mcp call list_directory --params '{"path": "/tmp"}' tmp-server
mcp call read_file --params '{"path": "/tmp/file.txt"}' tmp-server
mcp alias remove tmp-server6. Restrict Capabilities with Guard
For safety, limit what tools are accessible:
bash
# Only allow read operations
mcp guard --allow 'tools:read_*,list_*' --deny 'tools:write_*,delete_*' \
npx -y @modelcontextprotocol/server-filesystem /homeDebugging
View Server Logs
bash
mcp tools --server-logs <server-command>Check Alias Configuration
bash
cat ~/.mcpt/aliases.jsonVerbose Output
Use for detailed JSON output to debug parameter issues.
--format prettyQuick Reference
| Action | Command |
|---|---|
| List tools | |
| List resources | |
| List prompts | |
| Call tool | |
| Read resource | |
| Get prompt | |
| Add alias | |
| Remove alias | |
| JSON output | Add |
Example: Complete Workflow
bash
# 1. Discover what's available
mcp tools npx -y @modelcontextprotocol/server-filesystem /home/user/project
# 2. Check for resources
mcp resources npx -y @modelcontextprotocol/server-filesystem /home/user/project
# 3. Create alias for convenience
mcp alias add proj npx -y @modelcontextprotocol/server-filesystem /home/user/project
# 4. Explore directory structure
mcp call directory_tree --params '{"path": "/home/user/project"}' proj
# 5. Read specific files
mcp call read_file --params '{"path": "/home/user/project/README.md"}' proj
# 6. Search for patterns
mcp call search_files --params '{"path": "/home/user/project", "pattern": "**/*.ts"}' proj
# 7. Clean up alias
mcp alias remove projTroubleshooting
"command not found: mcp"
Ensure PATH is set:
export PATH="$HOME/.local/bin:$PATH"JSON parse errors
- Escape special characters properly
- Avoid shell expansion issues by using single quotes around JSON
- For complex JSON, write to a temp file and use
--params "$(cat params.json)"
Server timeout
Some servers take time to start. The mcp CLI waits for initialization automatically.
Permission denied
For filesystem server, ensure the allowed directory path is correct and accessible.