with one click
mcpcall
// Guide and template for wrapping an MCP server as a self-contained Claude Code skill with a Python wrapper script. Use before creating any MCP-backed skill.
// Guide and template for wrapping an MCP server as a self-contained Claude Code skill with a Python wrapper script. Use before creating any MCP-backed skill.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | mcpcall |
| disable-model-invocation | true |
| description | Guide and template for wrapping an MCP server as a self-contained Claude Code skill with a Python wrapper script. Use before creating any MCP-backed skill. |
Convert any MCP server into a self-contained Claude Code skill with a Python wrapper in scripts/mcpcall.py.
Each MCP skill bundles its own scripts/mcpcall.py with the server URL baked in. No shared dependency, no cross-skill references ā fully portable. Uses httpx (respects http_proxy/https_proxy) and MCP Streamable HTTP transport. Dependencies resolved by uv on first run via PEP 723 inline metadata.
The script is executable (chmod +x) with a #!/usr/bin/env -S uv run --script shebang, so it can be called directly without any prefix.
scripts/ subfolderscripts/mcpcall.py:
references/template-noauth.pyreferences/template-auth.pychmod +x scripts/mcpcall.pyscripts/mcpcall.py --listSKILL.md with tool docsEdit SERVER_URL:
SERVER_URL = "https://mcp.example.com/v1"
Edit both constants:
SERVER_URL = "https://mcp.example.com/v1"
ENV_VAR = "MY_API_KEY"
The script reads the API key from the environment variable at runtime ā fully stateless.
---
name: my-mcp-skill
description: <what it does>. TRIGGER when <when to activate>.
allowed-tools:
- Bash(*mcpcall.py*:*)
---
name ā kebab-case, matches directory name.description ā concise capability + explicit TRIGGER clause.allowed-tools ā glob pattern auto-approving mcpcall invocations.# My MCP Skill
<one-line description>. No API key required.
## Setup (auth variant only)
Requires `MY_API_KEY` environment variable:
```bash
export MY_API_KEY=<key>
```
## tool_name
<description>
- `param` (required): <what it is>
```bash
scripts/mcpcall.py tool_name param:"value"
```
Key-value ā flat parameters (strings, numbers, booleans):
scripts/mcpcall.py search query:"search terms" num:10 verbose:true
Type coercion: true/false ā bool, integers ā int, floats ā float, else string.
JSON ā arrays or objects:
scripts/mcpcall.py classify --args '{"texts": ["a", "b"], "labels": ["x", "y"]}'
Both can be combined ā kv_args as base, --args JSON merged on top.
my-mcp-skill/
āāā SKILL.md # frontmatter + tool docs
āāā scripts/
āāā mcpcall.py # self-contained PEP 723 script (chmod +x)
| Skill | Template | Server |
|---|---|---|
jina-ai | auth | https://mcp.jina.ai/v1 |
grep-app | noauth | https://mcp.grep.app |
deepwiki | noauth | https://mcp.deepwiki.com/mcp |