Skip to main content

Telegram MCP bridge for Claude Code — daemon + stdio proxy with multi-session support

Project description

Telegram MCP Bridge

License: MIT Python 3.10+

Telegram MCP bridge for Claude Code — get notifications, ask questions, and interact with your Claude Code sessions through Telegram.

Each Claude Code session gets its own thread (topic) in a Telegram group, so you can monitor multiple sessions at once.

Features

  • Send messages — progress updates, final reports, notifications
  • Ask and wait — ask questions in Telegram and get answers back in Claude Code
  • Inline buttons — present options for the user to choose from
  • Send files — share screenshots, logs, documents
  • Real-time monitoring — watch for incoming Telegram messages
  • Multi-session — each Claude Code session gets its own Telegram thread

Architecture

Telegram group (is_forum: true, with Topics)
  └── Thread per session ("{project} #{pid} — {time}")
        │
  daemon.py  (single process, launchd, port 8765)
  aiohttp HTTP API + single Telegram long-polling via httpx
        │
  proxy.py  (stdio MCP, spawned by Claude Code)
  Thin FastMCP proxy: lazy registration on first tool call
        │
  Claude Code (any number of sessions)

Why two processes? Telegram Bot API allows only one getUpdates polling per token. The daemon centralizes polling and distributes messages to sessions via HTTP.

Quick Start

1. Create a Telegram bot and group

  1. Create a bot via @BotFather — save the token
  2. Create a Telegram group, enable Topics (group settings → Topics)
  3. Add the bot to the group as admin (needs "Manage Topics" permission)
  4. Get the group chat ID (send a message, then check https://api.telegram.org/bot<TOKEN>/getUpdates)

2. Install

pip install telegram-mcp-bridge

Or from source:

git clone https://github.com/OlegPrivet/telegram-mcp-bridge.git
cd telegram-mcp-bridge
pip install -e .

3. Configure

mkdir -p ~/.claude/channels/telegram-daemon
cat > ~/.claude/channels/telegram-daemon/.env << EOF
TELEGRAM_BOT_TOKEN=your-bot-token
TELEGRAM_CHAT_ID=-100your-group-id
DAEMON_PORT=8765
EOF

4. Start the daemon

tg-mcp-daemon

For macOS, use launchd for auto-start:

cd telegram-mcp-bridge
./launchd/generate-plist.sh
cp launchd/com.claude.tg-mcp-daemon.plist ~/Library/LaunchAgents/
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.claude.tg-mcp-daemon.plist

5. Register MCP in Claude Code

claude mcp add telegram -s user -- tg-mcp-proxy

Or if installed from source:

claude mcp add telegram -s user -- python3 -m telegram_mcp_bridge.proxy

MCP Tools

Tool Description
send_message(message) Send a message (fire-and-forget)
send_file(file_path, caption?) Send a file/screenshot to the thread
send_and_wait(message) Send and wait for a reply (5 min timeout)
send_and_wait_with_options(message, options) Send with inline buttons
monitor_chat() Wait for incoming message (30 min timeout)
check_inbox() Check for unread messages (non-blocking)
list_sessions() List active sessions

Management

Daemon

# Health check
curl -s http://127.0.0.1:8765/api/health

# Active sessions
curl -s http://127.0.0.1:8765/api/sessions | python3 -m json.tool

# Restart (launchd)
launchctl kickstart -k gui/$(id -u)/com.claude.tg-mcp-daemon

# Stop
launchctl bootout gui/$(id -u)/com.claude.tg-mcp-daemon

# Logs
tail -f ~/.claude/channels/telegram-daemon/daemon.log

Proxy

Proxy processes are spawned automatically by Claude Code — one per session. They unregister gracefully on exit.

# Proxy logs
tail -f /tmp/tg_mcp_proxy.log

Configuration

Variable Default Description
TELEGRAM_BOT_TOKEN Bot token from @BotFather (required)
TELEGRAM_CHAT_ID Group chat ID with topics (required)
DAEMON_PORT 8765 HTTP API port for daemon
SESSION_NAME auto Custom session name for the thread

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

telegram_mcp_bridge-0.1.2.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

telegram_mcp_bridge-0.1.2-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file telegram_mcp_bridge-0.1.2.tar.gz.

File metadata

  • Download URL: telegram_mcp_bridge-0.1.2.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for telegram_mcp_bridge-0.1.2.tar.gz
Algorithm Hash digest
SHA256 eb509317e0635043b4515800f6f3d5509410bb51bfa45f5aaefa68e09398fe10
MD5 d399ff581eccecbeba044d499d2c39bd
BLAKE2b-256 fc55e7c9fc81db64f3c39230548290c0413f49af2e53951ea37ea881a37f6560

See more details on using hashes here.

Provenance

The following attestation bundles were made for telegram_mcp_bridge-0.1.2.tar.gz:

Publisher: publish.yml on OlegPrivet/telegram-mcp-bridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file telegram_mcp_bridge-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for telegram_mcp_bridge-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c5e0a2b454f8e8668f80c2fc58a85caaa938cff6489547688bd5b7f598b8a63c
MD5 e4a276f727d6e8ba0ad6d98be4e044f3
BLAKE2b-256 bd8df2c9861728ba3fb16b4314521b53a6455e8d86b56f558512bb4ee8ed4b1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for telegram_mcp_bridge-0.1.2-py3-none-any.whl:

Publisher: publish.yml on OlegPrivet/telegram-mcp-bridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page