Multi-Tool Pipeline Template
Reference implementation showing how to chain multiple MCP tools in a script.
When to Use
- •As a template when creating new MCP pipeline scripts
- •To understand the pattern for tool chaining
- •When skill-developer needs to create a new pipeline
The Pattern
python
async def main():
from runtime.mcp_client import call_mcp_tool
# Step 1: First tool
result1 = await call_mcp_tool("server1__tool1", {"param": "value"})
# Step 2: Use result in next tool
result2 = await call_mcp_tool("server2__tool2", {"input": result1})
# Step 3: Combine/process
return {"combined": result1, "processed": result2}
Example Implementation
See the reference script:
bash
cat $CLAUDE_PROJECT_DIR/scripts/multi_tool_pipeline.py
Run it:
bash
uv run python -m runtime.harness scripts/multi_tool_pipeline.py \
--repo-path "." \
--max-commits 5
Key Elements
- •CLI Arguments - Use argparse for parameters
- •Sequential Calls - await each tool before the next
- •Error Handling - try/except around the pipeline
- •Progress Output - print status for visibility
- •Structured Return - return combined results
Creating Your Own Pipeline
- •Copy
scripts/multi_tool_pipeline.pyas a starting point - •Replace the tool calls with your MCP servers/tools
- •Adjust CLI arguments for your use case
- •Use
/skill-developerto wrap it in a skill
MCP Tool Naming
Tools are named serverName__toolName (double underscore):
python
await call_mcp_tool("git__git_status", {...})
await call_mcp_tool("firecrawl__firecrawl_scrape", {...})
await call_mcp_tool("perplexity__perplexity_ask", {...})