mcp-telegram
Allows sending messages, photos, and documents to Telegram via a bot using the Telegram Bot API.
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., "@mcp-telegramsend a Telegram message saying the build passed"
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.
mcp-telegram
An MCP server that lets an LLM send messages, photos and documents to Telegram through a bot.
Point any MCP-capable client (Claude Desktop, Claude Code, or your own agent) at
this server and the model gains four tools: get_me, send_message,
send_photo and send_document. The model decides what to say; the server
handles how it reaches Telegram.
Why the Bot API
This server talks to the Telegram Bot API. That means you create a bot, the bot sends messages, and users receive them.
No phone-number login, no
api_id/api_hash, no session files.The bot can only message chats it already shares with a user (the user must start the bot first) or channels/groups it belongs to.
If you instead need to send messages as your own user account to arbitrary people, that requires the MTProto client API (Telethon/Pyrogram) and account authentication — a deliberately different, heavier tool that is out of scope here.
Related MCP server: Telegram MCP Server
Architecture
Three small layers, each with one responsibility:
src/mcp_telegram/
├── config.py # load & validate settings from the environment (fail-fast)
├── telegram.py # thin async client over the Bot API (httpx, no heavy SDK)
├── server.py # FastMCP server: tool definitions + shared client lifespan
└── __main__.py # entry point (stdio transport)The MCP layer never builds HTTP requests and the HTTP layer never knows about
MCP, so each can be tested and changed on its own. A single httpx.AsyncClient
is created once per server run via the FastMCP lifespan and reused across calls.
Requirements
Python 3.10+
A Telegram bot token from @BotFather
Setup
1. Create the bot and get a token
Open @BotFather in Telegram and send
/newbot.Follow the prompts and copy the token it gives you (looks like
123456789:AA...).
2. Find your chat id
The bot can only message a chat it knows. The simplest path:
Send any message to your new bot in Telegram.
Ask @userinfobot for your numeric id, or call:
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"and read
result[].message.chat.idfrom the JSON.
Set that value as TELEGRAM_DEFAULT_CHAT_ID so the model can send without
specifying a chat every time.
3. Install
# with uv (recommended)
uv venv
uv pip install -e .
# or with pip
python -m venv .venv && source .venv/bin/activate
pip install -e .4. Configure
Copy the example env file and fill it in:
cp .env.example .env
# edit .env: set TELEGRAM_BOT_TOKEN (and ideally TELEGRAM_DEFAULT_CHAT_ID)Variable | Required | Default | Description |
| yes | — | Token from @BotFather. |
| no | — | Chat used when a tool call omits |
| no |
| Override the API host (e.g. a local Bot API server). |
| no |
| Per-request timeout in seconds. |
Running
The server speaks MCP over stdio, so you normally don't launch it by hand — your MCP client does. To sanity-check that it starts:
TELEGRAM_BOT_TOKEN=... mcp-telegramIt will wait for an MCP client on stdin. Press Ctrl+C to stop.
Connecting a client
Claude Desktop
Add this to your claude_desktop_config.json
(~/Library/Application Support/Claude/ on macOS,
%APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"telegram": {
"command": "mcp-telegram",
"env": {
"TELEGRAM_BOT_TOKEN": "123456789:AA...",
"TELEGRAM_DEFAULT_CHAT_ID": "123456789"
}
}
}
}If mcp-telegram is not on your PATH, use the venv's absolute path or run it
through uv:
{
"mcpServers": {
"telegram": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/mcp-telegram", "mcp-telegram"],
"env": { "TELEGRAM_BOT_TOKEN": "123456789:AA..." }
}
}
}Claude Code
claude mcp add telegram \
--env TELEGRAM_BOT_TOKEN=123456789:AA... \
--env TELEGRAM_DEFAULT_CHAT_ID=123456789 \
-- mcp-telegramRestart the client after editing its config, then ask the model something like "send me a Telegram message saying the build passed".
Tools
Tool | What it does |
| Return the bot's identity — use it to verify the token. |
| Send a text message (optional Markdown/HTML formatting). |
| Send a photo by URL, local path, or Telegram |
| Send a file by URL, local path, or Telegram |
Every send tool accepts an optional chat_id; when omitted it falls back to
TELEGRAM_DEFAULT_CHAT_ID. parse_mode is optional and defaults to plain text —
only set "MarkdownV2", "HTML" or "Markdown" when you need formatting, and
make sure the payload is escaped for that mode.
Development
uv pip install -e ".[dev]"
pytestTests mock the Telegram HTTP API with respx, so they run offline and never
touch a real bot.
License
MIT — see LICENSE.
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
- Flicense-qualityDmaintenanceAn MCP server that wraps the Telegram Bot API into semantic tools for LLM agents, supporting multi-bot management for sending and receiving messages. It enables agents to send text, photos, and documents, as well as fetch recent updates from multiple configured Telegram bots.Last updated
- FlicenseAqualityCmaintenanceAn MCP server for interacting with Telegram bots and channels using the Telegraf library. It allows AI agents to send messages, manage channels, forward content, and intelligently respond to Telegram conversations.Last updated5698
- Alicense-qualityDmaintenanceAn MCP server for sending and receiving Telegram messages via a bot, enabling AI assistants to interact directly through Telegram by sending messages, reading recent messages, and sending photos.Last updated23MIT
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
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/Moreti2002/mcp-telegram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server