ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Intercom

โดย MuhammadTalhaMTรุ่น 2.1.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.MuhammadTalhaMT/intercom

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Relays messages between two Claude Code sessions on different machines using the Channels API

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: อื่น ๆ
  • ต้องใส่ค่าเหล่านี้: MY_ROLE, REMOTE_HOST, INTERCOM_SECRET

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: MY_ROLE, REMOTE_HOST, INTERCOM_SECRET, INTERCOM_PORT, INTERCOM_HOST, INTERCOM_SEND_TIMEOUT_MS

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "intercom": {
      "command": "npx",
      "args": [
        "-y",
        "claude-intercom"
      ],
      "env": {
        "MY_ROLE": "ใส่ค่าของคุณ",
        "REMOTE_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SECRET": "ใส่ค่าของคุณ",
        "INTERCOM_PORT": "ใส่ค่าของคุณ",
        "INTERCOM_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SEND_TIMEOUT_MS": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add intercom --env MY_ROLE='ใส่ค่าของคุณ' --env REMOTE_HOST='ใส่ค่าของคุณ' --env INTERCOM_SECRET='ใส่ค่าของคุณ' --env INTERCOM_PORT='ใส่ค่าของคุณ' --env INTERCOM_HOST='ใส่ค่าของคุณ' --env INTERCOM_SEND_TIMEOUT_MS='ใส่ค่าของคุณ' -- npx -y claude-intercom

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "intercom": {
      "command": "npx",
      "args": [
        "-y",
        "claude-intercom"
      ],
      "env": {
        "MY_ROLE": "ใส่ค่าของคุณ",
        "REMOTE_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SECRET": "ใส่ค่าของคุณ",
        "INTERCOM_PORT": "ใส่ค่าของคุณ",
        "INTERCOM_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SEND_TIMEOUT_MS": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "intercom": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "claude-intercom"
      ],
      "env": {
        "MY_ROLE": "ใส่ค่าของคุณ",
        "REMOTE_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SECRET": "ใส่ค่าของคุณ",
        "INTERCOM_PORT": "ใส่ค่าของคุณ",
        "INTERCOM_HOST": "ใส่ค่าของคุณ",
        "INTERCOM_SEND_TIMEOUT_MS": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • MY_ROLE จำเป็น env
    Label for this instance, e.g. backend or frontend. Appears in message tags so the other side knows who is talking.
  • REMOTE_HOST จำเป็น env
    Address of the other machine as host:port. A Tailscale address is recommended over a public one.
  • INTERCOM_SECRET ความลับ จำเป็น env
    Shared 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_PORT env
    Port to listen on for incoming messages. Defaults to 8788.
  • INTERCOM_HOST env
    Interface 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_MS env
    How long an outbound POST may hang before giving up. Defaults to 10000.

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub MuhammadTalhaMT ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 32357 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 27% ของอีก 32357 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 32357 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Intercom ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: MY_ROLE, REMOTE_HOST, INTERCOM_SECRET

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.1.0) เข้า registry 3 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Parano1d node

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Spec Driven Development

โดย formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

รันบนเครื่อง★ 440MITอัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

Remote Desktop Commander

โดย desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

รันบนคลาวด์★ 211อัปเดต เมื่อวาน
ติดตั้ง

Parano1d node

โดย noidium

Local Parano1d node over MCP. Read-only by default; sending needs the opt-in, capped wallet mode.

รันบนเครื่องอัปเดต วันนี้
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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_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.

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.

  1. Check prerequisites. Confirm bun --version works and that claude --version is 2.1.80 or newer. If Bun is missing, tell me how to install it for my OS and stop there.
  1. 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.
  1. 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
  1. 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.
  1. Write .mcp.json in this project with an "intercom" server: command npx, args ["-y", "claude-intercom"], and env MY_ROLE, REMOTE_HOST (the other machine plus :8788), INTERCOM_SECRET, INTERCOM_PORT set to 8788. If .mcp.json already exists, merge the intercom entry into it instead of overwriting the file. Make sure .mcp.json is gitignored, it holds the secret.
  1. Tell me to restart Claude Code on this machine with: claude --dangerously-load-development-channels server:intercom and explain that the flag is needed because the channels capability is still experimental, and that messages only arrive while both sides are running.
  1. 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_message reports 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.

ArgumentRequiredDescription
messageYesThe text to send
replyToNoThe id of the incoming message this answers, so the sender can correlate it
expectReplyWithinNoHow 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:

StateMeaning
sentWe tried, but the remote process never acked it. The other machine is probably unreachable
delivered-to-processTheir intercom took it. Their Claude may or may not have read it — that session could be idle, closed, or out of usage
answeredA 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 VariableRequiredDefaultDescription
MY_ROLEYesdeveloper-aLabel for this instance (appears in message tags)
REMOTE_HOSTYeslocalhost:8789Address of the other machine (host:port or tunnel URL). Include https:// for any TLS tunnel that isn't ngrok
INTERCOM_SECRETYes*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_PORTNo8788Port to listen on for incoming messages

| INTERCOM_HOST | No | 0.0.0.0 | Interface to b

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx