Guide · AI agents on social media

Telegram MCP server: read and send Telegram messages from an agent

By Antoine Blanco··8 min read

A Telegram MCP server gives an agent four actions: read conversations, send a message, reply in an existing thread, and open a chat with someone who already wrote to your bot. It runs on the official Bot API, so one token is the whole setup. There are no posts on Telegram. Everything below was checked on November 13, 2026.

What a Telegram MCP server can do

Telegram is a messaging channel. Like WhatsApp, it has no feed, no post object and therefore no reach, impressions or engagement rate. So the tool list an agent gets through MCP is short: list conversations, read the message history of one, send text, reply in a thread, open a conversation with a known chat id.

On PlugKit the tools are named list_conversations, get_conversation, list_messages, send_message, send_dm, create_conversation and sync_conversations, and the inbox is unified: the same four tools read Instagram, Facebook, WhatsApp and Telegram. That matters more than it sounds. An agent that triages your inbox should not need a different tool per network, because the moment it does, you are writing the routing logic yourself in the prompt.

What you will not find: scheduling, analytics, comment moderation. Any server advertising Telegram analytics is either describing channel statistics scraped from a different surface, or describing something that does not exist in the Bot API.

Why the Bot API makes this the easiest MCP to set up

Every other platform in this category makes you register an app, request scopes, pass a review and then refresh a token forever. The Instagram MCP server needs a professional account, a Meta app and an app review. The LinkedIn one needs partner access for half of its endpoints.

Telegram needs a conversation with another bot. You message @BotFather, send /newbot, pick a name and a username ending in bot, and it hands you a token shaped like 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. That token is the credential. It does not expire, there is no refresh cycle, and there is no review queue.

Calls go to https://api.telegram.org/bot<token>/METHOD_NAME over HTTPS, GET or POST. Which also means the token sits in the URL path of every request, so it lands in proxy logs and shell history. Treat it the way you would treat a password, and use /revoke in BotFather the moment one leaks.

On PlugKit the tool that does this is connect_telegram: you give it the BotFather token, it validates it against Telegram before storing it, and the bot appears as a connected account. No OAuth round trip, because there is nothing to authorise.

Platform Credential Review Token expiry
Telegram Bot token from BotFather none none
Instagram OAuth long-lived token Meta app review 60 days, refreshable
WhatsApp WABA token via Embedded Signup Meta business verification varies, re-auth needed
LinkedIn OAuth token partner program for most endpoints 60 days
X OAuth 2.0 token paid API tier refreshable

The one rule that stops your agent cold

Telegram's own documentation states it in one line: "Bots can't start conversations with users. A user must either add them to a group or send them a message first."

This is the Telegram equivalent of Meta's 24-hour window, except it is permanent rather than a timer. Your agent cannot look up a username and message it. It can only reply to people who already pressed Start on your bot, or speak in groups where the bot was added.

The practical consequence for an agent workflow: a conversation list is not a contact list you can target. Before you build anything that notifies users, you need a flow that gets them to open the bot first, usually a deep link of the form t.me/yourbot?start=payload, where the payload lands in the first /start message and tells you who they are.

Inside groups there is a second limit worth knowing before you debug it for an hour. By default a bot in a group only receives messages that concern it: commands, replies to its own messages, mentions. Telegram calls this privacy mode. If your agent is supposed to read a whole group conversation, privacy mode has to be turned off in BotFather first, and the bot has to be re-added to the group for the change to take.

getUpdates or a webhook: how messages reach the server

The Bot API offers exactly two ways to receive messages, and they are mutually exclusive. Setting one disables the other, which is the single most common cause of "my bot stopped receiving anything".

If you are running a local MCP server on your laptop, you are on getUpdates whether you chose it or not, because Telegram will not deliver a webhook to a machine with no public HTTPS address. A hosted server registers the webhook once and the updates arrive without polling. The trade-offs are the same ones covered in MCP server hosting.

The rate limits that turn a broadcast into a 429

Telegram publishes these in its Bot FAQ, and they are stricter than most people expect because nothing warns you until the 429 arrives.

Situation Limit What happens past it
Single chat about 1 message per second short bursts tolerated, sustained excess returns 429
Group chat 20 messages per minute 429
Bulk notifications about 30 messages per second across all chats 429, unless paid broadcasts are enabled
Paid broadcasts up to 1000 messages per second 0.1 Stars per message past the first 30 per second

One message per second per chat sounds generous until an agent decides to answer a long question in five paragraphs, each as its own message. Tell it to send one message, not a thread. And if you are tempted to have an agent fan out a notification to a few thousand chats, that is the 30 per second line: a 3000-person broadcast takes at least 100 seconds even when everything is healthy.

Connect it to Claude, ChatGPT or Cursor

PlugKit's hosted MCP server covers Telegram alongside the publishing platforms, which is the reason to use one endpoint rather than a Telegram-only server: the same agent that answers a Telegram message can publish the Instagram post it was asked about. It runs at https://api.plugkit.co/mcp over Streamable HTTP, following the MCP specification revision of July 28, 2026, with 103 tools and three prepared workflows as of November 13, 2026.

In Claude Code:

claude mcp add -t http plugkit https://api.plugkit.co/mcp

In Claude's apps it is Customize, then Connectors, then Add, then a custom connector with the same URL. ChatGPT takes it under Add custom MCP server. Cursor and VS Code take a one-click link or a few lines of JSON. Authentication is OAuth 2.1 with PKCE and no client secret, with mcp:read for reading conversations and mcp:write for sending. Start on mcp:read: reading an inbox is reversible, sending a Telegram message is not.

PlugKit is $49 a month for 5 connected accounts, cancel anytime, or $97 for 30. Seven days free, with a card at sign-up and nothing charged before day 7. Telegram messages themselves cost nothing, since the Bot API has no per-message fee outside paid broadcasts.

If you only need Telegram and nothing else, write it yourself. A bot token and 40 lines against sendMessage is genuinely a morning's work, and that remains the right answer for a single-channel side project. The case for a hosted server is the second platform, the one where the credential work starts. MCP versus a plain API is the longer version of that trade-off.

FAQ

Is there an official Telegram MCP server?

No. Telegram publishes the Bot API; every MCP layer on top of it is third party. That is worth checking before you install one, because some community servers drive a user account through the MTProto client API rather than a bot, which puts your personal account at risk rather than a bot you can revoke.

Can Claude send Telegram messages?

Yes, through an MCP server connected to the Bot API. Claude has no Telegram access of its own. Once the server is added, sending is a tool call, subject to the same rule as any bot: the recipient must have started your bot or shared a group with it.

Why can my bot not message a user first?

Because Telegram forbids it by design. A user must send the bot a message or add it to a group before the bot can write to them. The usual workaround is a deep link, t.me/yourbot?start=payload, which opens the bot with a payload you can tie back to the user.

Do I need OAuth for a Telegram MCP server?

Not for Telegram itself. The Bot API authenticates with a token from BotFather and nothing else. You may still want OAuth between your agent and the MCP server, which is a different layer and is covered in MCP server OAuth authentication.

Can a Telegram bot read every message in a group?

Only if privacy mode is off. By default a bot added to a group receives commands, replies to its own messages and mentions, and nothing else. You disable privacy mode in BotFather, then remove and re-add the bot to the group so the change applies.

AB
Antoine BlancoFounder of PlugKit. Runs his own Instagram, YouTube and X accounts through the API and MCP server described here.

One plug for every platform your agent touches

$49 a month for 5 connected accounts, cancel anytime. Every feature in every plan.

Get your API key →
English ▾