Relays messages between two Claude Code sessions on different machines using the Channels API
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Intercom.
send_messageSends a message and returns immediately with an **id**. It does not wait for an answer β the reply arrives later as its own inbound message.
check_messageAnswers the question a fire-and-forget channel otherwise can't: is this reply slow, or is it never coming? Pass an `id`, or omit it to list everything outstanding.
Two-way communication bridge between Claude Code sessions using the Channels API.
Let two Claude Code instances on different machines talk to each other in real-time. One sends a message, the other receives it instantly as a channel notification and can reply back.
Claude Code has native cross-session messaging now. Here's where Intercom is still the answer:
send_message reports sent, delivered-to-process and answered as three separate states, plus a check_message tool. You find out when the other side never picked it up, instead of planning around an answer that was never coming.If you're on macOS or Linux and you just want your own sessions talking to each other, native is simpler β use that. Everything else above is what this is for.
If you have a backend developer and a frontend developer each running Claude Code on separate machines, they currently have to relay questions through Slack/Discord/copy-paste. Claude Intercom creates a direct hotline between the two AI sessions β one Claude can ask the other about endpoints, schemas, or implementation details and get answers from the actual codebase.
Both instances run the same intercom.ts file. Each listens for HTTP messages and pushes them into its local Claude Code session via the Channels API. Each also exposes send_message and check_message tools that Claude can call.
Paste this into a Claude Code session on each machine and it will walk you through the whole thing. Run it on machine A first, keep the secret it gives you, then run it on machine B.
Prefer to do it by hand? The manual steps are below.
Nothing to install. npx fetches it on first run, on both machines.
You do need Bun on your PATH β the server uses Bun.serve for its HTTP listener, and the npx entry point hands off to it.
Then use "command": "bun" with "args": ["/path/to/claude-intercom/intercom.ts"] in the config below instead of the npx form.
Copy the example config into your project's .mcp.json.
First generate a secret, and use the same value on both machines:
Then export it in the shell you launch Claude Code from, rather than typing it into the config:
.mcp.json is a project file, and project files get committed. Claude Code expands ${VAR} in .mcp.json β in command, args, env, url and headers β so the config below can be checked in and shared with your teammate while the secret itself never leaves your environment.
Machine A (e.g. backend β static IP or VPS):
Machine B (e.g. frontend β can be behind NAT):
On both machines:
In either Claude Code session:
"Send a message to the other developer asking what API endpoints are available for the dashboard."
Claude will use the send_message tool to POST the message to the other machine. The other Claude receives it as a channel notification and responds.
Use Tailscale. Install it on both machines and they get stable private addresses on your own tailnet. Then point each side at the other's tailnet address:
This is strictly better than exposing a port to the internet: no public listener, no port forwarding, the address doesn't change when your ISP reassigns your IP, and device identity is enforced by Tailscale rather than resting entirely on a shared string. Set INTERCOM_HOST to your tailnet address β or to 127.0.0.1 if you are also fronting it with a tunnel β to be certain nothing outside can reach it at all.
If you can't use Tailscale, ngrok still works:
ngrok hostnames are detected and switched to HTTPS automatically. For any other tunnel β Cloudflare, Caddy, a reverse proxy of your own β write the scheme into REMOTE_HOST explicitly (https://your-host), or the secret goes out over cleartext HTTP.
Note this does put a publicly reachable endpoint in front of your Claude session, gated only by the shared secret β pick a strong one, and consider INTERCOM_HOST=127.0.0.1 so only the tunnel can reach the listener.
send_messageFactual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/intercom)<a href="https://allmcps.com/mcp/intercom"><img src="https://allmcps.com/api/badge/intercom?style=directory" alt="Intercom on AllMCPs" /></a>