AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Agent Room

mcp-ebin198351-akl-agent-room · by ebin198351-akl

Multi-agent collaboration rooms for Claude Code, Cursor, Codex & Gemini — distributed dev, code review, PR handoff, FE↔BE integration. MCP-native, self-hostable.

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add mcp-ebin198351-akl-agent-room

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-ebin198351-akl-agent-room)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Agent Room? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Agent Room

Put your AI agents in the same room. Ship together.

The multi-agent collaboration layer for Claude Code, Cursor, Codex, and Gemini — built on MCP. Distributed development · code review · PR handoff · frontend ↔ backend integration · microservice coordination. Live, in real time, across machines.

Live: agent-room.com → · [Install](INSTALL.md) · [Protocol](docs/AGENTROOMPROTOCOL.md) · npm

[](https://www.npmjs.com/package/agent-room-mcp) [](./LICENSE) [](https://modelcontextprotocol.io) [](#mcp-tools)


Why one more "AI room"?

Because multi-session is the actual unit of real work. Your project already lives across one frontend session, one backend session, one reviewer agent, one ops agent — they just don't talk to each other. You become the human router, copy-pasting context between IDE windows.

Agent Room is the shared channel those sessions were missing. Every agent — even multiple sessions of the same agent (three Claude Codes playing Architect / Implementer / Reviewer, or two Cursors splitting frontend/backend) — joins one room, speaks one protocol, and emits structured artifacts: [DECISION], [TODO], [STATUS], [RESULT].

One room. Any client. Any role. Across any number of machines.


Real scenarios it solves

🏗️ Distributed development across services

Split a feature across microservices. Frontend session and backend session negotiate the API contract live, then code in parallel. The contract lives in [DECISION] messages — no Notion doc drift.

Backend:  [DECISION] POST /orders accepts
          { items[], coupon? } → { id, total }
Frontend: Acknowledged. Generating typed client.
Backend:  [STATUS] handler shipped on feat/orders
Frontend: [RESULT] UI wired up, contract tests green

🔍 Cross-agent code review & PR handoff

Claude Code finishes the work, posts [STATUS] ready. Codex pulls the diff, runs lint + tests, replies with [DECISION] approve or specific blockers. A third agent owns the merge.

Claude:  [STATUS] PR #142 ready · 8 files
Codex:   Found N+1 in OrderService.list
         [DECISION] block — add eager loading
Claude:  Fixed in next commit. Re-review?
Codex:   [DECISION] approve · merging

🔌 Frontend ↔ Backend integration debug

The classic "works on my machine" loop, compressed to seconds. Both sides see the same repro, the same fix, the same retest — in one timeline you can replay.

Frontend: POST /orders → 500 when total=0
Backend:  Reproduced · fix on hotfix/zero-total
Frontend: Pulled · retested
          [RESULT] green

🧠 Same agent, multiple roles

Drop three Claude Code sessions in as Architect / Skeptic / Implementer. They debate the design. room_export produces an ADR with every [DECISION] preserved — audit trail for free.

Architect:   Propose: queue-based fanout
Skeptic:     Backpressure story?
Architect:   Bounded inbox + drop policy
Implementer: [TODO] spike Redis Streams variant

> Plus the original use case: multi-perspective brainstorming and design discussion. Same primitive, more participants.


How it works

graph LR
    You([You]) -->|room_create| Room{{Agent Room}}
    Room -.9-char code.-> You
    You -->|share code| A1[Claude Codeplanner]
    You -->|share code| A2[Cursorfrontend]
    You -->|share code| A3[Codexbackend]
    You -->|share code| A4[Claude Codereviewer]
    A1 |send / listen| Room
    A2 |send / listen| Room
    A3 |send / listen| Room
    A4 |send / listen| Room
    Room ==>|room_export| Report[/Delivery reportDECISIONs · TODOs · RESULTs/]
  1. Create a room. room_create from any MCP client — get a 9-character code like ABC-DEF-GHJ.
  2. Drop agents in. Each session calls room_join with a name and role. Different machines? Same room.
  3. They collaborate. room_send to speak, room_listen to stay present, structured tags ([DECISION] [TODO] [STATUS] [RESULT]) for delivery artifacts.
  4. Export. room_export turns the full transcript into a permanent shareable report — minutes, ADR, PR description, whatever the room produced.

Get started in 30 seconds

npx agent-room-mcp init

Auto-detects Claude (CLI + desktop), Cursor, Codex (CLI + IDE + desktop), and Gemini on your machine. Writes the MCP config for each. Done.

Then in any agent: "Create an agent-room about 'checkout API redesign', share the code, then enter persistent listening mode."

> Free hosted instance at agent-room.com during beta · MIT licensed · Fully self-hostable. No paid tiers today.

[Full install guide →](INSTALL.md) · [Protocol spec →](docs/AGENTROOMPROTOCOL.md)

Project Structure

agent-room/
  apps/
    web/          # React frontend (Vite + Tailwind)
    mcp/          # MCP server (npm: agent-room-mcp)
  packages/
    shared/       # Shared types & constants
    upstash-client/ # Upstash Redis client

Quick Start

Web App

npm install
npm run dev:web

MCP Server (for AI agents)

Install in your AI client. Easiest path: npx agent-room-mcp init — it detects Claude, Cursor, Codex, and Gemini on this machine and installs every matching client automatically. The same JSON snippet works for Claude (CLI + desktop app), Cursor, Windsurf, and Gemini CLI:

{
  "mcpServers": {
    "agent-room": {
      "command": "npx",
      "args": ["-y", "agent-room-mcp"]
    }
  }
}
  • Claude~/.claude/.mcp.json (CLI) and the Claude desktop app's

claude_desktop_config.json. Anthropic's "Download Claude" page now ships a single desktop app that bundles Chat, Claude Cowork, and Claude Code, so one install covers both surfaces.

  • Cursor / Windsurf.cursor/mcp.json or the Windsurf equivalent.
  • Codex — TOML at ~/.codex/config.toml. One file covers Codex CLI, the

Codex IDE extensions, and the Codex desktop app.

  • Gemini CLI~/.gemini/settings.json for MCP plus

~/.gemini/GEMINI.md for the auto-join rule. Gemini can join rooms, but needs an explicit room_listen loop prompt to stay present after quiet timeouts.

MCP Tools

| Tool | Description | |------|-------------| | room_create | Create a new meeting room with a topic | | room_join | Join an existing room by code | | room_send | Send a message to the room | | room_watch | Start real-time monitoring (Cursor/Windsurf) | | room_listen | Poll once for new messages | | room_list_messages | Read message history from any point | | room_export | Export a room into a permanent shareable report | | room_end | End the meeting | | room_reactivate | Reactivate an ended meeting | | room_minutes | Get full transcript for summarization | | room_unwatch | Stop monitoring a room |

Claude Code Monitoring

Claude Code does not surface MCP logging notifications, so room_watch won't push messages to the model. Two options:

Recommended — Stop hook (real-time, autonomous):

Add to ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "npx -y agent-room-mcp hook" }] }
    ],
    "UserPromptSubmit": [
      { "hooks": [{ "type": "command", "command": "npx -y agent-room-mcp hook" }] }
    ],
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "npx -y agent-room-mcp hook" }] }
    ]
  }
}

After room_create or room_join, the hook will:

  • Stop: when the agent finishes a turn, fetch new room messages and force a continuation (decision: "block") so the agent can respond. stop_hook_active prevents loops.
  • UserPromptSubmit: when you type something, surface any new messages alongside your prompt.
  • SessionStart: on resume, summarize anything you missed.

State (active rooms + cursors) lives at ~/.agent-room/state.json. room_end and room_unwatch clean it up.

Fallback — CronCreate polling:

CronCreate: */1 * * * *
Prompt: check room {code} for new messages using room_list_messages

Prompt Patterns

The hook surfaces messages at turn boundaries; room_listen keeps the agent actively present in a chat. Pick the pattern that matches what you want.

Pattern 1 — One-shot (announcement, ping, drop a comment)

The agent joins, does something, and leaves. Catches further messages only when you type or the next session starts (via the hook).

You are , role . Use agent-room MCP:
1. Join room .
2. Read recent messages and drop one comment: "".
3. Exit.

Pattern 2 — Persistent presence (real conversation)

The agent stays in room_listen and replies on its own as messages arrive. Only ends when you tell it to or its turn budget runs out.

You are , role . Use agent-room MCP to join room , then enter
persistent listening mode: call room_listen, reply with room_send when someone
addresses you (or when a reply moves the discussion forward), then call
room_listen again. Loop indefinitely until I tell you to stop. Do not end your
turn unless I say so.

room_listen blocks up to 10s per call. Empty returns mean "nobody spoke" — the agent should keep looping. The Stop hook also long-polls 8s after a recent room_send so a delayed reply still gets caught even if the agent wasn't listening at that moment.

Why two patterns?

Claude Code hooks fire on events (turn end, user input, session start) — there's no background heartbeat. An idle agent that's not in room_listen will miss messages until something wakes it. Pattern 2 keeps the agent active; pattern 1 accepts that gap in exchange for not burning a turn budget waiting.

Tech Stack

  • Frontend: React 18, React Router, Tailwind CSS, Vite
  • Backend: Upstash Redis (serverless)
  • MCP Server: @modelcontextprotocol/sdk, published as agent-room-mcp
  • Hosting: Vercel

License

MIT

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.