MCP server for Telegram. Let Claude, Cursor, Codex, or any AI agent read, search, and send messages on your real Telegram account.
Server has 5 tools with clear verb-noun naming (telegram_whoami, telegram_list_chats, telegram_get_messages, telegram_search_messages, telegram_send_message). All tools have descriptions (avg 95 chars, within 10-1024 range). Input schemas use Zod with type constraints and defaults. However, parameter descriptions are sparse or missing: 'chat' param in telegram_get_messages lacks description; 'query' in telegram_search_messages has none; 'message' param has no description. Output schemas are not documented, responses are text-wrapped JSON without formal schema declarations. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. Security: write allowlist is enforced via assertWritable(), but no audit logging visible. Composition is sound, tools are single-purpose and chainable (list_chats → get_messages → search_messages).
Reads recent messages from one chat, newest first.
Lists recent dialogs (chats, groups, channels) with their ids, newest first.
Full-text search across one chat, or across every chat when no chat is given.
Sends a message. Only works for chats listed in TELEGRAM_WRITE_ALLOWLIST.
Returns the Telegram account this server is signed in as.
Parameter descriptions missing or incomplete. 'chat' in telegram_get_messages has no description; 'query' in telegram_search_messages has no description; 'message' in telegram_send_message has no description. LLMs cannot infer parameter meaning from names alone.
Output schemas not documented. Tools return text-wrapped JSON without formal schema declarations. LLMs cannot plan downstream calls or extract structured data reliably.
Error handling lacks recovery guidance. No error messages tell the LLM what to do next (e.g., 'Chat not found. Try telegram_list_chats() to see available chats'). Errors are not categorized as retryable vs fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
No audit logging. Sensitive operations (telegram_send_message) lack traces of who called what, when, and with which parameters. Required for compliance and incident response.
Destructive operation (telegram_send_message) lacks confirmation step. Agents make mistakes, no dry-run or confirmation pattern prevents accidental message sends.