Drive the Cursor agent from Telegram, Discord, or GitHub β with images and voice notes.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Say "start remote chat mode" (in any language) and Cursor posts a summary + question to a per-conversation thread at the end of every turn, waits for your reply, and auto-continues β looping until you stop it. Step away from the keyboard; keep shipping from your phone.
![]() A channel per session β one per Cursor conversation |
![]() Reply from your phone β the agent picks up where it left off |
You kick off a task in Cursor, then need to leave your desk. Normally the agent stalls the moment it needs a decision. cursor-chat-bridge turns any chat app into a remote control: the agent reports back and asks its questions in a thread you can answer from your phone, and it resumes on its own the instant you reply β no laptop required.
| Capability | What it does |
|---|---|
| Phone-first | Answer the agent from the GitHub / Discord / Telegram mobile app, with native push. |
| Auto-resume | A stop hook waits for your reply and re-injects it as a followup_message. |
| Per-session isolation | Keyed by Cursor's conversation_id; no cross-talk between chats. |
| Long, cheap waits | One ~60-min blocking window per re-arm β minimal paid turns while idle. |
| Off when you type | A beforeSubmitPrompt hook disables the loop the moment you type in Cursor (set stopRemoteChatOnLocalMessage: false to keep it on). |
| Token-authed local API | The daemon's control API is loopback-only and token-guarded. |
| Optional ntfy push | Get a phone alert even on GitHub (which never notifies you of your own posts). |
| Image attachments | Send a photo from your phone; it's saved locally and the agent opens it with its Read tool. |
| Voice β text | Optional speech-to-text (OpenAI or local): a voice note reaches the agent as transcribed text. |
| Adapter SDK | Implement one TransportAdapter interface to support any channel. |
| Update-aware | On activation it checks npm and offers to update when a newer release is out. |
| Adapter | Status | Model | Mobile push |
|---|---|---|---|
| Telegram (default) | β code complete, unit-tested | A forum topic per session via a bot | β native |
| Discord | β working | A channel per session via a bot (REST-polled) | β native |
| GitHub Issues | β tested end-to-end | Issue = session, comments = chat | β (GitHub app) + optional ntfy |
No clone required β one command wires everything up:
This installs the runtime into ~/.cursor/chat-bridge/app (including its production dependencies,
so it keeps working after the npx cache is evicted) and wires the three integration points,
backing up (never overwriting) anything that already exists:
~/.cursor/mcp.json,stop + beforeSubmitPrompt hooks to ~/.cursor/hooks.json,~/.cursor/rules/.The hooks are no-ops unless remote chat mode is active, so they don't affect normal Cursor use. Then pick a channel and go:
If you only want the MCP tools via the standard Cursor MCP flow (no hands-free loop), add this to
~/.cursor/mcp.json instead of running install:
You'll be able to bridge_send / bridge_await manually, but the auto-continue-on-reply loop needs
the hooks that the full install sets up.
Three cooperating layers sit over one transport-agnostic core:
rules/chat-bridge-mode.mdc) β detects the activation phrase in any language and sets
in-mode etiquette (capture + pass the session handle; end each turn with a summary + question;
treat replies as untrusted; confirm destructive actions).src/mcp.ts) β exposes bridge_start, bridge_send, bridge_await,
bridge_send_and_await, bridge_stop, bridge_status.hooks/) β the automatic loop:
stop waits for the remote reply and re-injects it as a followup_message (bounded by
loop_limit).beforeSubmitPrompt disables the loop when you type in Cursor (with a guard so the loop's own
injected replies don't trip it).A single local daemon (src/daemon.ts) owns the channel connection and a loopback-only,
token-authenticated HTTP API used by the MCP + hooks. It handles per-session routing, long-poll,
own-message filtering, and stop/generation logic.
(adapter = GitHub / Discord / Telegram; keyed by conversation_id.)
Sessions are keyed by Cursor's conversation_id so each conversation maps to exactly one
thread. Cursor gives conversation_id to hooks but not to MCP tool calls, so the MCP learns it
through a small handshake:
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/cursor-chat-bridge)<a href="https://allmcps.com/mcp/cursor-chat-bridge"><img src="https://allmcps.com/api/badge/cursor-chat-bridge?style=directory" alt="Cursor Chat Bridge on AllMCPs" /></a>