ansible-flow-mcp
Provides tools for searching Ansible module galleries, retrieving module schemas, and running Ansible modules and playbooks with optional check mode and security restrictions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ansible-flow-mcpSearch for the apt module, get its schema, and run it in check mode to update all packages"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ansible-flow-mcp
Give agents Ansible. Not the keys.
MCP server that exposes real Ansible modules and playbooks to AI agents — and a SSH hub/spoke fabric so multi-host automation is enrolled, bastion-scoped, and check-first by default.

Track | What you get |
Agent loop |
|
Fleet fabric | One hub · join tokens · SSH ForceCommand spokes · fixed inventory |
OpenFlow dual-track · Marketing site · Campaign storyboard · Hub/spoke ops · Apache-2.0
Not affiliated with Red Hat or the Ansible project beyond using the public Ansible CLI and docs.
New here? Marketing site (story + Schema Lab) · full step-by-step docs/QUICKSTART.md — local MCP · compose lab · bare-metal hub/spoke · editor wiring.
./scripts/site_preview.sh # http://127.0.0.1:8765/ (gallery + live schemas)Visual tour
Why it exists | Agent loop |
|
|
Hub / spoke fabric | Operators |
|
|
Screenshots live in docs/images/campaign-*.png. Re-shoot from docs/campaign/ with ./capture.sh.
Related MCP server: AAP MCP Server
Why this exists
Agents on a god-mode control node invent inventory, reach for shell, and treat every worker as an entrypoint. That is not a security model.

You need this when:
You want Cursor / Claude / OpenCode to run Ansible like an operator, not freestyle root across the fleet
Multi-host must mean bastion ops you already understand (SSH, inventory, enrollment) — not a mesh hop plane
Prompt injection will still ask for bad ops — policy and topology must refuse
Two tracks
1. Agent loop — search → schema → check → execute
Curated module gallery. Slim argSpec before any run. Check mode default. Free-form modules denied. Playbooks path-jailed.

Tool | Purpose |
| Gallery search |
| Slim argSpec for FQCN |
| Ad-hoc Ansible ( |
|
|
| Collections in gallery |
Ritual (modules): search_modules → get_module_schema → run_module(..., check_mode=true) → apply only if appropriate.
Ritual (playbooks): confirm path under allowlisted roots → check → apply.
2. Hub/spoke — nothing is a target until enrolled
Secure multi-host mode: agent attaches to the hub only. Hub reaches spokes over SSH only. Spokes execute localhost and cannot lateral-move via this fabric.

Full mesh (withdrawn) | Hub/spoke (shipped) | |
Worker compromise | Could MCP-hop fleet-wide | No lateral MCP |
Inventory | Gossip / replicas | Hub is source of truth |
Agent attach | Any node | Hub only |
Ops model | Mesh OS | Classic Ansible bastion |
Enrollment: hub init → issue-token (TTL, one-time jti) → spoke join (token + SSH identity) → hub inventory. Runtime: ForceCommand MCP session — no shell on the hub→spoke path.
Hub tools: list_nodes / hub_status, issue_token, revoke_node, groups (create_group, set_group_members, …), spoke_call, plus catalog run_* against enrolled hosts or groups only. Client-supplied -i is rejected in hub mode.
Deep ops: docs/HUB.md.
Operators
Day-2 surface matches the agent: enroll, group, hand the hub to OpenCode.

ansible-flow-mcp hub init --name ctrl-01
ansible-flow-mcp hub issue-token --name web-03 --ttl 15m
ansible-flow-mcp spoke join --token "$TOKEN" --hub user@hub:22 --public-addr web-03.example.com
ansible-flow-mcp hub session # MCP stdio for the agent
ansible-flow-mcp tui # servers · groups · invite · OpenCode
ansible-flow-mcp hub spoke-call --node web-03 --tool list_collectionsLab one-shot
cd lab && ./scripts/demo.sh
# then: ./scripts/tui.sh | ./scripts/opencode-host.shSee lab/README.md.
Quick start
Full guide (all paths, verify, troubleshooting): docs/QUICKSTART.md
Path | Guide section |
Local MCP + Cursor/Claude | |
Compose lab (hub + 3 spokes) | |
Bare-metal hub/spoke |
Single-node / dev (short form)
Requirements: Python ≥ 3.11 · collection ansible.posix (JSON callback) · collections you will run.pip install pulls ansible-core (provides ansible / ansible-playbook).
cd ansible-flow-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
ansible-galaxy collection install ansible.posix
pytest -q
ansible-flow-mcpOr install via pypi.org
pip install ansible-flow-mcp
ansible-galaxy collection install ansible.posix
ansible-flow-mcpEditor snippets: examples/cursor-mcp.json, examples/claude-desktop.json.
Hub + OpenCode: examples/opencode-hub.jsonc · ansible-flow-mcp hub write-opencode-config.
{
"mcpServers": {
"ansible-flow": {
"command": "/path/to/ansible-flow-mcp/.venv/bin/ansible-flow-mcp"
}
}
}Security (honest)
Control | Behavior |
Collection allowlist | Only configured collections |
Module deny list |
|
Check mode | Default true on |
Playbook jail | Allowlisted roots · size limit · |
No shell interpolation | argv-only subprocess |
Hub inventory | Enrolled hosts only · no client |
Spoke path | SSH ForceCommand · localhost exec · no peer fabric |
Residual: hub compromise = fleet (same class as any Ansible control node). Harden the bastion — see docs/SECURITY.md and docs/HUB.md.
Catalog & OpenFlow
catalog/collections-allowlist.yml— allowlist + deny free-form modulescatalog/gallery.json+catalog/schemas/— searchable galleryRegenerate:
python scripts/generate_catalog.pyGalaxy factory TUI: scripts/factory/README.md
Dual-tracked with OpenFlow Ansible canvas gallery
(plan · umbrella).
OpenFlow | This MCP server |
Palette Ansible gallery |
|
Form | JSON module options |
|
Playbook resource |
|
Control-node SSH / become | Inventory + Ansible config · hub→spoke SSH in hub mode |
Env (common)
Variable | Meaning |
| Override catalog path |
| Comma-separated allowlist override |
| Default |
| Seconds (default 120 module / 300 playbook) |
| Extra playbook roots ( |
| Hub state (default: |
| Spoke state (same pattern under |
License & publish
Apache-2.0
pip install build twine && python -m build
# twine upload dist/*uvx --from ansible-flow-mcp ansible-flow-mcpMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityFmaintenanceThis Model Context Protocol server enables AI assistants to interact directly with Ansible, allowing them to execute playbooks, manage inventory, check syntax, and perform other Ansible operations.1826MIT
- AlicenseBqualityBmaintenanceEnterprise-grade MCP server exposing Ansible Automation Platform 2.x as a complete AI interface for LLMs, enabling natural language management of automation resources.861Apache 2.0
- FlicenseAqualityCmaintenanceAn MCP server that lets AI agents discover Ansible Galaxy collection input/output contracts, including module arguments, return values, and role facts, to help generate accurate playbooks.6
- FlicenseNot gradedqualityDmaintenanceIndustry-standard MCP server for AWX/AAP/Ansible Tower automation, enabling AI agents to manage job templates, launch and monitor jobs, and handle inventories and projects through natural language.11
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/real-limitless/ansible-flow-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server