Universal MCP Client
Connect to any MCP server with progressive disclosure - load tool schemas on-demand instead of dumping thousands of tokens into context upfront.
Skill Location
This skill is located at: .claude/skills/mcp-client/
Script path: .claude/skills/mcp-client/scripts/mcp_client.py
Configuration
The script looks for config in this order:
- •
MCP_CONFIG_PATHenv var (custom path) - •
references/mcp-config.json(this skill's config - recommended) - •
.mcp.jsonin project root - •
~/.claude.json
Your config file: .claude/skills/mcp-client/references/mcp-config.json
Edit this file to add your API keys. The example file (example-mcp-config.json) is kept as a reference template.
If the user hasn't provided their Zapier API key yet, ask them for it.
Running Commands
All commands use the script at .claude/skills/mcp-client/scripts/mcp_client.py:
# List configured servers
python .claude/skills/mcp-client/scripts/mcp_client.py servers
# List tools from a server
python .claude/skills/mcp-client/scripts/mcp_client.py tools <server_name>
# Call a tool
python .claude/skills/mcp-client/scripts/mcp_client.py call <server> <tool> '{"arg": "value"}'
Workflow
- •Check config exists - Run
serverscommand. If error, create.mcp.json - •List servers - See what MCP servers are configured
- •List tools - Get tool schemas from a specific server
- •Call tool - Execute a tool with arguments
Commands Reference
| Command | Description |
|---|---|
servers | List all configured MCP servers |
tools <server> | List tools with full parameter schemas |
call <server> <tool> '<json>' | Execute a tool with arguments |
Example: Zapier
# 1. List servers to confirm Zapier is configured
python .claude/skills/mcp-client/scripts/mcp_client.py servers
# 2. List Zapier tools
python .claude/skills/mcp-client/scripts/mcp_client.py tools zapier
# 3. Call a Zapier tool
python .claude/skills/mcp-client/scripts/mcp_client.py call zapier <tool_name> '{"param": "value"}'
Example: Sequential Thinking
# 1. List tools
python .claude/skills/mcp-client/scripts/mcp_client.py tools sequential-thinking
# 2. Use sequential thinking
python .claude/skills/mcp-client/scripts/mcp_client.py call sequential-thinking sequentialthinking '{"thought": "Breaking down the problem...", "thoughtNumber": 1, "totalThoughts": 5, "nextThoughtNeeded": true}'
Config Format
Config file format (references/mcp-config.json):
{
"mcpServers": {
"zapier": {
"url": "https://mcp.zapier.com/api/v1/connect",
"api_key": "your-api-key"
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
Transport detection:
- •
url+api_key→ FastMCP with Bearer auth (Zapier) - •
command+args→ stdio (local servers like sequential-thinking) - •
urlending in/sse→ SSE transport - •
urlending in/mcp→ Streamable HTTP
Error Handling
Errors return JSON:
{"error": "message", "type": "configuration|validation|connection"}
- •
configuration- Config file not found. Create.mcp.json - •
validation- Invalid server or tool name - •
connection- Failed to connect to server
Dependencies
pip install mcp fastmcp
References
- •
references/example-mcp-config.json- Template config file - •
references/mcp-servers.md- Common server configurations - •
references/python-mcp-sdk.md- Python SDK documentation