mcp-telegram-claudecode
Enables interaction with Telegram, allowing Claude Code to send messages and photos, retrieve messages, and approve sensitive operations remotely.
Click on "Install 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., "@mcp-telegram-claudecodeSend a Telegram notification when the task completes."
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.
MCP-Telegram-ClaudeCode
An MCP (Model Context Protocol) server that enables Claude Code to send and receive messages via Telegram. This allows you to interact with Claude Code remotely through your Telegram app.
Features
Send text messages from Claude Code to Telegram
Receive messages from Telegram in Claude Code
Send photos/screenshots to Telegram
Proxy support for regions where Telegram is blocked
NEW: Remote permission approval via hooks - Approve/deny sensitive operations from your phone
NEW: Lock file mechanism - Prevents multiple instance conflicts
Related MCP server: Telegram MCP Server
Prerequisites
Node.js 18.0.0 or higher
Claude Code installed
A Telegram account
Quick Start
Step 1: Create a Telegram Bot
Open Telegram and search for @BotFather
Send
/newbotcommandFollow the prompts to name your bot
Save the bot token - it looks like:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
Step 2: Get Your Chat ID
Open Telegram and search for @userinfobot
Send any message to this bot
Save the
Idvalue from the response - it looks like:123456789
Step 3: Start Your Bot
Important: Before Claude Code can receive your messages, you must start a conversation with your bot:
Search for your bot by its username in Telegram
Click "Start" or send any message to it
Step 4: Configure Claude Code
Add the MCP server to your Claude Code configuration.
Option A: Using Claude Code settings command
claude /settingsThen add the MCP server configuration.
Option B: Edit configuration file directly
The configuration file is located at:
Windows:
%USERPROFILE%\.claude.jsonmacOS/Linux:
~/.claude.json
Configuration Examples
Without Proxy
If you can access Telegram directly:
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram-claudecode"],
"env": {
"TELEGRAM_BOT_TOKEN": "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz",
"TELEGRAM_CHAT_ID": "123456789"
}
}
}
}With Proxy
If you need a proxy to access Telegram:
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram-claudecode"],
"env": {
"TELEGRAM_BOT_TOKEN": "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz",
"TELEGRAM_CHAT_ID": "123456789",
"HTTP_PROXY": "http://127.0.0.1:7890"
}
}
}
}Common proxy ports:
Clash:
http://127.0.0.1:7890V2Ray:
http://127.0.0.1:10808Shadowsocks:
http://127.0.0.1:1080
Replace with your actual proxy address and port.
Environment Variables
Variable | Required | Description |
| Yes | Bot token from @BotFather |
| Yes | Your chat ID from @userinfobot |
| No | HTTP proxy URL (e.g., |
| No | HTTPS proxy URL (alternative to HTTP_PROXY) |
Available Tools
Once configured, Claude Code will have access to these tools:
telegram_send_message
Send a text message to your Telegram.
Parameters:
- message (required): The text message to sendtelegram_get_messages
Retrieve recent messages from Telegram.
Parameters:
- limit (optional): Maximum number of messages to retrieve (default: 10)telegram_check_new
Quick check if there are new messages.
No parameters requiredtelegram_send_photo
Send an image file to Telegram.
Parameters:
- photo_path (required): Absolute path to the image file
- caption (optional): Caption for the photoUsage Examples
After configuration, you can ask Claude Code to:
"Send me a message on Telegram saying the task is complete"
"Check if I sent any new messages on Telegram"
"Send a screenshot of the current code to my Telegram"
Troubleshooting
"TELEGRAM_BOT_TOKEN must be configured"
Make sure you've added the bot token to your .claude.json configuration.
"No new messages" but you sent messages
Make sure you started a conversation with your bot first
Check that your
TELEGRAM_CHAT_IDis correctIf using a proxy, verify the proxy is working
Connection timeout or network error
If you're in a region where Telegram is blocked:
Make sure your proxy software is running
Add the
HTTP_PROXYenvironment variable to your configurationVerify the proxy port is correct
Bot not responding
Check that the bot token is correct (no extra spaces)
Make sure you've started a conversation with your bot
Try sending a message to your bot first, then check for messages
Remote Permission Approval (Recommended)
Instead of using --dangerously-skip-permissions, you can use Claude Code hooks to approve sensitive operations remotely via Telegram.
How It Works
┌─────────────┐ PreToolUse Hook ┌─────────────────┐ Telegram API ┌──────────┐
│ Claude Code │ ──────────────────────► │ Hook Script │ ◄─────────────────► │ Telegram │
│ (sensitive │ │ (asks approval) │ │ (you) │
│ operation) │ ◄────────────────────── │ │ │ │
└─────────────┘ approve/deny └─────────────────┘ └──────────┘Claude Code attempts a sensitive operation (Edit, Write, Bash)
PreToolUse hook sends details to your Telegram
You reply Y to approve or N to deny
Hook returns the decision to Claude Code
Setup
Copy the hooks to your system (included in
hooks/directory)Configure Claude Code hooks via
/hookscommand or edit settings:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|Edit|Write",
"hooks": [
"node /path/to/telegram-claude-mcp/hooks/pretool-approval.js"
]
}
]
}
}Set environment variables (same as MCP server config)
See hooks/README.md for detailed setup instructions.
Approval Responses
Approve | Deny |
Y, yes, 1, approve | N, no, 0, deny |
是, 好, 可以 | 否, 不, 拒绝 |
How It Works
Architecture
This MCP server acts as a bridge between Claude Code and Telegram:
┌─────────────┐ MCP Protocol ┌─────────────────┐ Telegram API ┌──────────┐
│ Claude Code │ ◄──────────────────► │ MCP Server │ ◄─────────────────► │ Telegram │
│ │ │ (this project) │ │ │
└─────────────┘ └─────────────────┘ └──────────┘Auto-Polling & Terminal Injection (Experimental)
When the MCP server starts, it automatically begins polling for new Telegram messages. When a message is received, it attempts to inject the text into the active terminal window using:
Clipboard: Message is copied to system clipboard
SendKeys (Windows): PowerShell script simulates Ctrl+V and Enter keystrokes
Window Activation: Attempts to find and activate terminal windows (Windows Terminal, cmd, PowerShell, VS Code)
This is an experimental feature - it enables "remote control" of Claude Code via Telegram, but has reliability limitations.
Tools Available
Tool | Description |
| Send text to Telegram |
| Retrieve recent messages |
| Quick check for new messages |
| Send images to Telegram |
| Manually start auto-polling |
| Stop auto-polling |
Known Issues & Limitations
✅ Multiple Claude Code Instances (Fixed in v1.4.0)
Problem: If you run multiple Claude Code windows, each will start its own MCP server instance.
Solution: Lock file mechanism now prevents multiple instances from polling simultaneously. Only the first instance will poll; others will skip polling automatically.
✅ Injection Failure Notification (Fixed in v1.4.0)
Problem: When SendKeys injection fails, you wouldn't know about it.
Solution: Failed injections now send a notification to Telegram, so you know when to check manually.
✅ Permission Prompts (Solved with Hooks)
Problem: Cannot approve sensitive operations remotely.
Solution: Use the included PreToolUse hooks for remote approval via Telegram. See Remote Permission Approval section.
⚠️ SendKeys Reliability (Windows)
The terminal injection feature uses WriteConsoleInput API for no-focus injection:
How it works:
Uses Windows Console API to write directly to the console input buffer
Does not require window focus
Does not use clipboard
Works when other applications are active
Limitation - Single Terminal Only:
Works correctly when only one terminal window is open
If multiple terminals are open, messages may go to the wrong terminal
This is due to Windows Terminal's ConPTY architecture
When it may fail:
Multiple terminal windows open simultaneously
Remote desktop or virtual machine environments
Screen is locked
Workaround: Use hooks instead of SendKeys for more reliable operation, or ensure only one terminal is open.
⚠️ Platform Support
Platform | MCP Tools | Auto-Injection | Hooks |
Windows | ✅ Full | ✅ SendKeys | ✅ Full |
macOS | ✅ Full | ❌ Not implemented | ✅ Full |
Linux | ✅ Full | ❌ Not implemented | ✅ Full |
Recommendation: Use hooks for cross-platform remote control.
Changelog
v1.4.0
✅ Added lock file mechanism to prevent multiple instance conflicts
✅ Added injection failure notifications via Telegram
✅ Added PreToolUse hook for remote permission approval
✅ Added PostToolUse hook for error notifications
✅ Improved terminal injection with WriteConsoleInput API (no focus required)
✅ Improved exit cleanup (SIGINT/SIGTERM handling)
⚠️ Known limitation: Single terminal mode only (multiple terminals may cause injection to wrong window)
v1.3.0
Added photo sending support
Added proxy support
v1.2.0
Added auto-polling and terminal injection
v1.1.0
Added telegram_check_new tool
v1.0.0
Initial release
License
MIT License - see LICENSE file for details.
Author
EthanSky
Repository
Available Tools
8 toolstelegram_check_newA
Quick check if there are new messages from Telegram without retrieving all of them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some transparency by indicating the tool is a quick check and does not retrieve all messages, implying a lightweight, likely read-only operation. However, it does not specify the return type (e.g., boolean, count) or whether any side effects occur (e.g., marking messages as read), leaving important behavioral details undefined.
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 a single, concise sentence that front-loads the core purpose. Every word earns its place, with no redundancy or extraneous detail.
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?
The tool has no output schema and no annotations, so the description must compensate by explaining what the tool returns or how to interpret its result. It does not state whether the result is a boolean, message count, etc. Given the low complexity (0 params), the missing return-value information is a significant gap that limits the agent's ability to use the tool effectively.
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?
The tool has zero parameters, and the schema is empty with 100% coverage. Per the rubric, a baseline of 4 is appropriate since the description does not need to explain parameters that do not exist, and there is no ambiguity about inputs.
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 a specific verb ('check') and resource ('new messages from Telegram'), and distinguishes itself from the sibling tool telegram_get_messages by explicitly noting it does not retrieve all messages. This makes it immediately clear what the tool does and how it differs from similar 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?
The phrase 'Quick check... without retrieving all of them' provides clear context for when to use this tool—when a lightweight presence check is needed rather than full message retrieval. However, it does not explicitly name alternatives or state when not to use it, though the contrast with 'retrieving all' strongly implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_get_messagesA
Get recent messages from Telegram. Use this to check for new messages from the user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to retrieve (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description offers minimal behavioral disclosure. It implies a read operation ('Get') but does not state side effects (e.g., whether messages are marked as read), rate limits, authentication requirements, or the return format. The description carries little beyond the basic action.
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 two sentences with no wasted words. It is front-loaded with the primary action and immediately provides the practical use case.
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 tool with one optional parameter and no output schema, the description is mostly complete. It explains what the tool retrieves and when to use it. However, it does not describe the structure of the returned messages, which would be helpful but is not critical for this simple 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?
The input schema fully documents the only parameter 'limit' with its default value and purpose. The description adds no additional parameter semantics, so the baseline of 3 is appropriate given 100% schema coverage.
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 uses the specific verb 'Get' with a clear resource 'recent messages from Telegram'. It states exactly what the tool does and even frames it for a common use case (checking for new user messages), distinguishing it from the send-type sibling 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?
The description explicitly states when to use this tool: 'Use this to check for new messages from the user.' It gives a clear context but does not mention exclusions or alternative tools like telegram_check_new.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_send_documentA
Send any file/document to the configured Telegram chat. Use this for files that are not photos or videos (e.g., zip, pdf, txt, etc.). Max file size: 50MB.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Optional caption for the document | |
| document_path | Yes | Absolute path to the file |
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 the key constraint of 50MB max file size, but does not mention permissions, side effects, or return behavior. For a simple send operation, this is adequate but not rich.
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 concise sentences that front-load the core purpose ('Send any file/document') and immediately follow with usage guidance. No wasted words, every sentence contributes.
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 straightforward send tool with two parameters, the description fully covers what the tool does, when to use it, and a critical size constraint. No output schema exists, but none is needed for this simple action.
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?
Input schema covers both parameters with clear descriptions, achieving 100% coverage. The description adds value by specifying the 50MB max file size, which applies to the document_path parameter and is not present in 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 the action ('Send any file/document') and the target resource ('configured Telegram chat'). It explicitly distinguishes from sibling photo/video tools by specifying 'for files that are not photos or videos', making its purpose unambiguous.
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 provides an explicit when-to-use condition: 'Use this for files that are not photos or videos', which implies exclusions for photo/video senders. However, it doesn't name the alternative sibling tools directly, so it lacks full explicit alternatie guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_send_messageA
Send a text message to the configured Telegram chat. IMPORTANT: You MUST use this tool to reply to the user regardless of whether they sent their message via terminal or Telegram. Always respond through Telegram so the user can see your replies on their phone.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message text to send |
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 the message goes to a 'configured Telegram chat' and emphasizes it as the required reply channel, but it does not mention potential failures, rate limits, or delivery confirmation. The key behavior is clear but operational details are sparse.
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 two sentences: the first is a clear functional definition, and the second is a critical usage rule. There is no redundancy or filler; every sentence 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 one-parameter tool with no output schema, the description is quite complete. It includes the essential context that this tool is the mandatory channel for all replies, which is critical for an agent. It falls short of a 5 only because it does not describe any error behavior or success indications.
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 100%: the only parameter 'message' is described as 'The message text to send'. The description adds no further parameter-level detail, so the baseline of 3 is appropriate since the schema already provides sufficient semantics.
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 action: 'Send a text message to the configured Telegram chat.' It specifies the verb 'send' and the resource 'text message to Telegram chat', effectively distinguishing it from sibling tools like telegram_send_photo and telegram_send_document.
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 gives explicit usage guidance: 'You MUST use this tool to reply to the user regardless of whether they sent their message via terminal or Telegram. Always respond through Telegram.' This clarifies when to use this tool over alternatives and provides a strong directive for agent behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_send_photoB
Send a photo/image to the configured Telegram chat.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Optional caption for the photo | |
| photo_path | Yes | Absolute path to the image file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description discloses no behavioral traits beyond the action itself. It does not mention permissions, file validation, failure behavior, or what happens if the chat is not configured. The agent is left to infer side effects.
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?
One sentence, front-loaded, and every word earns its place. There is no redundancy or irrelevant information.
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 simplicity, the description provides the core purpose and the schema fills in parameter details. However, it lacks any mention of return values or error conditions, which would be useful since there is no output schema. Still, it is mostly complete for a basic send action.
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 100% with clear descriptions for both parameters. The tool description adds no extra meaning beyond the schema, such as file format restrictions, size limits, or path resolution details.
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?
Clearly states it sends a photo/image to the configured Telegram chat, distinguishing it from sibling tools such as telegram_send_message, telegram_send_video, and telegram_send_document. The verb and resource are specific and unambiguous.
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?
No guidance on when to use this tool versus alternatives like telegram_send_document or telegram_send_message. The description only states the action without any context for selection, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_send_videoA
Send a video file to the configured Telegram chat. Supports mp4, mov, avi and other video formats. Max file size: 50MB.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Optional caption for the video | |
| video_path | Yes | Absolute path to the video file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It transparently mentions the 50MB constraint and supported formats, but does not detail behavior like error handling, upload mechanics, or whether the destination chat is fixed. It adds some useful context but leaves gaps.
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 concise sentences deliver the purpose, supported formats, and size limit without redundancy. Every word earns its place, and the key action is 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?
For a simple two-parameter tool with full schema coverage and no output schema, the description covers the essential operational constraints (path, optional caption, formats, size limit). It does not explain response behavior or errors, but this is not critical 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?
The input schema already fully documents both parameters (video_path and caption) with clear descriptions, so the schema coverage is high at 100%. The description adds only the file format and size context, not additional parameter-level semantics, so the baseline of 3 is appropriate.
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 uses a specific verb ('Send') and resource ('video file to the configured Telegram chat'), and clearly distinguishes itself from sibling tools like telegram_send_photo and telegram_send_document by specifying video file types and the 50MB size limit.
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?
It clearly indicates this tool is for sending video files, listing supported formats and a size cap, which gives clear usage context. It does not explicitly name alternatives or exclusions, but the intent is unambiguous for the stated file type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_start_pollingA
Manually start auto-polling for Telegram messages (polling starts automatically on MCP load, so this is usually not needed). When enabled, new messages will be automatically injected into the terminal as user input.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | Polling interval in milliseconds (default: 2000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions that new messages are 'automatically injected into the terminal as user input', a key effect. However, it omits details about the continuous nature of polling, potential side effects, or how to stop it, leaving some behavioral transparency gaps.
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 two sentences, both informative. The first sentence states purpose and typical usage cadence; the second explains the behavioral consequence. No redundant or verbose language is present.
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 1-parameter tool with no output schema, the description covers the essential aspects: what it does, when it's needed, and what happens when enabled. It lacks explicit mention of the companion stop_polling tool, but sibling tool names partially fill that gap.
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?
The input schema already fully documents the single parameter 'interval' with its description and default value (2000 ms). The tool description adds no additional meaning to this parameter, so the baseline score of 3 is appropriate.
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's purpose: 'Manually start auto-polling for Telegram messages'. It also adds context that polling starts automatically on MCP load, clarifying that this is a manual override. However, it does not explicitly compare to sibling tools like telegram_check_new, so it lacks explicit sibling differentiation.
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 phrase 'polling starts automatically on MCP load, so this is usually not needed' provides direct guidance on when not to use the tool. It implies usage only when manual restart is required, but does not mention alternative tools for checking messages, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_stop_pollingA
Stop auto-polling for Telegram messages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Stop auto-polling') but does not disclose potential side effects, idempotency, whether polling must already be active, or any impact on existing messages. This is a mutation tool, so more transparency would be expected.
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 a single, clean sentence that is front-loaded with the verb and object. Every word serves a purpose, and there is no redundant or extraneous information.
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 simplicity (0 parameters, no output schema), the description covers the core functionality. It does not mention behavioral nuances like return values or prerequisites, but the description is arguably sufficient for a stop command. Minor gaps prevent a perfect score.
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?
This tool has zero parameters, so the description does not need to elaborate on parameter meanings. Per the rubric, the baseline for 0 parameters is 4, and the description correctly avoids irrelevant parameter details.
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 uses a specific verb 'Stop' and a distinct resource 'auto-polling for Telegram messages.' It clearly differentiates from the sibling tools, particularly telegram_start_polling.
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 as the counterpart to telegram_start_polling, but it does not explicitly state when to use it vs. alternatives, nor does it mention any exclusions or conditions. It provides only implied 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. Dates show when Glama detected each change.
8 tool updates
v1.5.0- First observed
telegram_check_new - First observed
telegram_get_messages - First observed
telegram_send_document - First observed
telegram_send_message - First observed
telegram_send_photo - First observed
telegram_send_video - First observed
telegram_start_polling - First observed
telegram_stop_polling
TDQS
The tools are mostly distinct: send_message, send_photo, send_video, and send_document are clearly separated by content type, and start/stop_polling are unique. However, get_messages and check_new could cause slight confusion, as both relate to retrieving new messages, though their descriptions differentiate by urgency and scope.
All tools follow a consistent telegram_ + verb_noun pattern (send_message, get_messages, send_photo, start_polling). The only slight deviation is telegram_check_new, where 'new' is an adjective rather than a noun, but it remains understandable and consistent with the overall style.
With 8 tools, the server is well-scoped for its purpose: messaging, media sending, message retrieval, and polling control. Each tool serves a distinct function without redundancy.
The tool set covers the core Telegram operations needed for a Claude Code integration: sending text, photos, videos, documents, retrieving messages, and managing polling. Missing features like editing or deleting messages are not critical for this use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API
Trade Robinhood through natural language in Claude Code.
Share context and questions between Claude instances — VS Code, claude.ai web, and mobile.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects Claude Code sessions to Telegram, enabling AI-powered code assistance and file management directly from Telegram chats.89MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude Code to send messages to and receive instructions from Telegram, with task tracking and persistent storage.-
- AlicenseAqualityBmaintenanceEnables Claude to send questions via Telegram and receive answers from your phone, bypassing terminal popups.3MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to send messages, media, and manage Telegram chat messages through a Telegram bot, including sending photos, documents, and editing or deleting messages.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EthanSky2986/mcp-telegram-claudecode'
If you have feedback or need assistance with the MCP directory API, please join our Discord server