Use when interacting with MCP servers on-demand via the mcp CLI tool — discover tools, resources, and prompts without polluting context with pre-loaded integrations
Use the mcp CLI tool to dynamically discover and invoke MCP server capabilities without pre-configuring them as permanent integrations.
Use this skill when you need to:
The mcp CLI must be installed at ~/.local/bin/mcp. If not present:
# 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/mcptools
Always ensure PATH includes the binary:
export PATH="$HOME/.local/bin:$PATH"
mcp tools <server-command>
Examples:
# 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/mcp
mcp resources <server-command>
Resources are data sources the server exposes (files, database entries, etc.).
mcp prompts <server-command>
Prompts are pre-defined prompt templates the server provides.
# For full schema details including parameter types
mcp tools --format json <server-command>
mcp tools --format pretty <server-command>
mcp call <tool_name> --params '<json>' <server-command>
Read a file:
mcp call read_file --params '{"path": "/tmp/example.txt"}' \
npx -y @modelcontextprotocol/server-filesystem /tmp
Write a file:
mcp call write_file --params '{"path": "/tmp/test.txt", "content": "Hello world"}' \
npx -y @modelcontextprotocol/server-filesystem /tmp
List directory:
mcp call list_directory --params '{"path": "/tmp"}' \
npx -y @modelcontextprotocol/server-filesystem /tmp
Create entities (memory server):
mcp call create_entities --params '{"entities": [{"name": "Project", "entityType": "Software", "observations": ["Uses TypeScript"]}]}' \
npx -y @modelcontextprotocol/server-memory
Search (memory server):
mcp call search_nodes --params '{"query": "TypeScript"}' \
npx -y @modelcontextprotocol/server-memory
For nested objects and arrays, ensure valid JSON:
mcp call edit_file --params '{
"path": "/tmp/file.txt",
"edits": [
{"oldText": "foo", "newText": "bar"},
{"oldText": "baz", "newText": "qux"}
]
}' npx -y @modelcontextprotocol/server-filesystem /tmp
# 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>
# 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>
# 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>
If using a server frequently during a session:
# 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 fs
Aliases are stored in ~/.mcpt/aliases.json.
mcp tools --auth-user "username:password" https://api.example.com/mcp
mcp tools --auth-header "Bearer your-token-here" https://api.example.com/mcp
mcp tools docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN="$GITHUB_TOKEN" \
ghcr.io/github/github-mcp-server
mcp tools npx -y @modelcontextprotocol/server-filesystem /tmp
mcp tools https://example.com/mcp
mcp tools http://localhost:3001/sse
# Or explicitly:
mcp tools --transport sse http://localhost:3001
# Allow access to specific directory
mcp tools npx -y @modelcontextprotocol/server-filesystem /path/to/allow
mcp tools npx -y @modelcontextprotocol/server-memory
export GITHUB_PERSONAL_ACCESS_TOKEN="your-token"
mcp tools docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
export BRAVE_API_KEY="your-key"
mcp tools npx -y @anthropic/mcp-server-brave-search
mcp tools npx -y @anthropic/mcp-server-puppeteer
Before calling tools, run mcp tools to understand what's available and the exact parameter schema.
When you need to process results programmatically:
mcp call <tool> --params '{}' -f json <server> | jq '.field'
The table output shows parameter signatures. Match them exactly:
param:str = stringparam:num = numberparam:bool = booleanparam:str[] = array of strings[param:str] = optional parameterTool calls may fail. Check exit codes and stderr:
if ! result=$(mcp call tool --params '{}' server 2>&1); then
echo "Error: $result"
fi
If making several calls to the same server:
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-server
For safety, limit what tools are accessible:
# Only allow read operations
mcp guard --allow 'tools:read_*,list_*' --deny 'tools:write_*,delete_*' \
npx -y @modelcontextprotocol/server-filesystem /home
mcp tools --server-logs <server-command>
cat ~/.mcpt/aliases.json
Use --format pretty for detailed JSON output to debug parameter issues.
| Action | Command |
|---|---|
| List tools | mcp tools <server> |
| List resources | mcp resources <server> |
| List prompts | mcp prompts <server> |
| Call tool | mcp call <tool> --params '<json>' <server> |
| Read resource | mcp read-resource <uri> <server> |
| Get prompt | mcp get-prompt <name> <server> |
| Add alias | mcp alias add <name> <server-command> |
| Remove alias | mcp alias remove <name> |
| JSON output | Add -f json or -f pretty |
# 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 proj
Ensure PATH is set: export PATH="$HOME/.local/bin:$PATH"
--params "$(cat params.json)"Some servers take time to start. The mcp CLI waits for initialization automatically.
For filesystem server, ensure the allowed directory path is correct and accessible.