MTM - MCP Telegram MORE
Provides tunnel functionality via Cloudflare's cloudflared service to expose the MCP server publicly, enabling Telegram MiniApp access and bot functionality from external networks.
Turns a Telegram bot into a full-featured remote control for Claude sessions, enabling remote chat with Claude through Telegram, tool approvals via Telegram messages, live task tracking in a Telegram MiniApp, and workspace switching via Telegram commands.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MTM - MCP Telegram MOREapprove the recent bash tool call from my phone"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MTM - MCP Telegram MORE
Custom Telegram channel for Claude Code — a daemon + MCP server + MiniApp that turns a Telegram bot into a full-featured remote control for your Claude sessions.
Features
Remote chat with Claude
Send messages to Claude from any Telegram client; Claude's replies stream back the same way.
File attachments supported in both directions (uploads / screenshots / downloads).
MiniApp inside the bot with three tabs: Chat, Tasks, Status.
Tool approvals over Telegram
Every risky tool call (Bash, Edit, Write, MCP tools, etc.) can require explicit approval.
Approval prompts arrive as Telegram messages with Allow/Deny buttons; you approve from your phone.
Tool-level allowlist lets you auto-approve safe tools (
/allow Read,/deny Bash sudo).Global YOLO mode (
/yolo on) temporarily disables approvals.
Live task tracking
Claude's
TodoWritelist is mirrored to the Tasks tab in real-time.Status transitions (pending → in_progress → completed) update live over WebSocket.
Sub-agent & tool visibility
Sticky status bar at the top of the MiniApp shows what Claude is doing right now ("main: Edit · config.ts", "main + 2 subagents running").
Collapsible agent bubbles for each sub-agent spawn — drill down into the tools each sub-agent ran.
Important tools (write-actions,
Task, MCP) are highlighted; read-only tools collapsed by default.Tool-event history retained for 7 days by default (configurable).
Workspace awareness
Multiple concurrent Claude sessions across different projects, each mapped to its own workspace.
/wscommand in the bot switches which workspace incoming messages target.
Access control
Pairing flow: DM the bot → receive 6-digit code → redeem with
/mcp-telegram:access pair <code>.Allowlist with
owner/userroles;ownercan promote and remove.Policy modes:
pairing(code-only),allowlist(closed),open(anyone — only for dev).
Tunnel abstraction
Public URL exposed via a pluggable tunnel provider.
Default URL is auto-pushed to Telegram as the bot's MiniApp button, including per-chat overrides for every allowlisted user.
Related MCP server: Straight Connect
Prerequisites
Bun —
curl -fsSL https://bun.sh/install | bashA tunnel tool matching your chosen provider:
A Telegram bot token from @BotFather (use
/newbot).Node.js (for the Claude Code hook scripts — any recent version).
Quick start
# 1. Clone & install workspace deps
git clone <repo> mcp-telegram && cd mcp-telegram
bun install
# 2. Put the bot token into the daemon's env file
mkdir -p ~/.mcp-tg
echo "TELEGRAM_BOT_TOKEN=<your-bot-token>" > ~/.mcp-tg/.env
# 3. Build the MiniApp (served statically by the daemon)
bun run --cwd packages/miniapp build
# 4. Start the daemon (long-running; keep in a terminal or use install-service)
bun run --cwd packages/daemon start
# Logs print the public tunnel URL and port 17080.
# 5. Load the plugin into Claude Code (for hook + MCP integration)
claude --dangerously-load-development-channels plugin:mcp-telegram@mcp-telegram-local
# 6. From inside Claude Code, configure and pair
/mcp-telegram:configure <BOT_TOKEN>
# DM your bot in Telegram → receive a 6-digit pair code
/mcp-telegram:access pair ABC123
# 7. Open the MiniApp by tapping the "Open" button in the bot chat.Configuration
~/.mcp-tg/.env (required)
Variable | Default | Purpose |
| — (required) | Bot token from @BotFather. |
|
| Local port the daemon listens on. |
|
| Where the DB, uploads, lock, tokens live. |
| auto-gen | HS256 signing key for MiniApp sessions. Generate on first boot if absent. |
| auto-gen via | Shared secret used by Claude Code hooks to POST into daemon. |
|
| Port the hook scripts target (usually same as |
|
| Retention for the tool-events audit log (hourly cleanup). |
Variables are read from ~/.mcp-tg/.env by the daemon at startup; you can also export them in your shell.
~/.mcp-tg/config.json (daemon-managed)
Managed by the daemon and the /mcp-telegram:configure skill. Keys:
tunnel_provider— one ofcloudflared|tuna|manual|none.tunnel_manual_url— only used whentunnel_provider = manual; must be a publicly reachable HTTPS URL proxying to127.0.0.1:17080.default_workspace— optional slug used for system-event broadcasts before any workspace connects.
Choosing a tunnel provider
# Default: cloudflared (auto-generated trycloudflare URL, rotates per restart)
/mcp-telegram:configure tunnel cloudflared
# tuna.am alternative
/mcp-telegram:configure tunnel tuna
# Bring-your-own public URL (nginx, frp, your domain, etc.)
/mcp-telegram:configure tunnel manual
# then edit ~/.mcp-tg/config.json and set tunnel_manual_url to your HTTPS endpoint.
# No public access (local MiniApp only; Telegram bot still works for chat)
/mcp-telegram:configure tunnel noneAfter changing provider, restart the daemon. The new URL is pushed to the Telegram bot automatically — both as the default MiniApp button and for every allowlisted user's per-chat override.
Slash commands (in Claude Code)
Command | Description |
| Write bot token to |
| Set tunnel provider (see above). |
| Redeem a 6-digit pair code received via bot DM. |
| Show the current allowlist. |
| Revoke access for a user. |
| Show or set |
| Install a systemd |
All skills talk to the running daemon at http://127.0.0.1:17080/admin/* using the bearer token in ~/.mcp-tg/admin.token (auto-generated on first boot, mode 0600).
Bot commands (in Telegram)
Command | Description |
| List workspaces / switch the target for incoming messages. |
| Show current approval status / toggle on/off. |
| Manage the auto-approve tool allowlist. |
| Add an allow rule. |
| Add a deny rule. |
| Globally disable/enable approval prompts. |
Out-of-band: DM any non-command text to send it to the currently selected workspace's Claude session.
Deployment
For ad-hoc use, bun run --cwd packages/daemon start in a terminal is enough. For anything persistent:
# Linux — systemd user service (starts at login, restarts on failure)
/mcp-telegram:install-service
# Logs: journalctl --user -u mcp-telegram -f
# Stop: systemctl --user stop mcp-telegram
# Disable: systemctl --user disable mcp-telegramOn macOS / Windows run the daemon under your own process manager (launchd, pm2, nssm, etc.) — the MVP does not ship install scripts for those platforms.
Architecture (brief)
daemon (
packages/daemon) — the only long-running process. Owns the bot, HTTP + WS servers, SQLite, tunnel, and approvals state.mcp-server (
packages/mcp-server) — a stdio process spawned per Claude Code session; thin WebSocket client of the daemon.miniapp (
packages/miniapp) — React SPA built once, served statically by the daemon at the tunnel URL.shared (
packages/shared) — protocol, status, and tool-event types.plugin (
plugin/) — Claude Code plugin with MCP server config, approval hooks, TodoWrite sync hook, and the sub-agent tool-events hook.
Full design docs live under docs/superpowers/specs/.
Tests
bun test # all workspaces
bun test --cwd packages/daemon # daemon-only
bun test --cwd packages/miniapp # MiniApp (vitest)Security
Pairing codes are in-memory only — a daemon restart invalidates them; DM the bot for a fresh code.
Never approve a pairing request that arrived through the bot itself. The
/mcp-telegram:accessskill refuses operations downstream of Telegram input to prevent prompt-injection via messages.MiniApp
initDatais validated server-side (HMAC-SHA256 per Telegram spec). MiniApp JWTs live 15 min.Daemon binds to
127.0.0.1; public reach exists only through the tunnel provider.MCP_TG_HOOK_TOKENis the only credential required by hooks; it stays inside~/.mcp-tg/.env(mode 0600) and is never sent outside127.0.0.1.Tool-event history is pruned after
MCP_TG_TOOL_EVENTS_TTL_DAYS(default 7);agent_sessionsindex is kept indefinitely as a compact audit trail.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA simple MCP server that allows Claude to access your Telegram account to read and send messages on your behalf.Last updated7Apache 2.0
- Flicense-qualityDmaintenanceAn MCP server for communication service connectors that currently provides multi-account Telegram integration with granular tool access and security controls. It allows AI models to manage messages, chats, and media across various accounts through a flexible, extensible routing architecture.Last updated1
- Flicense-qualityDmaintenanceA local MCP server that enables direct, persistent communication between multiple Claude Code agent sessions through a secure messaging channel. It includes built-in guardrails to manage message exchanges and supports optional human monitoring via Telegram.Last updated
- Alicense-qualityCmaintenanceMCP server that enables Claude Code to interact with a personal Telegram account via MTProto, providing over 120 tools for messaging, media, chat management, and more.Last updated2MIT
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/v0idhrt/MTM---MCP-Telegram-MORE'
If you have feedback or need assistance with the MCP directory API, please join our Discord server