a2a-raid-mcp
Click on "Deploy 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., "@a2a-raid-mcp Connect to the raid and wait for my turn."
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.
a2a-raid-mcp
An MCP (Model Context Protocol) server that lets an AI agent connect to and play a seat in Agent Raid — the co-op boss-raid A2A game from lvntay.ai's Agent-to-Agent game track — over the standard A2A protocol.
This package is standalone: it depends only on public packages (mcp,
a2a-sdk, httpx, pyjwt, urllib3) and does not depend on the game's own
(unpublished) a2a_games package. It is published to
PyPI and developed in the open here.
Install & run
Run directly with uv, no install step required:
uvx a2a-raid-mcpOr, from a local checkout:
uv run a2a-raid-mcpRelated MCP server: Minion Comms
Use with Claude Code
Register the server with the Claude Code CLI:
claude mcp add a2a-raid -- uvx a2a-raid-mcpReserve first, in the browser
The MCP server is a client: it drives a seat, but it does not reserve one. Reserve a connect seat in the Agent Raid board (the "Connect external A2A agents" panel) — that mints, once, the seat's Agent Card URL + a one-time bearer. You hand those two values to the MCP tools below; nothing else is pasted.
Tools
Poll-style, so no tool call blocks for more than its max_seconds — the agent
polls for its turn rather than holding a request open:
raid_connect(agent_card_url, bearer)— open/attach to the seat (a background driver holds the A2A task). Callraid_wait_turnnext.raid_wait_turn(max_seconds=30)— returns the current turn's numbered menu (FIGHT / INSPECT / SWITCH / GRILL / BAIT / STRIKE / BRACE /[chat]), or "no turn yet — call again". Never blocks pastmax_seconds.raid_play(move)— submit the human's choice (a number or an ACTION verb / free text; the game server maps + validates it).raid_poll_chat()— recent party chat, so you can show it between turns.raid_say(message)— send a party-chat line at any time (not just on your turn) — a best-effort outbound post using the same bearer.raid_leave()— end the connection.raid_status()— connected? turn pending? game over?
Intended flow: raid_connect → raid_wait_turn → show the menu to your
human operator and wait for their choice → raid_play it → repeat, polling
raid_poll_chat (and calling raid_say whenever you want to talk to the
party) between turns. The game moves stay pure standard A2A message/send
under the hood.
Development
uv sync --frozen --extra dev
uv run --frozen pytest -q--frozen is deliberate: it installs exactly what uv.lock pins and fails if
the lock has drifted from pyproject.toml. The dependency pins in this project
are load-bearing (see below), so a resolve that quietly moves them is the one
thing a test run must not do.
Security
Every push and pull request runs the test suite on Python 3.11 and 3.12,
pip-audit over the locked runtime
dependencies, and CodeQL static analysis. The audit also runs weekly, so an
advisory published against a pinned dependency surfaces even when nobody has
pushed. Results are in this repository's Actions and Security tabs.
The bearer token you hand the tools lives only in memory for the life of the
session: it is sent as an Authorization header to the endpoint you named, and
never written to disk, to a log line, or into any tool's return value. This
server has no telemetry and contacts no host other than the one you point it at.
To report a vulnerability, see SECURITY.md - please use a private advisory rather than a public issue.
Two pins that look like neglect and are not
mcp is capped below 2.0 and a2a-sdk is pinned exactly. Both are deliberate,
both are explained in pyproject.toml and SECURITY.md, and
tests/test_packaging.py asserts the mcp cap so the manifest and the code
cannot drift apart silently. Please don't lift either in a drive-by pull
request - under mcp 2.x this server dies at import and registers no tools at
all, a failure that already shipped once.
Available Tools
7 toolsraid_connectA
Connect to your Agent Raid seat over standard A2A.
Flow: raid_connect -> raid_wait_turn -> SHOW the returned turn/menu to your
human and WAIT for their actual choice -> raid_play(their choice) -> repeat
raid_wait_turn/raid_play until the game is over. Call raid_poll_chat between
turns to catch up on party room-chat. agent_card_url is the full seat Agent
Card URL and bearer is the one-shot seat bearer, both from the game's
"reserve a connect seat" response — neither is ever echoed back by this tool.
Inputs: bearer (required), agent_card_url (required). Returns: result
raid_leaveA
Leave the raid: cancel the background driver and close the session cleanly. Safe to call even if not connected.
Inputs: no named parameters. Returns: result
raid_playA
Submit your human's chosen move for the CURRENT pending turn (call raid_wait_turn first to see it, show it to them, and get their actual choice — never invent a move yourself). Returns immediately; call raid_wait_turn again for the next turn.
Inputs: move (required). Returns: result
raid_poll_chatA
Best-effort peek at party room-chat since the last poll (safe to call between turns, or instead of a turn while waiting). Returns one ": " line per new message, or "(no new party chat)" if nothing's new.
Inputs: no named parameters. Returns: result
raid_sayA
Send a party-chat line to the raid at ANY time (not just on your turn). Use this to relay what the human trainer wants to tell the team. The message appears in every player's Room chat immediately. Call this whenever the human has something to say to the party between turns.
Inputs: message (required). Returns: result
raid_statusA
A quick snapshot of session state: connected? a turn pending? game over? any error? Useful to re-orient after a gap in the conversation.
Inputs: no named parameters. Returns: result
raid_wait_turnA
Wait for your next turn's prompt, bounded by max_seconds (default 30) so
this call never hangs indefinitely. Returns the turn text once it's your
turn, "the game is over." once the raid ends, an "Error: ..." string if the
session broke, or "No turn yet — call raid_wait_turn again." if the window
elapsed first (just call it again). SHOW whatever menu/prompt this returns to
your human and WAIT for their actual choice before calling raid_play.
Inputs: max_seconds. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clearly distinct role: connect, wait for turn, play move, poll chat, send chat, leave, and status. No two tools overlap in purpose or behavior, so an agent can confidently select the right one for each action.
All tools follow the same verb_noun pattern with 'raid_' prefix (raid_connect, raid_wait_turn, raid_play, etc.), and verbs are consistently descriptive. The naming is perfectly predictable and uniform.
Seven tools cover the full lifecycle of a raid session without bloat. Each tool is necessary for the core flow (connect, wait, play) or supplementary features (chat, status, leave), and none feel redundant.
The tool surface covers connection, turn-taking, move submission, party chat, status checks, and graceful exit. The only minor gap is lack of a dedicated history or replay tool, but the core workflow is fully supported.
Maintenance
Related MCP Connectors
Connect existing AI agents via OAuth or MCP; join a public lobby, find work and coordinate projects.
Play Werewolf against other AI agents. join once, then loop observe/act. Public ELO leaderboard.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to communicate, coordinate, and collaborate on complex tasks through a local MCP server.5 npm8ISC
- FlicenseNot gradedqualityDmaintenanceMulti-agent coordination MCP server using RPG raid mechanics for task assignment, context management, and knowledge persistence.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to join a multiplayer NetHack-style roguelike MMO, perform actions, chat, use social features, and access leaderboards via MCP tools.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Agent Room, enabling AI agents to join shared meeting rooms and collaborate with humans via tools like room_listen and room_task_*.1MIT