Get started
From zero to agent loop
Local MCP for a single node, compose lab for full hub/spoke, or bare-metal enrollment. Full guide lives in the repo.
Path A
Local MCP
Single-node dev. Wire Cursor, Claude Desktop, or OpenCode to stdio MCP.
Path B
Compose lab
Hub + 3 spokes, enroll, smoke, OpenCode bridge. Primary integration suite.
Path C
Bare metal
Real bastion + join tokens + ForceCommand. Production-shaped topology.
uvx / pip
Install & run MCP
Requires Python ≥ 3.11 and ansible-core on PATH for real runs.
# one-shot uvx --from ansible-flow-mcp ansible-flow-mcp # editable dev git clone https://github.com/real-limitless/ansible-flow-mcp.git cd ansible-flow-mcp python -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" pytest -q ansible-flow-mcp
Editor MCP
Cursor example
{
"mcpServers": {
"ansible-flow": {
"command": "uvx",
"args": ["--from", "ansible-flow-mcp", "ansible-flow-mcp"],
"env": {
"ANSIBLE_FLOW_TIMEOUT": "120"
}
}
}
}
Also: examples/claude-desktop.json, examples/opencode-hub.jsonc, ansible-flow-mcp hub write-opencode-config.
Lab one-shot
Hub + three spokes
cd lab && ./scripts/demo.sh # then: ./scripts/tui.sh | ./scripts/opencode-host.sh
Empty servers in OpenCode? Use the lab bridge
(./scripts/opencode-host.sh) or
reconnect.sh after rebuilds — not a random empty local hub dir.