Intercom
What it does
Relays messages between two Claude Code sessions on different machines using the Channels API
- Connects パソコンで動く
- Account or key Needs MY_ROLE, REMOTE_HOST, INTERCOM_SECRET
- Category チャット・メール
インストール
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
Intercom に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
パソコン版 Claude アプリの設定ファイルを開く
SettingsDeveloperEdit Config
この設定を貼り付けて保存
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Claude を終了してもう一度開く
試してみる
Intercom を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Intercom を使っていると言うか、回答に Intercom のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Intercom につなげません
Intercom はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
代わりにできること
A · Intercom につなげるアプリを使う
- Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
- Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
- Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
- Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
B · チャット・メール の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
- Inbox Zero✓ ChatGPT
- draw.io✓ ChatGPT
- TradingMCP✓ ChatGPT
Claude Code につなげますが、先に準備が必要です
Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
Intercom に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
ターミナルを開く
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
このコマンドを貼り付けて Enter
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Enter の前に「your-value」を自分のキーに書き換えてください
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Claude Code で /mcp と入力
Intercom が一覧にあり、接続済みと表示されれば OK です
試してみる
Intercom を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Intercom を使っていると言うか、回答に Intercom のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
Intercom に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
このボタンで Cursor を開く
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーを入力
Intercom の設定で MY_ROLE, REMOTE_HOST, INTERCOM_SECRET, INTERCOM_PORT, INTERCOM_HOST, INTERCOM_SEND_TIMEOUT_MS が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Cursor の AI チャットを Agent モードで開く
試してみる
Intercom を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Intercom を使っていると言うか、回答に Intercom のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
Intercom のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
Intercom に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
このボタンで VS Code を開く
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーを入力
Intercom の設定で MY_ROLE, REMOTE_HOST, INTERCOM_SECRET, INTERCOM_PORT, INTERCOM_HOST, INTERCOM_SEND_TIMEOUT_MS が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
VS Code の AI チャットを Agent モードで開く
試してみる
Intercom を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Intercom を使っていると言うか、回答に Intercom のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
開発者向け:ターミナルのコマンドと JSON 設定
パソコンにインストール
Claude Code
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Claude Desktop (claude_desktop_config.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Cursor (~/.cursor/mcp.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
VS Code (mcp.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
自分で入力する値
MY_ROLE必須 envLabel for this instance, e.g. backend or frontend. Appears in message tags so the other side knows who is talking.REMOTE_HOST必須 envAddress of the other machine as host:port. A Tailscale address is recommended over a public one.INTERCOM_SECRET秘密 必須 envShared secret authenticating messages between the two instances. Must match on both sides. There is no default: without it the intercom starts unpaired, binds no port, and refuses to send.INTERCOM_PORTenvPort to listen on for incoming messages. Defaults to 8788.INTERCOM_HOSTenvInterface to bind the listener to. Defaults to 0.0.0.0. Set 127.0.0.1 when a tunnel fronts the intercom, so only the tunnel can connect.INTERCOM_SEND_TIMEOUT_MSenvHow long an outbound POST may hang before giving up. Defaults to 10000.
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ひと目でわかる
使えるアプリ
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月13日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント MuhammadTalhaMT で確認済みです
- ✓ 合格
今もメンテナンスされている
コードの最終更新:3 か月前
- ✓ 合格
ライセンスがある
MITを使用
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
話し合い
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
ユーザーレビュー
まだレビューはありません
チャット・メールのほかのサーバーとの比較i
- このカテゴリのほかの2003件のうち96%よりスターが多い
- このカテゴリのほかの2003件のうち22%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの2003件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Intercomは安全ですか?
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:MY_ROLE, REMOTE_HOST, INTERCOM_SECRET
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は3 か月前、最新バージョン(2.1.0)がレジストリに届いたのは3 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:Inbox Zero, draw.io, TradingMCP
同じカテゴリのほかの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
draw.io
Create draw.io diagrams in chat from Mermaid or XML, shown live and interactive. 10,000+ shapes.
TradingMCP
Market analysis for AI assistants: screeners, multi-timeframe analysis, backtests, in-chat charts.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Claude Intercom
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.
What Intercom does that native can't
Claude Code has native cross-session messaging now. Here's where Intercom is still the answer:
- Two different people. This is the big one. Native connects *your* sessions — the inbox is tied to your own OS user and cross-machine delivery rides your own Remote Control. A backend dev on their laptop and a frontend dev on theirs are two accounts, and native can't join them. That two-person hotline is exactly what Intercom was built for.
- Native Windows. Native messaging is macOS and Linux only. Intercom is Bun over HTTP and doesn't care what OS you run.
- Your network, not Anthropic's. Native cross-machine messages relay through Anthropic servers. Intercom POSTs straight over your own network, VPN or tunnel.
- Any provider. Works on Bedrock, Vertex and Foundry, and in telemetry-disabled environments, where native messaging is switched off.
- Container to host. Native discovery works through files on disk, so a session in a container and one on the host can't see each other. Intercom just needs a reachable port.
- Honest delivery.
send_messagereportssent,delivered-to-processandansweredas three separate states, plus acheck_messagetool. 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.
Why?
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.
Architecture
Machine A Machine B
(e.g. backend dev) (e.g. frontend dev)
Claude Code A Claude Code B | | +-- intercom.ts ---HTTP POST----> intercom.ts --+ | (channel) <--HTTP POST-- (channel) | | | +-- stdio (MCP) --+ +-- stdio (MCP) -----+ | | Claude A Claude B
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.
Requirements
- Claude Code v2.1.80 or later
- Bun runtime
- Both machines must be able to reach each other over HTTP. Tailscale is the recommended way — see Connecting the two machines
Set it up with Claude
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.
Set up claude-intercom on this machine so this Claude Code session can message
a Claude Code session on my other machine.
Work through this in order, and stop and ask me whenever you need something only I can tell you.
- Check prerequisites. Confirm
bun --versionworks and thatclaude --versionis 2.1.80 or newer. If Bun is missing, tell me how to install it for my OS and stop there.
- Work out how the two machines will reach each other. Run
tailscale ip -4. If that returns an address we'll use Tailscale. If Tailscale isn't installed, tell me it's the recommended option and ask whether I want to install it or use something else.
- Ask me these, one at a time:
- a short role name for THIS machine, e.g. "frontend", "vps", "laptop"
- the address of the OTHER machine (hostname or IP)
- whether this is the first machine I'm setting up or the second
- Handle the shared secret.
- First machine: generate a strong random secret, show it to me once, and tell me I'll need it when I run this on the other machine.
- Second machine: ask me to paste the secret from the first one. Both machines must end up with exactly the same secret.
- Write
.mcp.jsonin this project with an "intercom" server: commandnpx, args["-y", "claude-intercom"], and envMY_ROLE,REMOTE_HOST(the other machine plus:8788),INTERCOM_SECRET,INTERCOM_PORTset to 8788. If.mcp.jsonalready exists, merge the intercom entry into it instead of overwriting the file. Make sure.mcp.jsonis gitignored, it holds the secret.
- Tell me to restart Claude Code on this machine with:
claude --dangerously-load-development-channels server:intercomand explain that the flag is needed because the channels capability is still experimental, and that messages only arrive while both sides are running.
- Once both machines are up, tell me to test it by asking one session to send a message to the other. Remind me that
send_messagereports sent / delivered-to-process / answered separately, so "delivered" means the remote process accepted it, not that the other Claude has read it.
Don't invent configuration keys. The only environment variables are MY_ROLE, REMOTE_HOST, INTERCOM_SECRET, INTERCOM_PORT and INTERCOM_SEND_TIMEOUT_MS.
Prefer to do it by hand? The manual steps are below.
Quick Start
1. Install
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.
Prefer to run from source?
git clone https://github.com/MuhammadTalhaMT/claude-intercom.git
cd claude-intercom bun install
Then use "command": "bun" with "args": ["/path/to/claude-intercom/intercom.ts"] in the config below instead of the npx form.
2. Configure
Copy the example config into your project's .mcp.json.
First generate a secret, and use the same value on both machines:
openssl rand -base64 32
Then export it in the shell you launch Claude Code from, rather than typing it into the config:
export INTERCOM_SECRET='the-value-you-just-generated'
.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):
{
"mcpServers": { "intercom": { "command": "npx", "args": ["-y", "claude-intercom"], "env": { "MY_ROLE": "backend", "REMOTE_HOST": "MACHINE_B_IP:8788", "INTERCOM_SECRET": "${INTERCOM_SECRET}", "INTERCOM_PORT": "8788" } } } }
Machine B (e.g. frontend — can be behind NAT):
{
"mcpServers": { "intercom": { "command": "npx", "args": ["-y", "claude-intercom"], "env": { "MY_ROLE": "frontend", "REMOTE_HOST": "MACHINE_A_IP:8788", "INTERCOM_SECRET": "${INTERCOM_SECRET}", "INTERCOM_PORT": "8788" } } } }
3. Start
On both machines:
claude --dangerously-load-development-channels server:intercom
4. Talk
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.
Connecting the two machines
Use [Tailscale](https://tailscale.com). 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:
"REMOTE_HOST": "other-machine:8788"
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.
Alternative: ngrok
If you can't use Tailscale, ngrok still works:
# On the machine behind NAT
ngrok http 8788
"REMOTE_HOST": "your-subdomain.ngrok-free.app"
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.
Tools
send_message
Sends a message and returns immediately with an id. It does not wait for an answer — the reply arrives later as its own inbound message.
| Argument | Required | Description |
|---|---|---|
message | Yes | The text to send |
replyTo | No | The id of the incoming message this answers, so the sender can correlate it |
expectReplyWithin | No | How long a reply should reasonably take: "30s", "5m", "2h" |
The acknowledgement deliberately does not claim the other developer received it. An HTTP 200 proves the remote *process* accepted the message, not that the other Claude ever read it.
check_message
Answers 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.
Every message sits in one of three states:
| State | Meaning |
|---|---|
sent | We tried, but the remote process never acked it. The other machine is probably unreachable |
delivered-to-process | Their intercom took it. Their Claude may or may not have read it — that session could be idle, closed, or out of usage |
answered | A reply came back carrying replyTo for this id |
expectReplyWithin is what makes "overdue" mean anything, and it's per message rather than one global timeout — so a quick endpoint lookup and a long investigation aren't judged on the same clock.
Configuration
| Environment Variable | Required | Default | Description |
|---|---|---|---|
MY_ROLE | Yes | developer-a | Label for this instance (appears in message tags) |
REMOTE_HOST | Yes | localhost:8789 | Address of the other machine (host:port or tunnel URL). Include https:// for any TLS tunnel that isn't ngrok |
INTERCOM_SECRET | Yes | *none* | Shared secret — must match on both sides. There is no default: unset, left as a docs placeholder, or an unexpanded ${VAR}, and the intercom refuses to pair |
INTERCOM_PORT | No | 8788 | Port to listen on for incoming messages |
| INTERCOM_HOST | No | 0.0.0.0 | Interface to b