Claude Code Telegram Notifier MCP Server
Enables sending formatted proactive status notifications from Claude Code or Claude Desktop to a Telegram chat via a bot, including task start, success milestones, warnings, blockers, and action-required alerts.
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., "@Claude Code Telegram Notifier MCP Serversend a Telegram success update: build finished and tests passed"
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.
Claude Code Telegram Notifier MCP Server š¤š²
A Model Context Protocol (MCP) server that connects Claude Code and Claude Desktop to Telegram. Receive real-time push notifications on your phone or desktop whenever Claude starts long tasks, hits key milestones, encounters blockers, or finishes work ā perfect for when you are away from your keyboard (AFK).
⨠Features
š Proactive Notifications: Claude notifies you automatically about task status without manual intervention.
š¦ Status Types:
infoā¹ļø: Task started, background work initiated.successā : Milestone reached, task completed.warningā ļø: Non-critical issue, retry, or blocker.action_requiredšØ: Human intervention needed (approval, missing API key, confirmation).
š”ļø Resilient Delivery: Automatic fallback to plain text if Markdown entity parsing fails due to unescaped code or paths.
āļø Dual Configuration: Supports both
.envfile and MCP configurationenvblock.š Universal Compatibility: Works with Claude Code CLI and Claude Desktop app.
Related MCP server: telegram-mcp-notify
š Prerequisites
Node.js (v18 or higher) & npm
Telegram Bot Token:
Open Telegram and message @BotFather.
Send
/newbotand follow the instructions to create your bot.Copy the API token provided.
Telegram User ID:
Message @userinfobot or @rawdatabot to get your numeric Telegram User ID.
š Installation & Setup
1. Clone & Build
git clone git@github.com:hsynj/ClaudeCode-Telegram-MCPTool.git
cd ClaudeCode-Telegram-MCPTool
npm install
npm run build2. Configure Environment
Copy the example environment file and fill in your credentials:
cp .env.example .envEdit .env:
BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
ADMIN_ID=987654321Note: You can also specify these variables directly in your Claude configuration files.
š ļø Configuration with Claude
Option A: Claude Code CLI
Add the server to Claude Code using claude mcp add:
claude mcp add telegram-notifier node /ABSOLUTE_PATH_TO/ClaudeCode-Telegram-MCPTool/dist/index.js -e BOT_TOKEN=YOUR_BOT_TOKEN -e ADMIN_ID=YOUR_ADMIN_IDOr manually configure your MCP settings file (e.g. ~/.claude/mcp.json or project-level .claude/settings.json):
{
"mcpServers": {
"telegram-notifier": {
"command": "node",
"args": [
"/ABSOLUTE_PATH_TO/ClaudeCode-Telegram-MCPTool/dist/index.js"
],
"env": {
"BOT_TOKEN": "YOUR_BOT_TOKEN",
"ADMIN_ID": "YOUR_ADMIN_ID"
}
}
}
}Option B: Claude Desktop App
Edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"telegram-notifier": {
"command": "node",
"args": [
"/ABSOLUTE_PATH_TO/ClaudeCode-Telegram-MCPTool/dist/index.js"
],
"env": {
"BOT_TOKEN": "YOUR_BOT_TOKEN",
"ADMIN_ID": "YOUR_ADMIN_ID"
}
}
}
}š§ Automating Proactive Notifications in Claude Code
To make Claude proactively notify you while working, add a rule to ~/.claude/rules/telegram-notifier.md:
# Telegram Notifier Rule
You MUST proactively use the `send_telegram_update` MCP tool to notify the user in the following situations, without the user explicitly asking:
1. **When starting a multi-step or long-running task:** Let the user know you have started working. Use `status: "info"`.
2. **When reaching significant milestones:** If you've completed a major part of a larger task (e.g. "Finished setting up the database, now moving to API routes"). Use `status: "success"`.
3. **When you encounter a blocker or need human intervention:** If a test fails repeatedly, an API key is missing, or you are stuck and need advice. Use `status: "warning"` or `action_required`.
4. **When you need approval:** If you are about to run a destructive command, modify a critical file, or do something that requires explicit permission. Use `status: "action_required"`.
5. **When the task is completely finished:** Let the user know the work is done and they can review it. Use `status: "success"`.
Assume the user is AFK and relies on Telegram notifications to track progress.š§ MCP Tool Specification
send_telegram_update
Sends a formatted notification to your Telegram chat.
Parameter | Type | Required | Description |
|
| Yes | Name of the project or repository being worked on. |
|
| Yes | Detailed status log, explanation, or required action. |
|
| Yes | One of |
|
| No | Short headline (defaults to |
Message Format Example:
ā
Milestone Completed
š Project: my-web-app
Database migrations applied and all 24 unit tests passed.
Status: successšØāš» Development
# Run in development mode with ts-node
npm run dev
# Compile TypeScript
npm run build
# Start compiled server
npm startš License
This project is licensed under the MIT License.
Available Tools
1 toolsend_telegram_updateA
Send a vital update, progress log, or status notification to the user's Telegram. Use this when starting a long task, when reaching significant milestones, or when you encounter a blocker/need the user to return to the computer to approve an action.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | A short title for the update (e.g. 'Task Started', 'Milestone Reached', 'Approval Needed') | |
| status | Yes | The type of update | |
| message | Yes | The detailed log or message describing current status, what you are doing, or what is needed. | |
| project | Yes | The name of the project you are working on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the meaningful side effect ā an outbound message delivered to the user's external Telegram ā but says nothing about delivery failure, rate limits, whether the call blocks, or what happens if the user is unreachable.
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 sentences, zero waste, with the core action front-loaded and the usage conditions following. Every clause 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 four-parameter notification tool with full schema coverage and no output schema, the description covers purpose and timing adequately. It is slightly short on operational behavior (delivery semantics, failure handling), which is the only meaningful 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?
Schema description coverage is 100%, so all four parameters (including the status enum) are already documented in the schema. The description lists update categories that loosely correspond to the status values but adds no format, length, or constraint guidance beyond the schema, so the baseline of 3 is correct.
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?
States a specific verb ('Send') and resource ('vital update, progress log, or status notification') with the destination ('the user's Telegram'). There are no sibling tools to disambiguate from, and the action is unambiguous to an agent without opening the schema.
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?
Explicitly enumerates trigger conditions: starting a long task, reaching significant milestones, encountering a blocker, or needing the user back at the computer to approve an action. This maps directly onto the 'action_required' status and leaves no inference required about when to call it.
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.
1 tool update
v1.0.0- First observed
send_telegram_update
TDQS
Scored across 1 tool
With only a single tool, there is no possibility of confusion or misselection between tools. The tool's purpose is self-evident and unambiguous.
The lone name send_telegram_update follows a clear verb_noun snake_case convention. With one tool there is no inconsistency to speak of.
A single tool is borderline thin for a server, though the notifier's scope is narrow. One send operation arguably covers the entire purpose, but it leaves little room for nuance.
Sending a notification is the only real operation for a notifier, so the surface covers the domain's core action. Minor gaps exist (e.g. no distinct channels for errors vs. progress), but the stated use cases are handled.
Maintenance
Related MCP Connectors
Human-in-the-loop for AI coding agents ā ask questions, get approvals via Slack.
Turn user requests and support messages into tasks and tell users what shipped, from any AI agent.
Live status and health checks for AI coding providers: Claude, Cursor, Copilot, Codex and more.
Capture feature requests and bug reports from chat into a searchable, AI-categorized backlog.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables Claude Code to pause and ask questions via Slack, and allows running Claude from Slack with project-aware context, supporting a full-process feature development workflow.35MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI coding agents to send structured Telegram notifications for events like questions, plan_ready, final, attention_needed, and error.MIT
- AlicenseAqualityDmaintenanceSends Telegram alerts for Claude Code status updates, including notifications for task completion, user requests, and custom status updates with normal or urgent priority.21MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI coding assistants to ask for human clarification and share thoughts in real-time, creating natural, engaging coding conversations.5 npm3MIT