A MCP server for Telegram that provides tools to send messages, get channel information, forward messages, pin messages, and retrieve channel members. Includes AI sampling capabilities for responding to Telegram messages via the MCP client.
The server defines 5 tools with reasonable naming conventions (verb_noun patterns: SEND_MESSAGE, GET_CHANNEL_INFO, FORWARD_MESSAGE, PIN_MESSAGE, GET_CHANNEL_MEMBERS). All tools have brief descriptions present. However, parameter schemas are partially visible from the provided input specs, and the actual source code for schema definitions (the individual tool files) is not shown, making it impossible to verify complete schema implementation, type constraints, or output documentation. Descriptions are present but generic (30-60 chars on average). Parameter descriptions exist but are minimal. No evidence of output schemas, error handling guidance, or recovery paths. No tool annotations visible. The server lacks structured error responses and actionable error messages. Security consideration is present (uses dotenv for secrets) but not explicitly validated in tool definitions.
Forward a message from one chat to another
Get information about a Telegram channel or chat
Get a list of channel administrators and members
Pin a message in a Telegram chat or channel
Send a message to a Telegram chat or channel
Output schemas not documented. Tool descriptions do not specify what fields are returned or their types, forcing LLMs to guess at response structure and preventing chaining between tools.
Parameter descriptions are minimal and do not explain constraints, ranges, or expected formats. For example, 'limit' in GET_CHANNEL_MEMBERS states '1-50' in constraint but not in the description text, which LLMs cannot reliably parse from JSON Schema.
No error handling or recovery guidance. Tools do not document how to handle invalid chat IDs, permission errors, API failures, or what the LLM should do next (retry, ask user, etc.).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
No tool annotations. SEND_MESSAGE, FORWARD_MESSAGE, and PIN_MESSAGE are destructive/stateful operations but lack destructiveHint annotations to signal to LLMs that these calls have irreversible consequences.
Tool descriptions do not clarify intent or use cases. 'Get information about a Telegram channel or chat' is vague, does it return metadata, member count, permissions, settings? LLMs cannot disambiguate GET_CHANNEL_INFO from similar discovery tools without clearer descriptions.
Overloaded parameter types (union[string, number]) without explicit guidance on which form to prefer. Descriptions do not explain when to use @channelname vs -1001234567890, forcing LLMs to guess or try both.
No pagination guidance for GET_CHANNEL_MEMBERS. If a channel has thousands of members, no indication of how to fetch beyond limit=50. No next_cursor or offset pattern documented.