telegram-mcp-server
This server provides programmatic control over a Telegram user account (not a bot), enabling full access to chat history, media, and messaging via the MCP protocol.
Account check (
get_me): Retrieve the logged-in user's details (id, username, name, phone) and verify the session is valid.List chats (
list_chats): Browse groups, channels, and direct messages, with optional keyword filtering and configurable limits (up to 500).Read messages (
get_messages): Fetch recent messages from a specific chat, with pagination (before_id) and full-text filtering.Search messages (
search_messages): Search by text globally across all chats or within a specific chat; results includechat_idfor follow-up calls.Download specific media (
download_media): Download media from specific messages (by message ID) to a local directory.Download recent media (
get_recent_media): Bulk-download the most recent media from a chat, with optional type filtering (photo,video,document,other).Send text messages (
send_message): Send a text message to any chat (group, channel, or DM) as the logged-in user.Send files (
send_file): Upload and send a local file (image or document) to any chat, with an optional caption.
Provides tools for reading chats, messages, and media, and sending messages and files via Telegram using a user account.
Click on "Deploy 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., "@telegram-mcp-serverget last 5 messages in group 'Test Group'"
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.
telegram-mcp-server
MCP-Server für Telegram über einen User-Account (MTProto/Telethon). Liest Chats/Nachrichten/Medien und sendet Nachrichten/Dateien. Läuft lokal über stdio.
Warum User-Account statt Bot?
Ein Bot kann keine Gruppen-Historie und keine vor seinem Beitritt geposteten
Medien lesen (und hat ein 20-MB-Download-Limit). Für „hol mir die Bilder aus der
Gruppe" braucht es einen User-Client. Session-Datei = voller Account-Zugriff →
lokal halten, chmod 600, nie committen.
Related MCP server: Telegram MCP Server
Setup
API-Credentials auf https://my.telegram.org (API development tools) erzeugen.
Repo installieren (venv + editierbar; Python ≥3.10):
python3 -m venv .venv .venv/bin/pip install -e .Environment setzen:
export TELEGRAM_API_ID=... export TELEGRAM_API_HASH=... export TELEGRAM_PHONE=+49... # nur für den Login nötig # optional: export TELEGRAM_SESSION="$HOME/.telegram-mcp/telegram.session" export TELEGRAM_DOWNLOAD_DIR="$HOME/Downloads/telegram-mcp"Einmalig einloggen (erzeugt die Session-Datei, fragt Code + ggf. 2FA):
.venv/bin/python -m telegram_mcp_server.login
In Claude Code registrieren
claude mcp add telegram \
-e TELEGRAM_API_ID=... \
-e TELEGRAM_API_HASH=... \
-e TELEGRAM_SESSION="$HOME/.telegram-mcp/telegram.session" \
-- /ABSOLUTER/PFAD/telegram-mcp-server/.venv/bin/telegram-mcp-serverDie -e-Flags sind nötig, weil ein von Claude Code gestarteter MCP-Server die
Shell-exports aus dem Setup NICHT erbt. Alternativ die env-Sektion in der
MCP-Konfiguration nutzen. TELEGRAM_DOWNLOAD_DIR optional per weiterem -e setzen.
Nach dem Registrieren eine neue Claude-Code-Session starten, damit der Server erscheint.
Tools
Tool | Zweck |
| Whoami / Session-Check |
| Chats auflisten (Gruppe/Kanal/DM) |
| Nachrichten eines Chats lesen |
| Nachrichten suchen (global oder im Chat) |
| Medien gezielter Nachrichten laden |
| Letzte N Medien eines Chats laden |
| Textnachricht senden |
| Datei/Bild senden |
chat akzeptiert Chat-id, @username oder (Teil-)Titel; bei mehrdeutigem Titel
kommt ein Fehler mit den Treffern statt einer Rate-Auflösung.
get_messages/search_messages liefern pro Nachricht auch chat_id mit —
Treffer aus der globalen Suche sind damit direkt in weiteren Tool-Aufrufen
(z.B. download_media) verwendbar.
Entwicklung / Tests
python3 -m venv .venv && .venv/bin/pip install -e ".[test]"
.venv/bin/python -m pytest tests/ -vTests laufen ohne Live-Account (Client wird gemockt).
Smoke-Test (einmalig nach Login, mit echtem Account)
.venv/bin/python -m telegram_mcp_server.login # 1) Session erzeugen
# 2) get_me / list_chats / get_messages / download_media manuell über den
# MCP-Client (Claude Code) prüfen:
# - get_me -> zeigt deinen Account
# - list_chats query="<gruppe>" -> findet eine deiner Gruppen
# - get_messages chat=<id> limit=5 -> liefert Nachrichten
# - search_messages query="..." -> globale Suche (übt _search_global live aus;
# Treffer müssen chat_id tragen)
# - get_recent_media chat=<id> kind="photo" -> lädt Fotos nach $TELEGRAM_DOWNLOAD_DIRErster echter Integrationstest = ein Medienabruf aus einer deiner Gruppen. Die globale search_messages
(ohne chat) ist der einzige Pfad, der _search_global/SearchGlobalRequest real ausführt —
im Smoke-Test nicht überspringen.
Maintainer
Schimmi — https://schimmilab.de Issues und Pull Requests willkommen.
Available Tools
8 toolsdownload_mediaA
Download media from specific messages to disk.
Args: chat: Chat id/@username/title. message_ids: Message ids whose media should be downloaded. dest_dir: Target directory (default TELEGRAM_DOWNLOAD_DIR).
Returns [{message_id, path}] for messages whose media downloaded successfully; non-media and undownloadable media are skipped. Paths are absolute.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | ||
| dest_dir | No | ||
| message_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that non-media and undownloadable media are skipped, and paths are absolute. However, it does not mention safety implications (e.g., overwriting files), permissions, or side effects of writing to disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear header and bullet-like args section. Every sentence adds value; no wasted words. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but reported), the description covers the return format. It addresses all parameters and key behaviors (skipping non-media). Minor gaps: no mention of file overwrite behavior or size limits, but overall complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies chat (id/username/title), message_ids (array of integers), and dest_dir (target directory with default). This adds essential meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb 'Download' and specific resource 'media from specific messages to disk'. It distinguishes from siblings like get_messages (retrieve text) and send_file (upload), and includes return type information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when downloading media files from messages, but does not explicitly state when to use this tool versus alternatives like get_recent_media or send_file. No when-not-to-use or prerequisite guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meA
Return the logged-in Telegram account (id, username, first_name, phone).
Doubles as a session check — errors if no valid session exists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses error condition (no valid session) which adds value over no annotations. However, no details on rate limits, auth requirements, or other potential behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, main purpose front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with output schema and no params, description is complete. Covers purpose and key behavior (session check).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline is 4. Description adds no param info, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the logged-in Telegram account with specific fields (id, username, first_name, phone). Distinguishes from siblings which deal with messages, media, and chats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage to get account info or verify session via error behavior. No explicit alternatives mentioned, but sibling tool context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesA
Read recent messages from one chat.
Args: chat: Chat id, @username, or exact/substring title. limit: Max messages (default 30, capped at 200). before_id: Only messages older than this message id (pagination). search: Optional full-text filter within the chat.
Returns message dicts (id, chat_id, date, sender_id, text, has_media, media_type).
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | ||
| limit | No | ||
| search | No | ||
| before_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It explains read-only behavior, pagination via before_id, search filtering, and limit cap. It does not mention side effects, but for a read tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with a clear Args section. Every sentence adds value with no redundancy. Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no annotations, the description is complete: explains all 4 parameters, specifies return fields, and clarifies behavior like limit cap and pagination. Output schema is included, so no return value gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds all parameter meaning. It explains chat as id/@username/title, limit as max 200 default 30, before_id for pagination, search as full-text filter. This exceeds what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads recent messages from one chat, using specific verb and resource. It distinguishes from siblings like search_messages (which is for cross-chat search) and list_chats (which lists chats).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a single chat but does not explicitly state when to use this tool versus alternatives like search_messages or send_message. No exclusion or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_mediaA
Download the most recent media items from a chat.
Args: chat: Chat id/@username/title. limit: How many recent messages to scan (default 20, capped at 200). kind: Optional filter — 'photo' / 'video' / 'document' / 'other'. dest_dir: Target directory (default TELEGRAM_DOWNLOAD_DIR).
Returns [{message_id, kind, path}] for successfully downloaded media. This is the fast path for pulling images out of a group (e.g. the Arcanara Juni-Treffen photos). Paths are absolute.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | ||
| kind | No | ||
| limit | No | ||
| dest_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry full burden. It mentions the return format, the limit cap (200), and absolute paths. However, it lacks transparency on failure modes (e.g., what if chat not found?), auth requirements, or whether the operation is non-destructive. The description is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with 'Args' and 'Returns' sections. No unnecessary words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and an output schema exists, the description covers the core functionality well. It provides return format and key constraints. Minor gaps: no error handling info, but sufficient for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. For each parameter, it adds meaningful context: chat (accepts id/username/title), limit (default 20, max 200), kind (optional filter with examples), dest_dir (default from env). This goes well beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Download the most recent media items from a chat.' It uses a specific verb and resource, and distinguishes itself from siblings like 'download_media' by focusing on recency and bulk download. A concrete use case (Arcanara Juni-Treffen photos) is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for quickly downloading recent media ('fast path'), but it does not explicitly state when to use this tool versus alternatives (e.g., 'download_media' for specific items, or 'search_messages' for broader searches). No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chatsA
List chats (groups, channels, direct messages).
Args:
query: Optional case-insensitive substring filter on the chat title.
When set, ALL dialogs are scanned so a match beyond the most-recent
limit chats is still found (comparatively expensive, like title
resolution); limit then caps the number of matches returned.
limit: Max results (default 50, capped at 500). Without query this is
also how many dialogs are fetched.
Returns objects with id, title, type ('group'/'channel'/'user'), unread. Use this to find a chat's id/title before calling other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description fully bears burden. Discloses that query makes scanning expensive, limit behavior with/without query, and return fields (id, title, type, unread). Adequate for a read-only list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with Args section and clear sentences. Slightly verbose but not excessive; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameter details, return structure, and usage context. No output schema but returns described. Complete given tool complexity and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains both parameters in detail: query as optional substring filter (expensive when set), limit default/cap and interaction with query. Adds substantial value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists chats (groups, channels, direct messages) and distinguishes from siblings by noting its use to find chat IDs/titles before calling other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use (find chat IDs/titles) and explains parameter behaviors (query scans all dialogs, limit caps results). No explicit when-not-to-use, but purpose is well-understood.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesA
Search messages by text — globally or within one chat.
Args: query: Non-empty search string. chat: Optional chat id/@username/title to scope the search. limit: Max results (default 30, capped at 200).
Returns message dicts (id, chat_id, date, sender_id, text, has_media, media_type).
| Name | Required | Description | Default |
|---|---|---|---|
| chat | No | ||
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds value by specifying the return format. It discloses read-only behavior implicitly but does not explicitly discuss side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences cover purpose, parameter details, and return format. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, output schema present), the description covers purpose, all parameters with constraints, and return format, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description fully compensates by explaining each parameter's meaning, constraints (non-empty, optional, default, cap), adding significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search messages by text' with a specific verb and resource, and explicitly distinguishes between global and chat-scoped search, differentiating it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear parameter usage: query must be non-empty, chat is optional, limit has default and cap. However, lacks explicit when-to-use vs alternatives, though implicit differentiation exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_fileA
Send a local file (image/document) to a chat as the logged-in user.
This is a real, irreversible send, visible to the chat's members, and cannot be recalled via this API — confirm the chat and file before calling.
Args: chat: Chat id/@username/title. file_path: Absolute path to an existing local file. caption: Optional caption text.
Returns {"sent": True, "message_id": }.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | ||
| caption | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses irreversibility, visibility to members, and inability to recall. This is thorough for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with a main sentence, a warning paragraph, and an Args section. Every sentence is informative and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers action, parameters, and return format. Lacks details like file size limits or supported formats, but these are reasonable omissions given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds meaning: chat as id/@username/title, file_path as absolute path to existing file, caption as optional. This compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a local file to a chat as the logged-in user, specifying the resource and context. It differentiates from siblings like send_message (text) and other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises confirming chat and file before calling due to irreversibility, providing clear usage context. Does not explicitly exclude alternatives, but siblings are available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageA
Send a text message to a chat as the logged-in user.
This is a real, irreversible send, visible to the chat's members, and cannot be recalled via this API — confirm the chat and text before calling.
Args: chat: Chat id/@username/title. text: Non-empty message text.
Returns {"sent": True, "message_id": }.
| Name | Required | Description | Default |
|---|---|---|---|
| chat | Yes | ||
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses irreversibility, visibility, and lack of recall via API. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient structure: purpose, warning, args, returns. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input, behavior, irreversibility, and output format. No output schema needed since return is described. Minor omission of rate limits or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%, but description adds: chat as 'id/@username/title', text as 'Non-empty message text'. Provides useful semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb-resource-context: 'Send a text message to a chat as the logged-in user.' Distinguishes from siblings like send_file or download_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Warns of irreversible action: 'confirm the chat and text before calling.' Lacks explicit when-not or sibling comparison but adequately implies usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
download_media - First observed
get_me - First observed
get_messages - First observed
get_recent_media - First observed
list_chats - First observed
search_messages - First observed
send_file - First observed
send_message
TDQS
Scored across 8 tools
Tools mostly have distinct purposes. download_media and get_recent_media both handle media downloads but are differentiated by targeted vs. bulk recent retrieval. All other tools are clearly distinct.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., download_media, list_chats, send_message), making the set predictable and easy to navigate.
8 tools is well-scoped for a Telegram messaging interface, covering essential operations like reading messages, searching, listing chats, sending messages/files, and downloading media without being overwhelming.
Core functionality is covered: read, search, send, download. Minor gaps such as no delete, edit, or forward tools, but these are optional for many use cases and the set feels complete for basic messaging automation.
Maintenance
Related MCP Connectors
Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Run a Telegram channel from your AI agent. Posts go out through your own bot, not your account.
Connect a Discord bot (bot token from the developer portal) to read/send messages, list guilds and c
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to control a real Telegram user account via MTProto, allowing message sending, chat reading/searching, and message management through MCP tools.19-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control a personal Telegram account for sending/reading messages, media, group management, and more via the MTProto API.MIT
- AlicenseAqualityBmaintenanceEnables use of a personal Telegram account within MCP clients for reading and sending messages, searching chats, and managing media, all running locally.163MIT
- AlicenseBqualityCmaintenanceEnables MCP clients to operate a Telegram account as a userbot, providing tools for reading and sending messages, searching chats and contacts, managing media, and performing other account actions via MTProto with a locally encrypted session.28MIT