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.