Connecting an AI agent (MCP)¶
Qaack exposes an MCP (Model Context Protocol) server, so AI clients such as Claude Code, Claude Desktop, Codex, Antigravity, or claude.ai web can act on your behalf — with your own permissions, the same access you already have in the panel.
The panel doesn't start the connection itself: your AI client drives the OAuth sign-in, and the panel just shows you the server URL, per-client instructions, and your current connections.
Connect¶
Click the MCP icon in the sidebar to open the connect panel.
- Claude Code — run:
claude mcp add --transport http qaack <server-url>
- Claude Desktop, Codex, Antigravity, claude.ai web — paste the server URL shown in the panel into your client's MCP/connector settings.
Your client will open your browser to sign in and approve access, then it's connected — no separate setup on the Qaack side.
Managing connections¶
The same panel lists every AI agent currently connected to your account, with when it connected. Click Revoke to disconnect one — this immediately invalidates its access.
What agents can do¶
Connected agents act with your own Qaack permissions — the same access you have in the panel. They can:
- Browse groups, repositories, environments, services, test results, and build logs.
- Spawn environments (
qaack_env_spawn) — create a new environment from a repository's branch, tag, or merge request, optionally reusing a reusable environment for a faster start. Spawned environments are namedAgent Env - <name>to make them easy to spot in the panel. - Build & rebuild (
qaack_env_build,qaack_env_rebuild) — trigger the build of a created environment, or tear down and rebuild an environment from scratch to restore a clean state.qaack_env_stop_buildhalts a running build while keeping the environment's containers intact. - Delete environments (
qaack_env_delete) — permanently remove an environment (containers, volumes, and record) so agents can clean up after themselves and don't leak environment slots. - Execute commands (
qaack_service_exec) — run a one-shot, non-interactive command inside a service container and get its output and exit code. Output is capped (512 KB) and read times out after 60 seconds; commands touching.ssh/id_rsaare refused to protect the injected repo SSH keys. - Read & configure repositories —
qaack_repo_qaackfilereads the qaackfile andqaack_repo_qaackfile_setsets it (after a dry-run validation; a broken qaackfile is never applied).qaack_group_list_vars/qaack_repo_list_varslist CI/CD variables andqaack_group_variables_set/qaack_repo_variables_setcreate or update them (admin permission required for variable writes).
Everything runs through the same qaackd API with the same permissions, so a command or spawn a human could not perform is equally blocked for the agent.