MCP Protocol
Expose supypowers tools via the Model Context Protocol for use with any MCP-compatible client.
Model Context Protocol (MCP)
The Model Context Protocol is an open standard for connecting AI models to external tools and data sources. Supyagent is building native MCP support to expose your supypowers tools as MCP resources that any compatible client can discover and call.
Current Status
| Feature | Status |
|---|---|
| SKILL.md generation (Claude Code) | Available |
| CLI execution mode (any agent) | Available |
| Native MCP server for supypowers | Roadmap |
| Native MCP server for cloud integrations | Roadmap |
How MCP Will Work
The planned MCP server will expose each supypowers function as an MCP tool:
MCP Client (Claude Desktop, Cursor, etc.)
│
├─→ MCP Discovery: "What tools are available?"
│ └─→ [weather:get_weather, database:query, deploy:push, ...]
│
├─→ MCP Call: weather:get_weather({"city": "Tokyo"})
│ └─→ {"ok": true, "data": {"temperature": 22.5, "condition": "Clear"}}
│
└─→ MCP Call: deploy:push({"environment": "staging"})
└─→ {"ok": true, "data": {"status": "deployed", "url": "..."}}Tool Discovery
The MCP server will automatically discover all functions in the powers/ directory and expose them with:
- Function name and description (from docstring)
- Input schema (from Pydantic model)
- Output schema (from return type annotation)
Execution
Each MCP tool call will run the corresponding supypowers function in an isolated uv environment, exactly as supypowers run does today.
Using MCP Today
While the native MCP server is in development, you can use supypowers with MCP-compatible clients through these approaches:
Approach 1: CLI Wrapper
Create a thin MCP server that wraps supypowers run:
"""Minimal MCP server wrapping supypowers tools."""
import json
import subprocess
def list_tools():
"""Discover available tools via supypowers docs."""
result = subprocess.run(
["supypowers", "docs", "--format", "json"],
capture_output=True, text=True,
)
docs = json.loads(result.stdout)
tools = []
for script in docs:
for fn in script.get("functions", []):
script_name = script["script"].split("/")[-1].replace(".py", "")
tools.append({
"name": f"{script_name}__{fn['name']}",
"description": fn.get("description", ""),
"inputSchema": fn.get("input_schema", {}),
})
return tools
def call_tool(name: str, arguments: dict) -> dict:
"""Execute a tool via supypowers run."""
script, func = name.replace("__", ":", 1).split(":", 1)
result = subprocess.run(
["supypowers", "run", f"{script}:{func}", json.dumps(arguments)],
capture_output=True, text=True,
)
return json.loads(result.stdout)Approach 2: SKILL.md for Claude Desktop
Claude Desktop reads SKILL.md files from configured skill directories. Generate them with:
supypowers skills --output ~/.claude/skillsApproach 3: Execution Mode
For any MCP client that can execute commands, use supypowers run directly:
supypowers run search:search '{"pattern": "TODO", "glob": "*.py"}'Cloud Integrations via MCP
The planned MCP server will also expose cloud integrations as MCP tools:
MCP Client
├─→ gmail:search({"query": "from:boss"})
├─→ slack:send_message({"channel": "engineering", "text": "..."})
├─→ github:create_issue({"repo": "my/repo", "title": "..."})
└─→ calendar:list_events({"days": 7})This will require a valid Supyagent Cloud API key configured in the MCP server.
Architecture (Planned)
MCP Client
│
└─→ supyagent-mcp-server (stdio or SSE transport)
│
├─→ Local tools (supypowers)
│ └─→ uv run --with <deps> python -c <runner>
│
└─→ Cloud tools (supyagent.com API)
└─→ HTTPS calls with sk_live_... authThe server will support both stdio (for local clients like Claude Desktop) and SSE (for remote/web clients) transports.
Registering Interest
The MCP server is under active development. To be notified when it's available:
- Watch the supyagent repository on GitHub
- Join the community on Discord
What's Next
- Claude Code -- Available today with SKILL.md
- Execution Mode -- CLI-based integration for any agent
- Cursor -- Rules-based integration for Cursor