Telegram MCP

io.github.n24q02m由 GitHub 帳號 n24q02m 發布v4.23.0更新於 Oct 29, 2026

Telegram for AI agents: messages, chats, media, and contacts in bot and user-account modes.

已驗證STDIO僅桌面檔案與儲存溝通與協作

概覽

AI 產生的概覽

Telegram MCP 伺服器,讓 AI 助理透過機器人權杖或使用者帳號收發與管理訊息、聊天、媒體和聯絡人。

可以做什麼
  • 傳送、編輯、刪除、轉寄、置頂、回應訊息,並搜尋與瀏覽歷史紀錄
  • 列出、建立、加入、離開與管理聊天、群組和頻道,包含成員與論壇話題
  • 傳送照片、檔案、語音和影片,並從訊息下載媒體
  • 列出、搜尋、新增聯絡人,並在使用者模式下封鎖或解除封鎖使用者
  • 查看伺服器狀態、調整執行期設定、清除快取,並提供內建說明與文件資源
適用情境
適合讓助理直接在 Telegram 中工作:草擬並傳送訊息、整理聊天與頻道、轉寄或置頂內容,或把媒體與歷史紀錄帶入工作流程。機器人模式適合頻道與群組自動化;需要以個人身分操作(包含封鎖聯絡人)時則需使用者帳號模式。
執行需求
以 stdio 方式在本機執行,可透過 uvx(Python 套件 n24q02m-telegram)或 Docker 啟動。機器人模式需要 TELEGRAM_BOT_TOKEN;使用者模式需要手機號碼並完成 OTP 及選用的 2FA,可用 TELEGRAM_API_ID 與 TELEGRAM_API_HASH 覆寫內建 API 組。憑證可用 telegram auth 指令儲存或透過環境變數提供。選用 HTTP 模式,支援 bearer 權杖驗證。
安裝前請注意
此伺服器操作真實 Telegram 帳號:工具可傳送、編輯、刪除、轉寄、置頂和回應訊息,建立或離開聊天,封鎖使用者,出錯會被他人看見。使用者模式會在磁碟儲存 Telethon 工作階段與憑證,能存取該作業系統帳戶的人皆可讀取。請將 TELEGRAM_BOT_TOKEN 與 TELEGRAM_API_HASH 視為機密。無驗證的 HTTP 模式僅限本機回環;對外暴露需 TLS 反向代理與權杖驗證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Telegram MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

telegram

mcp-name: io.github.n24q02m/better-telegram-mcp

Telegram for AI agents: messages, chats, media, and contacts in bot and user-account modes.

[Mode] [CI] [codecov] [PyPI] [Docker] [License: Apache-2.0]

[Python] [Telegram] [MCP] [semantic-release] [Renovate]

Sister projects from n24q02m (click to expand)
ProjectTaglineTag
agent-chat-pluginPeer AI agents chat in a shared folder — no human relay, no orchestrator, wor...Tooling
better-code-review-graphKnowledge graph for token-efficient code reviews -- semantic search and call-...MCP
better-drive2-way Google Drive sync with .driveignore filter — rclone engine, Windows trayTooling
better-email-mcpIMAP/SMTP email for AI agents -- read, send, organize folders, and manage att...MCP
better-godot-mcpComposite MCP server for Godot Engine -- 17 composite tools for AI-assisted g...MCP
better-notion-mcpMarkdown-first Notion for AI agents -- pages, databases, blocks, and comments...MCP
better-semantic-releaseDrop-in python-semantic-release fork with built-in release-safety guards (orp...Tooling
better-telegram-mcpTelegram for AI agents -- messages, chats, media, and contacts across both bo...MCP
better-workspace-mcpGoogle Workspace MCP server (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...MCP
claude-pluginsClaude Code plugin marketplace for the n24q02m MCP servers -- install web sea...Marketplace
imagine-mcpImage and video understanding + generation for AI agents -- across Gemini, Op...MCP
jules-task-archiverChrome Extension for bulk operations on Jules tasks via batchexecute API -- a...Tooling
mcp-coreShared foundation for building MCP servers -- Streamable HTTP transport, OAut...MCP
mnemo-mcpPersistent AI memory with hybrid search and embedded sync. Open, free, unlimi...MCP
qwen3-embedLightweight Qwen3 text embedding and reranking via ONNX Runtime and GGUFLibrary
skretSecrets without the server.CLI
tacetA self-distilling neuro-symbolic cascade that amortises LLM cost across knowl...Tooling
web-coreShared web infrastructure package for search, scraping, HTTP security, and st...Library
wet-mcpOpen-source MCP server for AI agents: web search, content extraction, and lib...MCP

Table of contents

[better-telegram-mcp MCP server]

Features

  • Dual mode -- Bot API (httpx) for bots, MTProto (Telethon) for user accounts
  • 6 tools with action dispatch: message, chat, media, contact, config, help
  • Auto-detect mode -- Set a bot token for bot mode, or a phone number for user mode
  • Local CLI auth -- telegram auth handles the bot token, or phone + OTP + 2FA, on the machine that runs the server
  • Stdio or HTTP -- stdio by default; HTTP with no-auth (loopback only), a single bearer token, or per-user tokens
  • Tool annotations -- Each tool declares readOnlyHint, destructiveHint, idempotentHint, openWorldHint
  • MCP Resources -- Documentation available as telegram://docs/* resources
  • Security hardened -- SSRF protection, path traversal prevention, error sanitization, prompt-injection boundary tags on Telegram content

Install

bash
# Claude Code plugin (stdio, bot mode)/plugin marketplace add n24q02m/claude-plugins/plugin install better-telegram-mcp@n24q02m-plugins
# Direct uvx invocation (stdio, bot mode)claude mcp add telegram -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF -- uvx n24q02m-telegram
# Docker stdiodocker run -i --rm -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF n24q02m/telegram

The package is n24q02m-telegram (formerly better-telegram-mcp; the old package receives one final release then freezes). The MCP Registry id stays io.github.n24q02m/better-telegram-mcp, the Docker image is n24q02m/telegram, and the legacy better-telegram-mcp command is kept as an alias of telegram. Local data moves once from ~/.better-telegram-mcp to ~/.telegram on first start.

Install matrix

ClientInstall
Claude Code/plugin marketplace add n24q02m/claude-plugins + /plugin install better-telegram-mcp@n24q02m-plugins (stdio bot mode), or claude mcp add as in the block above
Cursor / Windsurf / Gemini CLI / any MCP clientmcpServers JSON in the client's config: stdio command, or type: "http" + url pointing at a server you run (see HTTP mode)

Install with AI agent -- paste this to your AI coding agent:

Install MCP server telegram following the steps at https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-telegram-mcp/setup-with-agent.md

Setup

Credentials are configured on the machine that runs the server.

Bot mode: set TELEGRAM_BOT_TOKEN in the client config, or save it once:

bash
telegram auth --bot-token 123456:ABC-DEF

User mode: sign in interactively with your phone number. Telegram sends an OTP; a 2FA password is prompted if the account has one. The Telethon session is stored on disk.

bash
telegram auth --phone +15551234567

Check the result with telegram status. The server reads saved credentials at startup, so restart it after telegram auth. Without any credentials the stdio server prints these instructions to stderr and exits with status 1.

Smithery

Also listed on Smithery. Per smithery.yaml, Smithery starts the server over stdio with uvx --python 3.13 n24q02m-telegram and takes no install-time configuration (empty configSchema). Credentials come from the TELEGRAM_BOT_TOKEN env var or a prior telegram auth (see Setup).

Configuration

Settings load from TELEGRAM_-prefixed environment variables (Pydantic Settings). Env vars take precedence over credentials saved by telegram auth.

VariableRequiredDescription
TELEGRAM_BOT_TOKENBot modeBot token from @BotFather (format 123456789:ABCdef...)
TELEGRAM_PHONEUser modePhone number in +<country><number> form
TELEGRAM_API_ID / TELEGRAM_API_HASHNoOverride the bundled public API pair
USE_BUNDLED_TELEGRAM_CLIENTNoSet to false to require your own API pair
TELEGRAM_SESSION_NAMENoTelethon session file name (default default)
TELEGRAM_DATA_DIRNoSession directory (default ~/.telegram)
MCP_TRANSPORTNoSet to http to start in HTTP mode (--http or TRANSPORT_MODE=http also work)

There is no TELEGRAM_PASSWORD env var: telegram auth prompts for the 2FA password and never stores it in the environment.

HTTP mode

telegram --http serves MCP at /mcp and an unauthenticated GET /health. Settings live in ~/.telegram/config.toml:

toml
[server]host = "127.0.0.1"   # default; --host overridesport = 8000          # default; --port overridesauth = "token"       # "no-auth" | "token" | "multi"token_hash = "scrypt$..."
authWho can connectCredentials used
no-authAnyone who can reach the port; loopback binds only (a non-loopback host is refused)The default credentials
tokenClients sending Authorization: Bearer <token> matching token_hashThe default credentials
multiUsers listed in users.toml (default ~/.telegram/users.toml), each with their own tokenEach user's own namespace

Create a token hash with telegram token hash (it reads the token from stdin or a prompt, never from the command line). In multi mode, add users by editing users.toml and restarting the server:

toml
[users.alice]token_hash = "scrypt$..."enabled = truenamespace = "alice"

Then authorize Telegram for that user on the server machine:

bash
telegram auth --phone +15551234567 --user alice

To reach a server on another machine, put it behind a TLS-terminating reverse proxy or a private network and use token or multi auth.

CLI

The telegram console script (installed by uvx / pip; better-telegram-mcp is a legacy alias) starts the MCP server when run without a subcommand. Flags that are not a subcommand are passed through to the server (for example --http, --host, --port).

bash
telegram            # start the MCP server (stdio)telegram --http     # start in HTTP modetelegram --version  # print the version
SubcommandUsageDescription
authauth --bot-token <token> or auth --phone <+number>, optional --user <ns>Authorize this machine. Bot mode validates the token; phone mode runs the interactive OTP/2FA flow and stores the Telethon session on disk
loginSame arguments as authDeprecated alias of auth
logoutlogout [--yes] [--user <ns>]Revoke the Telegram session, delete the session file and the saved credentials
configconfig status, config delete --yesShow or delete the saved credential config
statusstatusShow whether credentials are configured
doctordoctorPrint environment diagnostics
tokentoken hashHash a bearer token for config.toml / users.toml

--user selects the storage namespace (default default, used by stdio and the no-auth / token HTTP modes). Unknown subcommands exit with status 2.

Tools

ToolActionsDescription
messagesend, edit, delete, forward, pin, react, search, historySend, edit, delete, forward messages. Pin, react, search, browse history
chatlist, info, create, join, leave, members, admin, settings, topicsList and manage chats, groups, channels. Members, admin, forum topics
mediasend_photo, send_file, send_voice, send_video, downloadSend photos, files, voice notes, videos. Download media from messages
contactlist, search, add, blockList, search, add contacts. Block/unblock users (user mode only)
configstatus, set, cache_clearServer status, runtime settings (message_limit, timeout), cache
help--Full documentation for any topic

MCP Resources

URIContent
telegram://docs/messagesMessage operations reference
telegram://docs/chatsChat management reference
telegram://docs/mediaMedia send/download reference
telegram://docs/contactsContact management reference
telegram://statsAll documentation combined

Comparison

How telegram stacks up against direct competitors in each pillar:

Capabilitytelegramchigwell/telegram-mcpsparfenyuk/mcp-telegramguangxiangdebizi/telegram-mcp
Bot API mode (bot token)Yes (httpx)NoNoYes
MTProto user-account modeYes (Telethon)YesYesNo
Send / edit / delete messagesYesYesNo (read-only, draft only)Yes (send only)
Media download from messagesYesYesYesNo (send only)
Contact management (add / block)Yes (user mode)YesPartial (list only)No
Multi-user HTTP, per-user isolationYes (per-user tokens and namespaces)NoNoNo
SSRF protectionYes (URL validation + DNS-rebinding)??No
Path-traversal preventionYesYes (real-path allowed-root)?No
Self-hostableYesYesYesYes

Security

  • SSRF Protection -- All URLs validated against internal/private IP ranges, DNS rebinding blocked
  • Path Traversal Prevention -- File paths validated, sensitive directories blocked
  • Session File Security -- 600 permissions; the 2FA password is prompted, never stored in env vars
  • Error Sanitization -- Credentials and bot tokens are never leaked in error messages or logs
  • Prompt-injection boundaries -- Telegram content returned by tools is wrapped in untrusted-content tags

Build from Source

bash
git clone https://github.com/n24q02m/telegram.gitcd telegramuv syncuv run telegram

Trust Model

The project does not operate a hosted Telegram endpoint. The server runs on infrastructure you control, and credentials never leave that machine.

DataLocationProtection
Saved credentials (bot token / phone)~/.telegram/config.json; ~/.telegram/subs/<ns>/config.json in multi modeAES-256-GCM with the machine key ~/.telegram/.secret
Telethon sessions~/.telegram/<name>.session; ~/.telegram/subs/<ns>/ in multi modeFile permission 0600
HTTP bearer tokenstoken_hash in config.toml / users.tomlStored only as scrypt hashes

Anyone with access to your OS user account can read these files.

License

Apache-2.0 -- See LICENSE.

來源:README.md,提交 1942026

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:軟體包安裝失敗。

版本歷史

2
  1. v4.23.0最新Oct 29, 2026
  2. v4.22.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分