Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Telegram Bot in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Send Telegram messages, photos, albums, documents, audio, video, animations, stickers, contacts, venues, locations and polls from any AI agent via the Telegram Bot API. 21 tools, bot-token auth. Outbound plus a lightweight read of recent updates (no long-polling).
Try asking
Example prompts for Telegram Bot
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Telegram Bot, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Telegram Bot + Microsoft Copilot
Send Telegram messages, photos, albums, documents, audio, video, animations, stickers, contacts, venues, locations and polls from any AI agent via the Telegram Bot API. 21 tools, bot-token auth. Outbound plus a lightweight read of recent updates (no long-polling).
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
TELEGRAM_BOT_TOKEN
Step 1 — Get credentials
- In Telegram, open a chat with @BotFather, send
/newbotand pick a display name and a username ending inbot. - BotFather replies with a token like
123456789:ABCdef.... Treat it as a secret: anyone who has it can send as your bot. - Paste the full token into
TELEGRAM_BOT_TOKENand install the connector. Telegram expects the token in the request address, and the connector puts it there for you. - Start with
telegram_bot_get_meto check that the token works.
Who the bot can reach: every chat has a numeric chat_id. A user must have sent /start to your bot at least once, and groups and channels need the bot added first. Public channels also accept @channelusername; private channels need the numeric id, which starts with -100. telegram_bot_get_updates shows recent incoming messages with their chat ids.
What it sends: text messages (HTML formatting is the safest choice), photos, albums, documents, audio files, voice notes, videos, GIF animations, stickers, contact cards, venues, locations (also live locations) and polls or quizzes. It can also edit and delete its own messages and read chat details.
Albums: telegram_bot_send_album sends 2 to 10 photos and videos as one grouped message, or 2 to 10 documents, or 2 to 10 audio files; documents and audio cannot be mixed with other types. The caption goes on the first item. If Telegram reports WEBPAGE_CURL_FAILED for one item, it could not download that file: the link must be public and point straight at the file, not at a web page.
Files: media are sent by HTTPS link (up to 5 MB for photos and 20 MB for other files) or by the file_id of something sent before. Uploading a file from your computer in the same call is not supported.
Already installed? The album, animation, sticker, contact and venue tools reach a connector you installed earlier through its catalog update: open the connector in AnythingMCP and, under Catalog update available, check the list of new tools and click Apply update. Your bot token and any tools you added yourself stay as they are.
Rate limits: about 30 messages a second across different chats, 1 a second to the same chat and 20 a minute to the same group. On a 429, Telegram says how long to wait.
The connector reads recent updates when asked and does not run a chatbot that answers on its own, which needs a webhook you host. Payments, inline mode, games and sticker set management are not covered.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Telegram Bottools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
telegram_bot_get_me | Return the bot's own user info: id, username, first_name, can_join_groups, can_read_all_group_messages, supports_inline_queries |
telegram_bot_send_message | Send a text message to a chat |
telegram_bot_send_photo | Send a photo (JPG/PNG, ≤5MB via URL) by HTTPS URL or by reusable file_id |
telegram_bot_send_document | Send a document (any type, ≤20MB via URL) by HTTPS URL or file_id |
telegram_bot_send_audio | Send an audio file (MP3, M4A, ≤20MB via URL) |
telegram_bot_send_voice | Send a voice note (OGG-Opus encoded) |
telegram_bot_send_video | Send a video (MP4, H.264, AAC, ≤20MB via URL) |
telegram_bot_send_location | Send a location point |
telegram_bot_send_poll | Send a poll (regular or quiz) |
telegram_bot_edit_message_text | Edit the text of a previously-sent message (your bot's own messages only) |
telegram_bot_delete_message | Delete a message the bot sent (within ~48 hours for groups, anytime for own DMs) |
telegram_bot_get_chat | Fetch chat info: title, type (private/group/supergroup/channel), photo, description, invite_link, member_count, permissions |
telegram_bot_get_updates | Long-poll recent inbound messages (one-shot: pulls all updates since the last offset+1) |
telegram_bot_send_album | Send 2 to 10 photos or videos as one album (sendMediaGroup), or 2 to 10 documents, or 2 to 10 audio files; documents and audio cannot be… |
telegram_bot_send_animation | Send a GIF or a silent MP4 animation by HTTPS URL or file_id; Telegram plays it on a loop |
telegram_bot_send_sticker | Send a sticker by file_id (any sticker the bot has seen, e.g. from telegram_bot_get_updates) or by HTTPS URL of a .WEBP image |
telegram_bot_send_contact | Send a phone contact card that the recipient can save or call |
telegram_bot_send_venue | Send a venue: a map pin with a name and address, e.g. a shop or meeting point |
telegram_bot_get_file | Look up a file the bot received (photo, document, voice note, video) by its file_id, from a message in telegram_bot_get_updates |
telegram_bot_download_file | Download a file by the file_path telegram_bot_get_file returned |
telegram_bot_fetch_sticker_set | Read a sticker set (or custom emoji set) by its name: title, sticker_type (regular, mask, custom_emoji) and every sticker with its emoji… |
Example prompts
- "Send the photos from these four links as one album to our team channel, with the caption 'New collection, live today'."
- "Post a poll in the sales group: which day works for the quarterly review, Tuesday or Thursday?"
- "Send our shop's address as a venue to the customer chat so they can open it in their maps app."
- "Show me the messages the bot received in the last hour and who sent them."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?