telegram-claude-mcp
Allows to send messages and ask questions via Telegram, enabling communication with a user through the Telegram Bot API.
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-claude-mcpask me if I want to proceed with the database migration"
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 Bridge
An MCP server that lets Claude Code send messages and ask questions via Telegram.
When Claude Code needs your input during a coding task, it sends a Telegram message (with optional inline buttons) and waits for your reply.
Claude Code → MCP tool call → this server → Telegram Bot API → your phone
← tool result ← server ← you tap a button / type a replyTools
Tool | Description |
| Send a question with optional buttons, wait for response (10-min timeout) |
| Fire-and-forget notification |
Related MCP server: Telegram Notification MCP Server
Setup
1. Create a Telegram Bot
Open Telegram, message @BotFather
Send
/newbot, follow prompts — save the bot tokenMessage your new bot (send anything), then visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdatesFind your chat ID in the response JSON (
result[0].message.chat.id)
2. Clone & Install
git clone https://github.com/yourusername/telegram-claude-mcp.git
cd telegram-claude-mcp
npm install3. Configure Claude Code
Add to ~/.claude/mcp.json (create the file if it doesn't exist):
{
"mcpServers": {
"telegram": {
"command": "node",
"args": ["/absolute/path/to/telegram-claude-mcp/telegram-bridge.js"],
"env": {
"TELEGRAM_BOT_TOKEN": "your-bot-token",
"TELEGRAM_CHAT_ID": "your-chat-id"
}
}
}
}4. Restart Claude Code
The MCP server starts automatically when Claude Code launches. You should see telegram in your MCP server list.
Usage
Claude Code will automatically have access to ask_user and notify_user tools. You can prompt it to use them:
"If you need to ask me something, use the ask_user Telegram tool"
Or Claude may use them when configured in your project's CLAUDE.md.
License
MIT
Available Tools
2 toolsask_userA
Send a question to the user via Telegram and wait for their response. Optionally include inline buttons for quick replies. Times out after 10 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| buttons | No | Optional list of button labels for quick replies (inline keyboard) | |
| message | Yes | The question or message to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and covers key behavior: sends via Telegram, waits for user response, supports optional inline buttons, and adds the explicit 10-minute timeout. It does not state what happens after a timeout, but the core behavior is transparent.
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?
Three tight sentences with no filler; the main verb and behavior are front-loaded, optionality is stated, and the timeout is appended as an important constraint.
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 2-parameter tool, this is mostly complete: it covers message, optional buttons, transport, and timeout. The main missing piece is what happens after timeout or what the returned response looks like, especially since no output schema exists.
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%, so the baseline is 3. The description adds slight context ('Telegram', 'quick replies') but mostly restates what the schema already says about the message and buttons parameters.
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 names a specific action ('Send a question'), target ('to the user via Telegram'), and key behavior ('wait for their response'). This clearly differentiates it from sibling notify_user, which is for one-way communication.
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 conveys a clear usage context: use when you need an interactive reply from the user, as opposed to sending a one-way notification. However, it does not explicitly mention notify_user or give when-not-to-use guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notify_userA
Send a notification message to the user via Telegram. Does not wait for a response.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The notification message to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the key non-blocking trait ('Does not wait for a response'), which is beyond what the schema shows. It could add delivery failure behavior, but for a simple notify tool the core behavior is transparent.
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 short, purposeful sentences. The action and channel are front-loaded, and the distinguishing behavior is stated compactly. No unnecessary words.
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 covers the purpose, channel, and behavioral caveat. It is nearly complete; only explicit routing to ask_user is missing, but that gap is already accounted for under usage guidelines.
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%, so the parameter is already fully documented in the schema. The description adds no parameter-specific semantics beyond what the schema provides, matching the baseline for high 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 a specific verb ('Send'), names the resource ('notification message'), identifies the channel ('via Telegram'), and adds a behavioral qualifier ('Does not wait for a response') that distinguishes it from the sibling ask_user. An agent can tell exactly what this tool does.
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: use this for fire-and-forget notifications where no reply is expected. However, it never explicitly names the alternative (ask_user) or states when to choose it instead, leaving the when-not-to-use guidance to inference.
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.
2 tool updates
v1.0.0- First observed
ask_user - First observed
notify_user
TDQS
Scored across 2 tools
The two tools are clearly separated by whether they wait for a reply: ask_user requires an answer, notify_user is fire-and-forget. There is no overlap in their intended use.
Both tools follow the same verb_object pattern (ask_user, notify_user), making their behavior predictable and consistent.
With only two tools, the set feels minimal. While it covers the basic interaction modes, two tools is at the lower boundary of what is considered a well-scoped set.
The server covers the two fundamental Telegram interaction patterns (interactive question and one-way notification). Some advanced messaging features like media or message editing are absent, but for the stated purpose the core functions are present.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
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
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA simple MCP server that allows Claude to access your Telegram account to read and send messages on your behalf.7Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables Claude Code to send Telegram notifications when tasks complete, errors occur, or user intervention is needed. Runs serverless on Cloudflare Workers with support for formatted messages and flexible chat targeting.5 npm22MIT
- AlicenseNot gradedqualityDmaintenanceConnects Claude Code sessions to Telegram, enabling AI-powered code assistance and file management directly from Telegram chats.89MIT
- AlicenseAqualityCmaintenanceEnables Claude Code to send and receive messages via Telegram for remote interaction and approval of sensitive operations.86 npm7MIT