vmware-pilot
vmware-pilot is an MCP server for orchestrating multi-step VMware workflows across companion skills with approval gates, auditing, rollback, and cancellation.
Discover available skills/tools and list built-in/custom workflow templates.
Design workflows from natural language, edit/confirm drafts, create custom step-list workflows, or instantiate built-in templates.
Review workflows before execution for structural risks, missing params, destructive/ungated steps, and ordering issues.
Run workflows, pausing at approval gates; either dispatch steps to skill MCP servers or return pending steps for the calling agent to execute.
Approve waiting workflows with human consent and audit records.
Query workflow status, diff reports, and audit logs.
Preview and perform best-effort rollback of completed steps, only with explicit confirmation.
Preview and cancel workflows to a terminal CANCELLED state without undoing already-completed steps.
Limit exposed tools or serve over authenticated HTTPS for remote/multi-user use.
Provides multi-step workflow orchestration for VMware MCP skills, developed by an engineer at Broadcom (formerly VMware), enabling state machines, approval gates, and audit trails across the VMware ecosystem.
Provides multi-step workflow orchestration for VMware MCP skills, including VM lifecycle, cluster management, monitoring, storage, networking, security, Tanzu Kubernetes, NSX, Aria, and AVI load balancing, with state machine, approval gates, and audit trail.
VMware Pilot
For a read-only check of this skill with your model and agent host, use the shared model-fit self-test in the marketplace root.
Author: Wei Zhou, VMware by Broadcom — zhouwei008@gmail.com This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.
English | 中文
Multi-step workflow orchestration for VMware MCP skills — state machine, approval gates, audit trail.
Companion skills handle everything else:
Skill
Scope
Install
VM lifecycle, deployment, guest ops, cluster
uv tool install vmware-aiopsRead-only: inventory, health, alarms, events
uv tool install vmware-monitorDatastores, iSCSI, vSAN management
uv tool install vmware-storageTanzu Namespaces, TKC cluster lifecycle
uv tool install vmware-vksNSX networking: segments, gateways, NAT
uv tool install vmware-nsx-mgmtDFW firewall rules, security groups
uv tool install vmware-nsx-securityAria Ops: metrics, alerts, capacity
uv tool install vmware-ariaAVI load balancing, pool management, AKO K8s ops
uv tool install vmware-avi
Install
uv tool install vmware-pilot
vmware-pilot mcp # start the MCP server (stdio)Offline / Air-Gapped Install (from source)
This project uses the modern PEP 517 build system (hatchling), so there is no
setup.py by design — that is expected, not a missing file. If you cloned the
source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and
cannot do an editable (-e) install with a non-setuptools backend. Editable
mode is a developer convenience, not needed to run the tool — do one of:
# From the source tree — a normal (non-editable) install builds a wheel:
pip install . # NOT pip install -e .
# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:
# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist # → dist/*.whl (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-pilotRelated MCP server: MCP Workflow Server
MCP Tools (13 — 4 read, 9 write)
Tool | Description |
| List all available skills and tools for workflow design |
| List built-in and custom templates |
| Sanity-check a planned workflow before execution |
| Natural language goal → draft workflow |
| Edit draft workflow steps |
| Finalize draft → ready to execute |
| Create and save a workflow from a template (not a dry run), returns workflow_id |
| Create custom workflow from step list (refused if a destructive step has no approval gate before it) |
| Execute workflow, pauses at approval gates |
| Query state + diff report + audit log |
| Human approval, continue execution. Refused while steps before the gate are |
| Explicit, best-effort undo of steps pilot recorded as succeeded — never automatic. Previews ( |
| Cancel a workflow — move it to the terminal CANCELLED state. Previews ( |
Built-in Templates (15)
n is the number of VMs (or drift items); ranges depend on which optional parameters are set.
clone_and_test needs snapshot_name (the snapshot to clone from), resizes staging while it is
powered off, and has 8 steps when change_spec is a guest command (an extra gate before it runs
in staging). investigate_alert's approvals are synthesis checkpoints; its steps are all reads.
See skills/vmware-pilot/references/templates.md for parameters and steps.
Template | Steps | Approval | Skills Used |
| 7-8 | Yes | aiops, monitor |
| 4 | Yes | monitor, aiops |
| 4 (8 with | Yes | monitor, aria |
| 3 | Yes | aiops |
| 1-3 | No | monitor, aria |
| 3-6 | Yes | nsx, nsx-security |
| 5 | Yes | vks |
| 2+3n | Yes | aiops, monitor |
| 5 | Yes | aria, aiops, monitor |
| 5 | Yes | aiops, monitor, nsx |
| 1+3n | Yes | aiops, monitor |
| 6 | Yes | storage |
| 1-5 | No | monitor, nsx, storage |
| 1-5 | No | monitor, nsx, storage, aria |
| 3+n | Yes | varies |
Upgrading to 2.0
2.0 renames one MCP tool: plan_workflow → create_workflow_from_template. It always created and saved a
workflow from a template (it is a write, not a dry run); the new name says so and sets it apart from
create_workflow, which saves your own step list. Parameters and results are unchanged, and so are the CLI
commands. The skill catalog also follows vmware-vks's renames (get_supervisor_kubeconfig →
issue_supervisor_kubeconfig, get_tkc_kubeconfig → issue_tkc_kubeconfig). Workflows saved with the old
names are translated when loaded. If an agent prompt, script or ~/.vmware/rules.yaml names plan_workflow,
update it. Requires vmware-policy ≥ 1.19.0. Details: RELEASE_NOTES.md.
MCP Configuration
{
"mcpServers": {
"vmware-pilot": {
"command": "vmware-pilot",
"args": ["mcp"]
}
}
}Fallback:
{"command": "uvx", "args": ["--from", "vmware-pilot", "vmware-pilot-mcp"]}still works, butuvxre-resolves against PyPI on every start and fails behind a TLS-inspecting corporate proxy (invalid peer certificate: UnknownIssuer). The installed entry point above touches the network zero times; setUV_NATIVE_TLS=trueif you must useuvx.
Pilot runs the steps itself: --dispatch
By default pilot executes nothing: run_workflow returns each step in pending_dispatch and your agent performs it.
Add --dispatch (or set VMWARE_PILOT_DISPATCH=stdio) and pilot runs each step itself, in that skill's own MCP
server (vmware-<skill>-mcp, which must be installed), so the skill's policy rules, confirmation gate and audit
apply as usual. Nothing after an approval gate runs before approve, and workflows reach completed.
{"mcpServers": {"vmware-pilot": {"command": "vmware-pilot", "args": ["mcp", "--dispatch"]}}}stdio only: pilot refuses to start with --dispatch and --transport https/http (the skill servers it starts would
have no caller identity, so roles could not apply). A step that takes longer than VMWARE_PILOT_DISPATCH_TIMEOUT
seconds (default 1800) is recorded interrupted — its effect is unknown — and rollback waits for you to check it.
run_workflow and approve take as long as the steps they run: set your MCP client's tool timeout above your
longest step. If a call does time out, Pilot carries on and answers nothing else until the step ends; then
get_workflow_status shows the outcome. Never perform those steps yourself.
Remote access (HTTPS) and limiting tools
By default vmware-pilot mcp speaks stdio to one local client and offers every tool. Two options change that
(vmware-policy ≥ 1.21.0).
Serve over HTTPS so clients on other machines can connect. Every caller needs a bearer token:
vmware-audit token create alice # prints the token once; give it to alice
vmware-audit token list # names only
vmware-audit token revoke alice # refused from its next request, no restart
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
--public-name mcp.example.comConnect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"{
"mcpServers": {
"vmware-pilot": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}The server will not start without a token, refuses Host/Origin values outside
--public-name, and checks before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.Behind a TLS-terminating reverse proxy on the same machine use
--transport http --host 127.0.0.1 --public-name mcp.example.comand pass theAuthorizationheader through.Behind a load balancer or gateway on another machine, keep
--transport https(a self-signed certificate is fine), list in--public-namethe host name the balancer sends asHost, and have it forwardAuthorization. Its health probe can useGET /healthz, which needs no token and returns only{"status": "ok"}(vmware-policy ≥ 1.23.0).Send
traceparentorX-Request-IDwith each request to have it stored on the audit row;vmware-audit log --correlation-id IDthen finds the calls behind one platform request.The audit log records each caller as
token:<name>. Calls naming different targets run in parallel; calls that name no target run one at a time, so name the target when several people share a server.Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant nothing on the platform. Run one endpoint per privilege level.
Several people or roles on one endpoint: run
vmware-audit roles enableonce, then give each token a role (vmware-audit token create NAME --role reader, or a role inroles.yamlnaming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
Offer only read tools, plus the writes you choose:
vmware-pilot mcp --expose read --allow-write cancel_workflow
# or: VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcpTools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server (exit 2). This limits what clients are offered; it is not authorization, so the account itself should be least-privilege.
Details: skills/vmware-pilot/references/setup-guide.md ("Serving MCP over HTTPS", "Limiting which tools are offered").
License
MIT
Available Tools
13 toolsapproveA
[WRITE] Approve a workflow that is waiting for human confirmation.
Use this only after showing the user the pending step and getting explicit human consent; use cancel_workflow instead when the approval is rejected. Only works when workflow state is 'awaiting_approval'. After approval, execution continues to the next steps.
Without --dispatch, the steps before the gate are 'not_executed': Pilot has no record that they ran, whatever the gate's message says. approve refuses (listing them in not_executed_before_gate) until acknowledge_not_executed=True — set it only after you performed each of those steps yourself and showed the user their results. They are then recorded as 'reported_done' and not handed out again.
Note: with --dispatch, approving runs the next steps (this call takes as long as they do; if it times out in your client, Pilot carries on — check get_workflow_status once it answers again, and never perform those steps yourself). Without it, the remaining steps are recorded as 'not_executed' and the result carries outcome='dispatch_required' with a 'pending_dispatch' list for you to perform (see run_workflow); the workflow then never reaches 'completed'.
Returns: Updated workflow state after resuming.
Inputs: workflow_id (required), approver, acknowledge_not_executed.
cancel_workflowADestructive
[WRITE] Cancel a workflow — move it to the terminal CANCELLED state.
Use this when an approval is REJECTED, a review flags the plan as unsafe, or an operator decides the workflow must never run. A cancelled workflow is dead: run_workflow and approve refuse to execute it. Without this, an approval-rejected PENDING workflow could still be picked up and run.
Without confirm=True this only previews: it returns blast_radius — the workflow's id, type and state, the executed steps that stay applied (left_in_place: cancelling part-way leaves a half-applied change), steps performed outside Pilot (performed_outside_pilot), steps already handed to you in pending_dispatch that cancel can neither stop nor undo (handed_out_to_caller), the steps that would be skipped (would_skip), steps with unknown effects, and blockers — and changes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked to cancel earlier — the user has not seen the preview yet.
Cancel only stops FUTURE steps. It does NOT undo already-completed steps — use rollback() to reverse those. Refused with confirm=True: an already completed/failed/cancelled workflow, a step whose status Pilot does not recognise, a workflow record that cannot be read, and — unless acknowledge_unknown_effects=True — a step left 'running' or 'interrupted' (listed in unknown_effects). The cancellation is written to the workflow audit log.
Returns: Preview: {"action": "preview", "blast_radius", "hint"}. Acting: the workflow state (state='cancelled', outcome='cancelled', action='cancelled') with blast_radius, or an error if refused.
Inputs: workflow_id (required), reason, confirm, acknowledge_unknown_effects.
confirm_draftA
[WRITE] Confirm a draft workflow — changes state from DRAFT to PENDING.
Use this once the user has approved the draft's steps; call update_draft instead if anything still needs changing. After confirmation, the workflow can be executed via run_workflow(). Optionally saves as a YAML template for future reuse. Refused — the draft stays a draft and nothing is saved — while any destructive or unclassifiable step, or any step passing confirm=True, lacks a require_approval gate before it.
Returns: Confirmed workflow summary. Call run_workflow() to execute.
Inputs: workflow_id (required), save_as_template.
create_workflowA
[WRITE] Create a custom workflow dynamically from a step list.
Use this when you already know the steps and no built-in template matches; prefer create_workflow_from_template when one does, and design_workflow when the user gave a goal rather than steps. Call get_skill_catalog first for the skill and tool names a step may target.
Each step dict must have: action, skill, tool, params. Optional: rollback_tool, rollback_params. action="require_approval" (skill "pilot", tool "approve") inserts a human approval gate. A workflow whose destructive or unclassifiable step, or a step passing confirm=True, has no gate before it is REFUSED — nothing is saved — and the error names the step and the gate to insert.
Returns: dict with workflow_id and plan summary. Next call review_workflow to check the plan, then run_workflow to execute. Nothing is undone automatically on failure; see rollback.
Inputs: name (required), steps (required), description (required), save_as_template.
create_workflow_from_templateA
[WRITE] Create and save a workflow from a template, ready for run_workflow.
Takes a template name (workflow_type) plus its params, builds the steps the template defines, and persists the workflow in state "pending" — it is not a dry run. Templates are the built-in types below plus custom YAML templates (list_workflows shows both). Use this when the goal matches a template; use create_workflow instead to save your own step list when none of them fit. A custom YAML template whose destructive or unclassifiable step (or step passing confirm=True) has no require_approval gate before it is refused, naming the step and the file to fix.
Available workflow types:
clone_and_test: Clone VM → apply changes → monitor → approve → commit
incident_response: Diagnose alert → collect info → approve → remediate
plan_and_approve: Wrap aiops batch operations with approval gate
compliance_scan: Read-only health/capacity/anomaly check (no approval)
Returns: dict with workflow_id, steps summary, and plan details.
Inputs: params (required), workflow_type (required).
design_workflowA
[WRITE] Start designing a workflow from a natural language description.
Call this when the user describes a complex operation and you need to design a multi-step workflow. Returns a DRAFT workflow with proposed steps for the user to review and edit before execution.
Design flow: design_workflow → update_draft (add steps, then iterate on user feedback) → confirm_draft (state becomes PENDING) → run_workflow.
Use get_skill_catalog() first to see which tools the steps may target.
Returns: dict with workflow_id (state=DRAFT), proposed steps placeholder, and instructions for the AI to fill in steps via update_draft.
Inputs: goal (required), constraints.
get_skill_catalogARead-onlyIdempotent
[READ] Get the complete catalog of available skills and tools for workflow design.
Use this to understand what building blocks are available when designing a custom workflow, then feed the skill and tool names into create_workflow or update_draft steps. Note this is a static curated catalog, not a live query of each skill's registry, so it may lag a skill's actual tool list; pilot cannot call these tools itself — the calling agent does.
Returns: dict mapping skill name → {description, tools: {tool_name: {risk, desc}}}.
Inputs: no named parameters.
get_workflow_statusARead-onlyIdempotent
[READ] Get current workflow state, diff report, and audit log.
Use this to poll a workflow after run_workflow and to find out why one stopped: steps with status 'not_executed' are yours to perform (the server runs without --dispatch), state 'awaiting_approval' means call approve. Returns a point-in-time snapshot and does not advance the workflow.
Returns: Full workflow state including steps, audit log, and diff report.
Inputs: workflow_id (required).
list_workflowsARead-onlyIdempotent
[READ] List all available workflow templates (built-in + custom).
Use this first to see whether a template already covers the goal, then pass its name to create_workflow_from_template; if none fit, use create_workflow instead. Built-in templates are always available. Custom templates are loaded from ~/.vmware/workflows/*.yaml — drop a YAML file there to add your own workflows.
Returns: dict with builtin and custom workflow lists, each with name, description, steps count, plus active_workflows — the IDs of in-flight runs to pass to get_workflow_status.
Inputs: no named parameters.
review_workflowARead-onlyIdempotent
[READ] Sanity-check a planned workflow before execution.
Performs structural validation only — does NOT call into other skills. Catches the common authoring errors before they hit production:
Delete-then-use: a step deletes resource X, a later step references X
Missing required params: a step has empty params or placeholder values
Cross-skill order issues: surfacing the cross-skill dispatch sequence
Risk profile: count of destructive / write / read-only / unclassified steps
Approval coverage: is every destructive OR unclassifiable step gated behind a preceding require_approval?
Each step is placed in a tier from the tool's entry in get_skill_catalog
first, then from name patterns. A step that matches neither is reported as
ungated_unclassified rather than assumed safe: pilot dispatches nothing
itself and cannot inspect a sibling skill's annotations, so "this tool is
unknown to me" is the honest finding, and it needs the same gate a known
destructive step does. The remedy is in the message — add the tool to
SKILL_CATALOG with the risk its own skill declares, or add a gate.
Medium-risk writes (create / scale / enable) are classified and counted but not gated: the family gates destructive work, and several built-in templates deliberately create in staging before asking for approval.
Returns:
Dict with keys:
- verdict: "approved" if no structural issues, otherwise "needs_revision"
- findings: list of {severity, kind, message, step_index}. Kinds
ungated_destructive, ungated_unclassified and
destructive_in_parallel_group are what run_workflow refuses on;
force=True overrides that only for a built-in template, never
for a custom workflow's missing approval gate.
- summary: counts — total/destructive/write/read_only/approval_gates,
parallel_groups, est_duration_min, plus classified_steps and
unclassified_steps so an "approved" verdict can be told apart from
a workflow this review could not read.
Inputs: workflow_id (required).
rollbackADestructive
[WRITE] Abort a workflow and rollback completed steps in reverse order.
Without confirm=True this only previews: it returns blast_radius — the workflow's id, type and state, the executed steps whose rollback_tool would run with its rollback_params, secrets redacted (would_roll_back — these often carry confirm=True, and this call's confirm=True is the decision to run them), the executed steps that have none and stay applied (left_in_place), steps you performed from pending_dispatch that Pilot will not reverse (not_reversed_by_pilot: they have an undo you must call; not_reversible_outside_pilot: they have none — a clone, a production resize), undos that would leave something behind (leaves_behind on a would_roll_back entry), steps with unknown effects, and blockers — and changes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked for a rollback earlier — the user has not seen the preview yet.
Nothing rolls back automatically: a failed step leaves the workflow 'failed' and stops. This tool is the explicit, best-effort undo, and it only reverses steps pilot itself recorded as 'success' — without --dispatch, approval gates only. Steps YOU performed from pending_dispatch are 'not_executed' (or 'reported_done' once acknowledged at a gate) here, so to undo them call each one's rollback_tool with its rollback_params yourself, last step first. Embedders that pass a dispatcher to WorkflowExecutor get those calls made for them. Steps without a rollback_tool are reported 'not_reversible' and stay applied; an undo that does not remove what the step created is 'partial' (a clone powered off stays). A failed undo does not stop the rest. The workflow state is set to 'failed' afterwards.
Refused with confirm=True: a workflow in draft, completed, rolling_back or cancelled state, a step whose status Pilot does not recognise, a workflow record that cannot be read, and — unless acknowledge_unknown_effects=True — a step left 'running' or 'interrupted' by a Pilot process that stopped mid-dispatch (listed in unknown_effects).
Returns: Preview: {"action": "preview", "blast_radius", "hint"}. Acting: the workflow state with "action": "rolled_back" ("rollback_incomplete", with outcome "failed" and an error naming them, when an undo failed or its effect is unknown), rollback_results for each step pilot recorded as succeeded, and blast_radius. Check get_workflow_status afterwards to see which steps were actually reversed and which were skipped.
Inputs: workflow_id (required), confirm, acknowledge_unknown_effects.
run_workflowA
[WRITE] Advance a planned workflow. Pauses at approval gates.
Who runs the steps depends on how this server was started:
with --dispatch (or VMWARE_PILOT_DISPATCH=stdio): Pilot runs each step itself in that skill's own MCP server, stops at each approval gate, and the workflow can reach 'completed'. This call takes as long as the steps it runs. If it times out in your client, Pilot carries on (and answers nothing else until the step ends); afterwards get_workflow_status shows the outcome. NEVER perform the steps yourself.
without it (the default): Pilot runs nothing. Steps are recorded as 'not_executed' and the run ends with outcome='dispatch_required' (NOT 'completed'), listing each step in 'pending_dispatch'. YOU (the calling agent) must perform those skill/tool calls in order. The result says which: a 'pending_dispatch' list means you run them.
Safety: the workflow is structurally reviewed before each run. Runs are REFUSED if review finds ungated destructive or unclassifiable steps, or destructive steps inside a parallel group. For a built-in template, force=True overrides that (forced runs are written to the workflow audit log). For a custom workflow (create_workflow, design_workflow, or a YAML template) an ungated step is refused even with force=True: add a require_approval step before it instead.
When an approval gate is reached, the workflow pauses with state 'awaiting_approval'. Call approve() to continue.
Returns: Current workflow state with 'outcome' (completed | awaiting_approval | dispatch_required | failed) and, when dispatch is required, a 'pending_dispatch' list of steps for the agent to perform.
Inputs: workflow_id (required), force.
update_draftA
[WRITE] Update a DRAFT workflow's name, description, or steps.
Call this after design_workflow() to fill in the actual steps, or to modify steps based on user feedback. Use it only while the workflow is still DRAFT — after confirm_draft the steps are frozen and you must create_workflow a new one instead.
Each step dict: {action, skill, tool, params, rollback_tool?, rollback_params?} Use action="require_approval" for approval gates. A draft may be saved without them while it is being designed; the result lists every step that still needs one, and confirm_draft refuses until none are left.
Returns: Updated workflow summary for user review.
Inputs: workflow_id (required), name, steps, description.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools target distinct lifecycle phases (design, draft, confirm, run, approve, cancel, rollback) and descriptions explicitly cross-reference each other to guide selection, e.g. cancel only stops future steps while rollback reverses completed ones. The residual ambiguity is the three creation entry points (create_workflow, create_workflow_from_template, design_workflow), which all start a workflow but are differentiated by intent (known steps, matching template, or a goal).
The set mostly follows a predictable verb_noun pattern (cancel_workflow, run_workflow, create_workflow, review_workflow, update_draft, list_workflows). Two runtime gates break the pattern with bare verbs (approve, rollback) and get_workflow_status is verb_noun_noun, but these are minor, still-readable deviations.
13 tools is well-scoped for a workflow orchestration server; each maps to a distinct lifecycle action (create/design/draft/confirm/review/run/approve/cancel/rollback/status/list/catalog). No redundant or filler tools.
The surface covers a full workflow lifecycle: discovery (list_workflows, get_skill_catalog), authoring (design_workflow, create_workflow, create_workflow_from_template, update_draft), validation (review_workflow), gating/execution (confirm_draft, run_workflow, approve), and termination (cancel_workflow, rollback), plus status. The only arguable gap is a hard delete for abandoned drafts, which cancel/terminal-state handling largely covers.
Maintenance
Related MCP Connectors
Governed MCP workflow automation for MSPs and agencies: approvals, durable state, signed evidence.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
MCP Hub: AI service discovery, per-user OAuth, and multi-service workflow orchestration
MCP-Native LLM Orchestration Agent
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables orchestration of MCP tool calls through declarative YAML-defined directed graphs with data transformation, conditional routing, and observable execution flows.27 npm23MIT
- AlicenseNot gradedqualityDmaintenanceOrchestrates multiple MCP tool calls into sequential workflows with conditional logic, data transformation via JSONPath, and workflow templates.MIT
- AlicenseNot gradedqualityFmaintenanceOrchestrates persistent task graphs and enforces approval policies for MCP-driven agent workflows, coordinating with Agents Gateway for execution.MIT
- FlicenseNot gradedqualityDmaintenanceEnables multi-step, opinionated workflows (skills) as MCP resources with lazy loading, encoding team knowledge like branch naming and test procedures alongside tool execution.3-