Skip to main content
Glama
sanztheo

claude-intercom

by sanztheo

πŸ“‘ claude-intercom

Real-time messaging between Claude Code instances. When one agent sends a message, the others get it instantly β€” no polling, no manual checks.

Built as an MCP server + filesystem watcher that wakes idle agents automatically via asyncRewake.

How it works

Terminal 1                          Terminal 2
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ claude (agent sgup)  β”‚            β”‚ claude (agent 4jov)  β”‚
β”‚                      β”‚            β”‚                      β”‚
β”‚ > send("4jov",       β”‚ ──JSON──▢ β”‚ πŸ“¬ sgup: tu touches  β”‚
β”‚   "tu touches        β”‚   file    β”‚    auth.ts ?          β”‚
β”‚    auth.ts ?")       β”‚            β”‚                      β”‚
β”‚                      β”‚ ◀──JSON── β”‚ > reply("Non,        β”‚
β”‚ πŸ“¬ 4jov: Non,        β”‚   file    β”‚   je suis sur        β”‚
β”‚   je suis sur billingβ”‚            β”‚   billing")          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Each instance gets a unique 4-char code (e.g. x7k2) on startup

  • Messages are JSON files in a shared store/ directory

  • A fs.watch watcher detects new files instantly and wakes the receiving agent

  • Dead agents are auto-cleaned via PID checking

Install

# Clone
git clone https://github.com/sanztheo/claude-intercom.git ~/.claude/mcp-intercom

# Install deps
cd ~/.claude/mcp-intercom && bun install

1. Register the MCP server

Add to ~/.mcp.json:

{
  "mcpServers": {
    "intercom": {
      "type": "stdio",
      "command": "bun",
      "args": ["~/.claude/mcp-intercom/src/server.ts"]
    }
  }
}

2. Add the auto-notification hooks

Add to ~/.claude/settings.json under "hooks":

{
  "hooks": {
    "PreToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bun ~/.claude/mcp-intercom/src/hook.ts",
            "timeout": 3000
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bun ~/.claude/mcp-intercom/src/watcher.ts",
            "asyncRewake": true,
            "timeout": 300000
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bun ~/.claude/mcp-intercom/src/watcher.ts",
            "asyncRewake": true,
            "timeout": 300000
          }
        ]
      }
    ]
  }
}

3. (Optional) Add the skill

Copy skill/SKILL.md to ~/.claude/skills/intercom/SKILL.md so agents proactively coordinate.

MCP Tools

Tool

Description

who

List active agents (filtered by project by default)

send

Send a message to an agent or broadcast to "all"

reply

Reply to a message (auto-acks the original)

peek

Check inbox for unread messages

ack

Acknowledge and delete a message

ack_all

Clear entire inbox

Auto-notification

Three layers ensure agents never miss a message:

Layer

When

How

Watcher (SessionStart + Stop)

Agent is idle

fs.watch on inbox dir β†’ exit(2) β†’ asyncRewake wakes the model

Hook (PreToolUse)

Agent is working

Checks inbox before every tool call

Skill (always active)

Agent makes decisions

Guides agent to announce work and check messages

Architecture

~/.claude/mcp-intercom/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ server.ts    # MCP server β€” 6 tools, auto-generated agent codes
β”‚   β”œβ”€β”€ store.ts     # Filesystem store β€” presence, messages, sessions
β”‚   β”œβ”€β”€ hook.ts      # PreToolUse hook β€” checks inbox on every tool call
β”‚   └── watcher.ts   # fs.watch β€” instant detection, asyncRewake push
β”œβ”€β”€ skill/
β”‚   └── SKILL.md     # Always-active skill for proactive coordination
└── store/           # Runtime data (gitignored)
    β”œβ”€β”€ presence/    # {code}.json β€” agent registration + PID
    β”œβ”€β”€ messages/    # {code}/*.json β€” per-agent inboxes
    └── sessions/    # {pid}.code β€” PID-to-agent-code mapping

Session linking (how the hook finds "its" agent)

The MCP server and hooks both run as children of the same Claude Code process. On startup, the server writes its agent code to sessions/{pid}.code for each PID in its ancestor chain. The hook walks up its own ancestor chain and matches against these files β€” the common ancestor (Claude Code) is the link.

Requirements

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sanztheo/claude-intercom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server