Agent skill
mcp-client
Universal MCP client for connecting to any MCP server. Bundle scripts/mcp-client.py with your skill to enable dynamic tool discovery and execution without context bloat. Use when creating skills that need MCP server access.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/mcp-client
SKILL.md
MCP Client
A universal client for connecting to MCP (Model Context Protocol) servers. This skill provides a reusable script that any other skill can bundle to access MCP servers dynamically.
Why Use This?
Instead of loading all MCP tool definitions into context (which bloats tokens), this pattern:
- Discovers tools on-demand - only load what you need
- Caches schemas - emit to
references/for progressive disclosure - Processes data locally - results flow through script, not context
- Saves 80-98% tokens - per Anthropic's code execution research
Quick Start
1. Copy the script to your skill
cp scripts/mcp-client.py /path/to/your-skill/scripts/
2. Discover available tools
# HTTP transport
python scripts/mcp-client.py list --url http://localhost:8080
# stdio transport (local server)
python scripts/mcp-client.py list --stdio "npx -y @modelcontextprotocol/server-github"
3. Cache tool schemas (one-time setup)
python scripts/mcp-client.py emit --url http://localhost:8080 > references/tools.md
4. Call tools at runtime
python scripts/mcp-client.py call \
--url http://localhost:8080 \
--tool create_issue \
--params '{"title": "Bug", "body": "Description"}'
Commands
| Command | Description |
|---|---|
list |
List available tools (use -v for full details) |
call |
Call a tool with parameters |
emit |
Generate documentation (--format markdown|json) |
resources |
List available resources |
prompts |
List available prompts |
Transport Options
| Option | Description |
|---|---|
--url, -u |
HTTP URL of MCP server |
--stdio, -s |
Command to start stdio MCP server |
--header, -H |
HTTP header (can repeat) |
Examples
Connect to GitHub MCP server
# Using stdio (local)
python scripts/mcp-client.py list \
--stdio "npx -y @modelcontextprotocol/server-github"
# Using HTTP (remote)
python scripts/mcp-client.py list \
--url https://mcp.example.com/github \
--header "Authorization: Bearer $TOKEN"
Call a tool with complex parameters
python scripts/mcp-client.py call \
--url http://localhost:8080 \
--tool search_issues \
--params '{
"query": "is:open label:bug",
"limit": 10,
"sort": "updated"
}'
Emit cached documentation
# Markdown (for references/)
python scripts/mcp-client.py emit --url http://localhost:8080 --format markdown
# JSON (for programmatic use)
python scripts/mcp-client.py emit --url http://localhost:8080 --format json
Creating a Domain Skill with MCP
Here's how to create a new skill that uses an MCP server:
1. Create skill structure
my-domain-skill/
├── SKILL.md
├── scripts/
│ └── mcp-client.py # Copy from this skill
└── references/
└── tools.md # Generated by emit
2. Write your SKILL.md
---
name: my-domain-skill
description: Does X using the Y MCP server
allowed-tools: Bash(python:*) Read
---
# My Domain Skill
## Setup
Ensure MCP server is running at http://localhost:8080
## Available Tools
See [references/tools.md](references/tools.md)
## Workflows
### Do something useful
1. List available items: `python scripts/mcp-client.py call --url ... --tool list_items`
2. Process results...
3. Generate cached tool documentation
cd my-domain-skill
python scripts/mcp-client.py emit --url http://localhost:8080 > references/tools.md
Now agents can read references/tools.md on-demand instead of loading all tool definitions upfront.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Agent reads SKILL.md (~100 tokens) │
│ Agent reads references/tools.md on-demand (if needed) │
│ Agent runs: python scripts/mcp-client.py call ... │
│ → Data flows through script, NOT context window │
└─────────────────────────────────────────────────────────────┘
↓
┌───────────────────────────────┐
│ scripts/mcp-client.py │
│ ──────────────────────── │
│ HTTP or stdio transport │
│ JSON-RPC over MCP protocol │
└───────────────────────────────┘
↓
┌───────────────────────────────┐
│ Any MCP Server │
│ (GitHub, Slack, custom...) │
└───────────────────────────────┘
Reference
See references/mcp-protocol.md for protocol details.
Didn't find tool you were looking for?