How to Combine Multiple MCP Tools into One Workflow (Composite Tools)
Some AI tasks aren’t one tool call — they’re always the same three. Triage a bug: fetch the issue, search the codebase, post a summary. Publish a report: query the database, format the result, write the page. When you leave that sequence to the model, it improvises: sometimes it skips a step, sometimes it reorders them, sometimes it takes four expensive reasoning turns to do what is, honestly, a fixed pipeline.
A composite tool (an MCP workflow) fixes the sequence in place. You define the steps once — which tools run, in what order, sequential or parallel, how outputs feed inputs — and the gateway exposes the whole thing as one new tool. The model calls triage_bug once; the workflow engine executes the steps deterministically. On MCP Trail, composite tools work on any Guardian server or bundle, so steps can even span different upstream servers.
Why turn tool chains into workflows?
- Determinism: the steps always run, always in order — no model improvisation in the middle of your process
- Fewer reasoning turns: one tool call instead of N, which is faster and cheaper in tokens
- Simpler tool surface: agents see
publish_weekly_report, not the five primitives behind it - One policy point: approvals, DLP, and audit apply to the workflow as a unit — and to each step
What you’ll need
- A free MCP Trail account
- A Guardian server or bundle whose tools you want to chain (a bundle if the steps span multiple servers, e.g. GitHub + Notion)
Step 1: Create your free MCP Trail account
Sign up at app.mcptrail.com and make sure the server (or bundle) with your ingredient tools is running — its tools list is what you’ll compose from.

Step 2: Create a new workflow
Open your server under Guardian servers and go to its Workflows section. Create a new workflow and give it the name the model will see — make it verb-like and specific: triage_github_issue, not workflow_1. The description matters too; it’s what the model reads when deciding to call it.

Step 3: Add the steps
Add each tool as a step. For every step you choose the tool and map its arguments: fixed values, workflow inputs, or outputs of previous steps. Independent steps can run in parallel; dependent ones run in sequence.
Our example, triage_github_issue:
get_issue— fetch the issue (input: issue number, from the workflow’s argument)search_code— search the repository for the error string (input: extracted from step 1’s output)add_issue_comment— post a structured triage summary (input: composed from steps 1–2)

Step 4: Check the dependency graph
The visual graph shows how steps feed each other and which ones parallelize. If a step doesn’t depend on the previous one, it runs concurrently — free latency win for things like “fetch from three sources, then merge”.

Step 5: Test it, then call it from your client
Use the server’s built-in playground to invoke the workflow with a sample input and inspect each step’s output. Once it behaves, it’s already live: the workflow appears in the server’s tool list, so any connected client can call it like any other tool.
Use triage_github_issue on issue #482
One call from the model; three deterministic steps at the gateway.

Step 6: Verify in the audit log
Open Audit log — you’ll see the workflow invocation and each step it executed, in order, with statuses. If a middle step fails, the log shows exactly which one and why, which beats reconstructing what the model “meant to do” from a chat transcript.

Guardrails still apply — per step
Composite tools don’t bypass the policy layer. Each step is checked like a direct call: a step that hits a DLP rule gets blocked or redacted, and a step routed to human approval pauses the workflow in the Approval queue until sign-off. You can automate the boring 90% and still keep a human on the one step that posts publicly.
FAQ
How is a workflow different from the model just calling tools in a row?
The model calling tools in a row is a suggestion; a workflow is a guarantee. Order, arguments, and error handling are fixed at the gateway, and the whole thing costs one model turn instead of several.
Can steps come from different MCP servers?
Yes — build the workflow on a bundle and steps can target any member server’s tools (e.g. read from GitHub, write to Notion).
Can steps run in parallel?
Yes. Steps without dependencies on each other execute concurrently; the dependency graph shows what parallelizes.
What happens if a step fails?
The workflow stops (or handles the failure per its configuration) and the audit log records which step failed with the upstream error — no silent partial completion.
Related Articles
- How to Combine Multiple MCP Servers into One Endpoint
- How to Set Up the GitHub MCP Server
- MCP Approvals: Human-in-the-Loop for AI Tool Calls
- MCP Token Optimization
- How to Check and Monitor MCP Server Logs
Have a tool chain your agents keep re-deriving? Create your free MCP Trail account and turn it into one composite tool.