accueil / serveurs / Communication / io.github.leshchenko1979/fast-mcp-telegram
io.github.leshchenko1979/fast-mcp-telegram
serveur MCP (Model Context Protocol) · Telegram MCP Server 3.4.7
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.leshchenko1979/fast-mcp-telegram est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.leshchenko1979/fast-mcp-telegram » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 8 outils
- edit_message≈ 806 tokens
Replace the text of an existing message in a Telegram chat. Only works on messages sent by the authenticated account. Cannot edit media or other message attributes — text only. parse_mode: classic markdown/html/auto or rich (Rich Message; dialect auto-detected). schedule_date (ISO 8601) reschedules an already-queued message; it does not turn a delivered message into a scheduled one, and the result then carries status='scheduled'. Success: dict with message_id, date, chat, text, status='edited', and edit_date (rich messages also set rich=true and rich_format). Error: dict with ok=false and error string (e.g. message not found or not editable). Use edit_message to update a previously sent message; use send_message to create new ones. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (5)
Paramètreschat_id· string · requis
Target chat: numeric id (e.g. -100…), username without @, or 'me' for Saved Messages.message· string · requis
Message text. When sending files, used as caption.message_id· integer · requis
Message id in this chat to edit (from get_messages or Telegram).parse_mode· string · optionnel · markdown | html | auto | rich
'markdown'/'html'/'auto': classic entity formatting (auto detects). 'rich': Telegram Rich Message document; dialect auto-detected (known HTML tags outside code → rich HTML, else rich markdown). Default is 'auto'. parse_mode='rich' cannot be combined with files.schedule_date· string · optionnel
ISO 8601 instant at which Telegram should deliver the message, e.g. '2026-10-20T09:00:00Z' or '2026-10-20T12:00:00+03:00'. Must be in the future. On send: queues the message instead of delivering now. On edit: reschedules an already-queued message.
Exemple d'appel{"name": "edit_message", "arguments": {"chat_id": "texte", "message": "texte", "message_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "chat": {}, "code": 1, "date": "texte", "rich": true, "text": "texte", "error": "texte", "action": "texte", "params": {}, "sender": {}, "status": "texte", "topic_id": 1}} - find_chats≈ 672 tokens
Find users/groups/channels by name, username, or phone. Comma-separated usernames are searched in parallel and results are merged round-robin. Global search (query required) searches all Telegram; with min_date, max_date, or filter, search uses dialog list or a named filter; include_peers filters use last-activity from GetPeerDialogs; flag-based filters use dialog list dates. Success: dict with key chats (list of chat objects). Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (7)
Paramètreslimit· integer · optionnel
Maximum chats to return (recommended 50 or less).query· string · optionnel
Name, username (no @), phone (+country…), or comma-separated usernames for batch lookup. Example: 'alice,bob,charlie'. Required for global search unless you use min_date/max_date or folder alone.folder· string · optionnel
Telegram folder name (case-insensitive exact match after normalization). In Telegram's UI these are called folders; internally they are "dialog filters" — saved filter presets that group chats by custom criteria (pinned, unread, business, etc.). See Filters-vs-Folders.md for the technical distinction.public· boolean · optionnel
If true, prefer chats with a public username; if false, without. Does not apply to private DMs. Omit to skip this filter.max_date· string · optionnel
Inclusive maximum date filter (ISO 8601 date or datetime). Omit for no upper bound.min_date· string · optionnel
Inclusive minimum date filter (ISO 8601 date or datetime). Omit for no lower bound.chat_type· string · optionnel
Comma-separated chat kinds: private, bot, group, channel. Case-insensitive; extra spaces allowed.
Exemple d'appel{"name": "find_chats", "arguments": {"limit": 1, "query": "texte", "folder": "texte", "public": true, "max_date": "texte", "min_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "code": 1, "chats": [], "error": "texte", "action": "texte", "params": {}, "exception": {}, "operation": "texte", "error_code": "texte"}} - get_chat_info≈ 510 tokens
Load profile and metadata for one user, bot, group, or channel. Success: info dict; forum chats may include topics up to topics_limit; user targets may include common_chats up to common_chats_limit. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (3)
Paramètreschat_id· string · requis
Target chat: numeric id (e.g. -100…), username without @, or 'me' for Saved Messages.topics_limit· integer · optionnel
Max forum topics to list when the chat is a forum.common_chats_limit· integer · optionnel
Max common groups to list for user targets.
Exemple d'appel{"name": "get_chat_info", "arguments": {"chat_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": 1, "ok": true, "code": 1, "error": "texte", "phone": "texte", "title": "texte", "action": "texte", "is_bot": true, "params": {}, "topics": [], "is_user": true, "is_forum": true}} - get_messages≈ 1156 tokens
Read or search messages in one chat: browse latest, search text, fetch by ids, or load replies to a message (comments, forum topics, threads). Use from_user to filter by sender (server-side, per-chat only). Use context to include neighboring messages and reply chains around each result. Use include_replies to fetch up to 5 direct replies per result. Do not combine message_ids with query or reply_to_id. Results are ordered by ascending date-time (oldest first) in every mode, including message_ids and nested context lists; limit selects the newest N. Success: messages, has_more, optional total_count and discussion fields. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (13)
Paramètreslimit· integer · optionnel
Maximum messages to return (recommended 50 or less).query· string · optionnel
Search within this chat only; comma-separated terms. Omit to browse latest or use message_ids / reply_to_id modes.chat_id· string · requis
Target chat: numeric id (e.g. -100…), username without @, or 'me' for Saved Messages.context· integer · optionnel
Number of surrounding messages to include as context for each search result. 0 = disabled (default). 1-10 = include N messages before and N after each result. Also fetches the message being replied to and top replies (if include_replies=true). Requires chat_id. Disabled when result count exceeds cost-based caps.max_date· string · optionnel
Inclusive maximum date filter (ISO 8601 date or datetime). Omit for no upper bound.min_date· string · optionnel
Inclusive minimum date filter (ISO 8601 date or datetime). Omit for no lower bound.from_user· string · optionnel
Only return messages from this sender. Not a display-name or contact-name search — bare strings resolve like chat_id via get_entity (usernames are case-insensitive and may match an unrelated channel). Prefer @username, phone (+…), or numeric user id. Also accepts 'me', 'self', t.me URL, -100 prefixed id. Uses Telegram's native from_id server-side filter (per-chat search only).message_ids· array · optionnel
Exact message ids to fetch. Mutually exclusive with query and reply_to_id.reply_to_id· integer · optionnel
Anchor message id: channel post id, forum topic_id from get_chat_info, or a message id for direct replies. Use with thread_scope.thread_scope· string · optionnel · auto | full | direct
Only with reply_to_id. auto: full forum topic (topic_id) or channel comment thread via getReplies; else direct replies. full: nested branch under a message id (forum in-topic uses search window, not whole topic); supergroup threads use search top_msg_id. direct: immediate replies only.include_replies· boolean · optionnel
If true, fetch up to 5 direct replies per search result and attach as replies. Each result costs one API call (not batchable). Default: false.auto_expand_batches· integer · optionnel
Extra search batches to run when filters narrow results. Higher values may return more matches at the cost of latency.include_total_count· boolean · optionnel
If true, response may include total_count where supported (per-chat search; ignored for global search).
Exemple d'appel{"name": "get_messages", "arguments": {"chat_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "code": 1, "error": "texte", "action": "texte", "params": {}, "_warning": "texte", "has_more": true, "messages": [], "exception": {}, "operation": "texte", "error_code": "texte", "total_count": 1}} - invoke_mtproto≈ 747 tokens
Low-level Telegram API (MTProto) invoke for methods not wrapped by other tools. Dangerous methods require allow_dangerous=true. Success: API result dict or normalized error. PII and credential-shaped fields (phone, access_hash) are dropped from a successful result by default; pass include_sensitive=true for the raw payload. A bare message id needs a chat binding: requests with no peer field (messages.GetMessages, messages.DeleteMessages) are refused, because a bare id resolves against an arbitrary dialog. Use channels.GetMessages or messages.GetHistory, which carry the binding. messages.GetHistory cannot address a forum topic (no thread_id/top_msg_id in the schema, and channels.GetHistory does not exist) -- use messages.Search with top_msg_id, or the high-level get_messages with reply_to_id. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (5)
Paramètresresolve· boolean · optionnel
If true, resolve string/int peer-like fields to TL Input* entities before invoke.params_json· string · requis
JSON object string of TL parameters as in Telegram API docs; nested TL uses "_": "typeName" discriminator.allow_dangerous· boolean · optionnel
If false, destructive methods (e.g. deletes) are blocked. Set true only when intended.method_full_name· string · requis
Telegram API method, e.g. "messages.GetHistory" or "users.GetFullUser" (normalization applied).include_sensitive· boolean · optionnel
If true, return the raw result including PII and credential-shaped fields (phone, access_hash). Default false drops them.
Exemple d'appel{"name": "invoke_mtproto", "arguments": {"params_json": "texte", "method_full_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_": "texte", "id": 1, "ok": true, "code": 1, "date": 1, "chats": [], "error": "texte", "users": [], "action": "texte", "params": {}, "result": "texte", "messages": []}} - search_messages_globally≈ 665 tokens
Search all Telegram chats at once (not scoped to one chat). Comma-separated query terms; optional filters by date, chat kind, and public username. Results are ordered by ascending date-time (oldest first); limit selects the newest N. Success: message list and metadata dict. Global search ignores include_total_count. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (8)
Paramètreslimit· integer · optionnel
Maximum messages to return (recommended 50 or less).query· string · requis
Search terms, comma-separated for multiple terms (OR-style global search). Required.public· boolean · optionnel
If true, prefer chats with a public username; if false, without. Does not apply to private DMs. Omit to skip this filter.max_date· string · optionnel
Inclusive maximum date filter (ISO 8601 date or datetime). Omit for no upper bound.min_date· string · optionnel
Inclusive minimum date filter (ISO 8601 date or datetime). Omit for no lower bound.chat_type· string · optionnel
Comma-separated chat kinds: private, bot, group, channel. Case-insensitive; extra spaces allowed.auto_expand_batches· integer · optionnel
Extra search batches to run when filters narrow results. Higher values may return more matches at the cost of latency.include_total_count· boolean · optionnel
If true, response may include total_count where supported (per-chat search; ignored for global search).
Exemple d'appel{"name": "search_messages_globally", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "code": 1, "error": "texte", "action": "texte", "params": {}, "_warning": "texte", "has_more": true, "messages": [], "exception": {}, "operation": "texte", "error_code": "texte", "total_count": 1}} - send_message≈ 1086 tokens
Send text and optional file attachments to a Telegram chat. Supports reply-to (including forum topics and channel discussion groups), parse_mode: classic markdown/html/auto (entities) or rich (Rich Message document; dialect auto-detected). parse_mode=rich cannot be combined with files. File attachments as http(s) URLs, local paths, or data: URIs. When files are provided, the message text becomes a caption. For channel posts with reply_to_id, automatically posts in the linked discussion group. schedule_date (ISO 8601, must be in the future) queues the message instead of delivering it now, so the result carries status='scheduled' plus scheduled and schedule_date. save_as_draft=true saves the text as the chat's draft instead of sending it (empty message clears the draft; user sessions only, bots cannot; text-only, so no files, no parse_mode='rich', no schedule_date). Success: dict with message_id, date, chat, text, status='sent', and sender info (rich messages also set rich=true and rich_format). Error: dict with ok=false and error string. Use send_message to create new messages; use edit_message to modify existing ones. Use send_message_to_phone when targeting a phone number instead of a chat_id. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (7)
Paramètresfiles· array · optionnel
List of attachment URLs, local paths, or data URIs (one or more strings). data: URIs (data:<mime>;base64,<payload>) work in all server modes; local paths work in stdio mode only.chat_id· string · requis
Target chat: numeric id (e.g. -100…), username without @, or 'me' for Saved Messages.message· string · requis
Message text. When sending files, used as caption.parse_mode· string · optionnel · markdown | html | auto | rich
'markdown'/'html'/'auto': classic entity formatting (auto detects). 'rich': Telegram Rich Message document; dialect auto-detected (known HTML tags outside code → rich HTML, else rich markdown). Default is 'auto'. parse_mode='rich' cannot be combined with files.reply_to_id· integer · optionnel
Telegram message id to reply to. For forums, topic root id; for channel posts, post id (may create a comment). Omit for a new top-level message.save_as_draft· boolean · optionnel
If true, save the text as the chat's draft instead of sending it (an empty text clears the existing draft). User sessions only — bot accounts cannot call messages.saveDraft. Cannot be combined with schedule_date, files, or parse_mode='rich'.schedule_date· string · optionnel
ISO 8601 instant at which Telegram should deliver the message, e.g. '2026-10-20T09:00:00Z' or '2026-10-20T12:00:00+03:00'. Must be in the future. On send: queues the message instead of delivering now. On edit: reschedules an already-queued message.
Exemple d'appel{"name": "send_message", "arguments": {"chat_id": "texte", "message": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "chat": {}, "code": 1, "date": "texte", "rich": true, "text": "texte", "error": "texte", "action": "texte", "params": {}, "sender": {}, "status": "texte", "topic_id": 1}} - send_message_to_phone≈ 1006 tokens
Send to a phone number: may create a temporary contact, then send text or files. Supports parse_mode: classic markdown/html/auto or rich (Rich Message; dialect auto-detected). parse_mode=rich cannot be combined with files. schedule_date (ISO 8601, future) queues the message instead of delivering now; save_as_draft=true saves the text as the draft in that chat instead of sending. Success: send result plus contact_was_new / contact_removed when applicable. Full documentation: https://github.com/leshchenko1979/fast-mcp-telegram/blob/main/docs/Tools-Reference.md
Paramètres, retour & exemple (10)
Paramètresfiles· array · optionnel
List of attachment URLs, local paths, or data URIs (one or more strings). data: URIs (data:<mime>;base64,<payload>) work in all server modes; local paths work in stdio mode only.message· string · requis
Message text. When sending files, used as caption.last_name· string · optionnel
Last name when creating a temporary contact.first_name· string · optionnel
First name when creating a temporary contact.parse_mode· string · optionnel · markdown | html | auto | rich
'markdown'/'html'/'auto': classic entity formatting (auto detects). 'rich': Telegram Rich Message document; dialect auto-detected (known HTML tags outside code → rich HTML, else rich markdown). Default is 'auto'. parse_mode='rich' cannot be combined with files.phone_number· string · requis
E.164 phone number with country code, e.g. +1234567890 (must be on Telegram).remove_if_new· boolean · optionnel
If true, delete the contact after send when it was created only for this send.save_as_draft· boolean · optionnel
If true, save the text as the chat's draft instead of sending it (an empty text clears the existing draft). User sessions only — bot accounts cannot call messages.saveDraft. Cannot be combined with schedule_date, files, or parse_mode='rich'.schedule_date· string · optionnel
ISO 8601 instant at which Telegram should deliver the message, e.g. '2026-10-20T09:00:00Z' or '2026-10-20T12:00:00+03:00'. Must be in the future. On send: queues the message instead of delivering now. On edit: reschedules an already-queued message.reply_to_msg_id· integer · optionnel
Reply to this message id in the target chat after resolve.
Exemple d'appel{"name": "send_message_to_phone", "arguments": {"message": "texte", "phone_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "chat": {}, "code": 1, "date": "texte", "rich": true, "text": "texte", "error": "texte", "action": "texte", "params": {}, "sender": {}, "status": "texte", "topic_id": 1}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».