Telegram MCP server: let Claude or any agent post to your Telegram channel

Add https://postwire.io/api/mcp to Claude, ChatGPT, Cursor or any MCP client as a remote MCP server, paste a bot token and your channel name once, and the agent posts a message, a photo or a video to your Telegram channel or group with post_to_social, or queues it with schedule_post. Nothing runs on your machine and there is no bot code to write: the bot is a token you copy from @BotFather, and PostWire sends through Telegram's official Bot API. The free plan includes Telegram and the MCP server: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card.

Made for channels and groups you run: the daily digest, a release note, this week's offer. generate_posts writes the Telegram version, clear and direct, next to the LinkedIn, Bluesky or Discord version of the same news.

Updated . Written from PostWire's own code; vendor prices read on Oct 10, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.

Set it up and post, step by step

  1. Add PostWire's MCP server to your agent

    In Claude, open PostWire in the connector directory and press Connect. Anywhere else, add the remote server https://postwire.io/api/mcp (Streamable HTTP; OAuth sign-in or an API key) — in Claude Code: claude mcp add --transport http postwire https://postwire.io/api/mcp. Cursor, VS Code, Windsurf, Codex and Gemini CLI configs: MCP client configs.

  2. Sign in with your email

    The first time the agent uses a PostWire tool, a sign-in window asks for your email and a 6-digit code; that also creates a free PostWire account if you have none. No password and no card. Agents that cannot do OAuth send an API key instead (dashboard → API & MCP → Copy key).

  3. Create a bot and add it to your channel

    In Telegram, message @BotFather, send /newbot, pick a name and copy the token it gives you. Then open your channel or group and add that bot as an admin, so it is allowed to post there. The bot only posts where you add it.

  4. Connect Telegram

    Ask "connect my Telegram channel". create_connect_link gives you a one-hour link; choose Telegram there and paste the token and your channel as @yourchannel (for a private channel or group, its numeric id, which starts with -100). There is no sign-in screen. Before saving, PostWire asks Telegram whether that bot can reach that chat, so a mistyped channel or a bot that is not an admin yet is caught on that page, with the fix, and not at the first post.

  5. Let PostWire write the message

    "Write today's Telegram post about the new pricing page, and a Bluesky post for it." generate_posts returns one draft per network and publishes nothing. Telegram's draft is clear and direct, with light formatting, links welcome and no hashtags; it stays under 4,000 characters. Bluesky's is a conversational post of up to 300.

  6. Post it, or schedule it

    After you approve, the agent calls post_to_social (or schedule_post with a run_at time, or "next_slot" for your next free queue slot). Add photo_url or video_url — a public https link — and the text becomes the caption of that photo or video:

    {
      "name": "post_to_social",
      "arguments": {
        "platforms": ["telegram", "bluesky"],
        "per_platform": {
          "telegram": { "text": "New pricing page is live 🎉 Plans start free, and every plan now includes the API. Details: https://example.com/pricing" },
          "bluesky": { "text": "we rewrote our pricing page so you can read it in ten seconds. tell me if we failed https://example.com/pricing" }
        },
        "photo_url": "https://postwire.io/m/…/pricing.png"
      }
    }
  7. Open the message

    The result lists each network with ok, the id of the Telegram message and its link: https://t.me/yourchannel/123 for a public channel, https://t.me/c/…/123 for a private one (it opens for members). get_post_status returns the same link later; list_scheduled_posts shows what is still queued and cancel_scheduled_post removes one before it goes out.

A photo or a video from your phone or laptop gets there through create_upload_link: a 24-hour page where you pick the file (up to 100 MB on the free plan and 1 GB on paid plans), then get_uploaded_file returns its media_url. The same post from your own code: POST /api/post with {"platforms": ["telegram"], "text": "…"} and your API key, or the PostWire node in n8n. Prefer to set it up by hand first? Open the dashboard, connect the account under Accounts and copy your key under API & MCP.

Telegram MCP servers for posting, side by side

Each vendor's endpoint, sign-in and price, read on its own Telegram MCP or plans page on Oct 10, 2026.

ServerEndpointSign-inFree to startCheapest paid planWrites the message
PostWirehttps://postwire.io/api/mcpOAuth 2.1 or API keyFree plan: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card$9/mo — 3 businesses, every network in each postYes — generate_posts writes the Telegram message and each other network's from one idea
Upload-Postmcp.upload-post.com/mcpOAuth or API keyFree plan: 2 profiles, 10 uploads a month$24/mo — 5 profilesNot listed

Checked on Oct 10, 2026 (2026-10-10) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.

Where PostWire is ahead

  • The message is written for Telegram, and so is every other network's version: generate_posts turns one piece of news into a Telegram post, a LinkedIn post and a Bluesky post in one call.
  • 20 posts a month on the free plan, without a card. Upload-Post's free plan has 10 uploads a month.
  • A burst does not lose posts: posts to one channel are spaced, a "retry after" from Telegram is waited out, and what cannot wait is queued and sent after it.
  • The bot and the channel are checked before they are saved, and again later: a wrong channel name or a revoked token is caught when you connect, not when a scheduled post was due.
  • Telegram plus nine more networks in the same call: TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Bluesky, Mastodon, Discord, and X on paid plans.
Sources, all read on Oct 10, 2026:

Telegram's rules the agent works within

  • A bot posts, as an admin: Telegram lets a bot post to a channel only when it is one of its admins. The message appears under the channel's name, like any channel post.
  • One connection, one chat: the token plus the channel or group you gave. The bot cannot post anywhere you did not add it.
  • Text, a photo or a video: one photo or one video per message, with the text as its caption. Telegram fetches the file from its link.
  • Bursts are spaced, not refused: Telegram allows about one message a second per chat and 20 a minute in a group. PostWire leaves 3 seconds between posts to the same channel or group; when Telegram still answers "retry after N seconds", it waits and sends again, and when the wait is too long for one request, the post is queued for after the wait and goes out by itself.
  • Revoked tokens are noticed: PostWire's connection check asks Telegram whether the token still works and the bot is still in the chat; if not, the dashboard says which of the two happened and asks you to reconnect, before a scheduled post is due.

Source: PostWire's Telegram publisher, read Oct 10, 2026. More on the API itself: Does Telegram have an API?

What it does not do

PostWire posts and schedules messages in the channel or group you connected. It does not read your chats, search messages, answer people, send direct messages to users or manage members, and it does not log in as your personal Telegram account: it only ever acts as the bot you created.

Questions people ask

Is there an MCP server that posts to Telegram?

Yes. PostWire's hosted MCP server (https://postwire.io/api/mcp) posts a message, a photo or a video to your Telegram channel or group from Claude, ChatGPT, Cursor or any MCP client, and can schedule it for later. It is in Claude's connector directory.

Does it work with Claude and Claude Code?

Yes. In Claude, press Connect on PostWire in the connector directory and sign in with your email. Claude Code adds it with: claude mcp add --transport http postwire https://postwire.io/api/mcp. Then ask it to connect your Telegram channel.

Do I need to write or host a Telegram bot?

No code and no hosting. You create the bot by sending /newbot to @BotFather, copy the token it gives you, add the bot to your channel as an admin and paste the token and the channel name into PostWire. PostWire does the sending.

Can it post to a private channel or a group?

Yes. For a public channel use @channelname; for a private channel or a group use its numeric id, which starts with -100. The bot has to be an admin of the channel. Links to posts in a private channel open for its members.

Can it read my Telegram messages or reply to people?

No. PostWire only publishes to the chat you connected. Reading chats, answering people and managing members are not part of it, and it never logs in as your personal account.

Can the agent schedule Telegram posts?

Yes. schedule_post takes a run_at time up to 365 days ahead, or "next_slot" for your next free queue slot. The free plan keeps 3 posts waiting in the queue at once.

How much does it cost?

The free plan includes Telegram and the MCP server: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; paid plans have a 14-day refund.