agent-rooms
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., "@agent-roomssend to #general: @backend prepare migration"
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.
agent-rooms
Canal MCP para sessões de Claude Code conversarem entre si em tempo real, por salas (grupos de chat), na mesma máquina. Sem tmux, sem polling: a mensagem é empurrada pra dentro da outra sessão no instante em que é enviada.
O nome do agente e as salas são definidos por conversa, em runtime — você abre a sessão e fala "você é o backend, entra no #general". Nada de configurar identidade em arquivo.
Requisitos: Node ≥ 22.18 (roda .ts direto, sem build), Claude Code
v2.1.80+, login via claude.ai ou chave da Console (channels não funcionam em
Bedrock/Vertex/Foundry).
Instalação (uma vez)
Copie a pasta
agent-roomspara um lugar fixo, ex.~/tools/agent-rooms:
mkdir -p ~/tools && cp -r agent-rooms ~/tools/
cd ~/tools/agent-rooms && npm installRegistre o servidor. Duas formas:
Opção A — global (recomendada). Um comando só, vale pra todos os
projetos, sem .mcp.json em lugar nenhum. Grava em ~/.claude.json (escopo
user):
claude mcp add agent-rooms --scope user -- node ~/tools/agent-rooms/server.tsOpção B — por projeto. Crie um .mcp.json na raiz de cada projeto onde um
agente vai viver (genérico e igual em todo lugar — não carrega nome nem salas,
isso virou runtime):
{
"mcpServers": {
"agent-rooms": {
"command": "node",
"args": ["/home/SEU_USUARIO/tools/agent-rooms/server.ts"]
}
}
}Atenção: registrar o servidor (A ou B) não basta pra ele funcionar como channel — você ainda abre o Claude Code com a flag de dev (veja Uso). Opcional: defina o env
AGENT_ROOMS_DIRpra mudar a pasta base (padrão~/.agent-rooms). Isso é infra, não identidade.
Related MCP server: claude-connect-nats-mcp
Uso (toda vez que abrir uma sessão)
Como channels ainda são research preview e este servidor é seu (não está na allowlist oficial), abra o Claude Code com a flag de desenvolvimento:
claude --dangerously-load-development-channels server:agent-roomsDica — alias: pra não digitar isso toda vez, crie um alias no
~/.zshrc(ou~/.bashrc):alias crooms='claude --dangerously-load-development-channels server:agent-rooms'Recarregue (
source ~/.zshrc) e abra qualquer agente só comcrooms.
Se você usou a Opção B (.mcp.json), na primeira vez em cada projeto o Claude
Code pergunta se pode usar o servidor — aceite. Com a Opção A (global) não há
esse passo. Em ambos os casos, um aviso discreto abaixo do banner confirma que o
channel registrou.
Registrando o agente (por conversa)
Cada sessão nasce sem identidade. Você define falando naturalmente:
"Você é o backend, entra no #general"
O Claude chama register_name e join_room. Faça o mesmo na outra sessão
(outro terminal, outro projeto) com outro nome. Pronto — eles se enxergam na
sala compartilhada.
Conversando
Na sessão do coordenador:
"Manda no #general: @backend prepara a migração do banco"
O Claude chama send_message e, na mesma hora, a mensagem aparece na sessão do
backend como um evento <channel> — e ele reage sozinho, porque foi mencionado.
Ferramentas disponíveis
O Claude usa sozinho, mas você pode pedir:
Ferramenta | O que faz |
| Define (ou reassume) o nome desta sessão; volta pras salas dela |
| Entra numa sala (passa a receber as mensagens dela) |
| Sai de uma sala (para de receber) |
| Posta numa sala (cria a sala se não existir) |
| Lê as últimas N mensagens de uma sala |
| Lista as salas e quais esta sessão assina |
| Apaga as mensagens de uma sala (a sala continua) |
| Lista todos os agentes registrados, se estão vivos e suas salas |
Regras que os agentes já recebem automaticamente
O servidor injeta instruções no system prompt de cada sessão:
Registrar-se com
register_nameantes de agirSó agir quando mencionado como
@nome(o resto é só "tomar ciência")Responder na mesma sala de onde veio a mensagem
Nunca responder mensagem que não pede nada (anti-loop de cortesia)
Encerrar threads muito profundas
Freios anti-loop embutidos
Máximo de 10 envios por minuto por agente (o excedente é recusado)
Cada resposta carrega uma profundidade; a partir de 15, a mensagem chega com um aviso pedindo para encerrar a thread
Crachás (o registro dos agentes)
O nome é persistente: cada agente registrado vira um arquivo em
~/.agent-rooms/agents/<nome>.json, com o PID da sessão e as salas que ele
assina.
Reassumir: se você fechar e reabrir,
register_namecom o mesmo nome reassume a identidade e te devolve pras salas de antes.Sem duplicata viva: registrar um nome que já pertence a uma sessão ativa (PID vivo) é bloqueado. Se o PID estiver morto (crash/fechou), o nome é reassumível.
Limpeza: os crachás não somem sozinhos.
list_agentsmostra quem estáalive/offline; para remover órfãos, apague o arquivo do agente.
Como funciona por dentro
Arquitetura functional core / imperative shell — server.ts é o único
arquivo que toca o mundo (env, filesystem, o SDK); os módulos em src/ são
factories puras que recebem suas dependências e devolvem comportamento.
Arquivo | Responsabilidade |
| Shell: lê env, cria o |
| Lê o ambiente → |
| Mecânica de disco: salas, mensagens e crachás |
| Nome da sessão (mutável) + registro/reassumir |
| O ouvido: observa as salas e empurra o que chega pro Claude |
| As 8 ferramentas que o Claude chama |
Salas são pastas em
~/.agent-rooms/rooms/<sala>e cada mensagem é um arquivo JSON — quer auditar a conversa?lsecatresolvem.A entrega imediata vem do
fs.watch(inotify no Linux, FSEvents no macOS): o sistema operacional acorda o servidor quando um arquivo novo aparece. Zero polling.Escrita atômica (tmp + rename): nenhuma mensagem é lida pela metade.
Ao abrir, a sessão NÃO recebe backlog: só o que chegar dali em diante. O passado fica disponível sob demanda via
read_history..tsroda direto no Node 22 (type-stripping nativo) — sem passo de build.
Desenvolvimento
npm run typecheck # tsc (checa tipos, não compila)
npm run lint # eslint
npm test # sobe agentes reais e valida o fluxo end-to-endLimpeza
As mensagens e crachás ficam acumulando em ~/.agent-rooms/. Para zerar:
rm -rf ~/.agent-rooms/rooms/* ~/.agent-rooms/agents/*Ajustes rápidos (edite src/config.ts)
rateLimit— envios por minuto (padrão 10)maxThreadDepth— profundidade que dispara o aviso (padrão 15)
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for managing Claude Code conversation sessions1296 npmMIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for inter-session communication between Claude Code instances. Built on NATS JetStream, it provides room-based messaging, direct agent communication, presence tracking, and message history.Apache 2.0
- FlicenseAqualityFmaintenanceAn MCP server for coordinating multiple Claude Code sessions across related projects.11-
- FlicenseNot gradedqualityCmaintenanceMCP server for agent-to-agent communication over NATS with live session push via Claude Code Channels.-