Telegram Notifier (Botfather)
Use botfather bot to notify yourself on Telegram.
Telegram Notifier MCP Server
An MCP server that lets an LLM send messages and files to a user via a Telegram bot, and read incoming messages. No external HTTP or Telegram libraries — just the native fetch API and the official MCP SDK.
Quick Start
No cloning or building required — just add the config to your MCP client.
1. Create a Telegram Bot
- Open Telegram and message @BotFather
- Send
/newbotand follow the prompts to name your bot - Copy the bot token you receive (e.g.,
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
2. Find Your Chat ID
- Send any message to your new bot on Telegram
- Open the following URL in your browser, replacing
YOUR_BOT_TOKENwith your actual token:https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates - In the JSON response, find
"chat":{"id": 123456789}— that number is your chat ID
Tip: For group chats, add the bot to the group, send a message, and check the same URL. Group chat IDs are negative numbers (e.g.,
-1001234567890).
3. Add to Your MCP Client
Claude Desktop
Add this to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"telegram-notifier": {
"command": "npx",
"args": ["telegram-notifier-mcp"],
"env": {
"TELEGRAM_BOT_TOKEN": "your-bot-token-here",
"TELEGRAM_CHAT_ID": "your-chat-id-here"
}
}
}
}
Claude Code
Add to your project's .mcp.json or ~/.claude.json:
{
"mcpServers": {
"telegram-notifier": {
"command": "npx",
"args": ["telegram-notifier-mcp"],
"env": {
"TELEGRAM_BOT_TOKEN": "your-bot-token-here",
"TELEGRAM_CHAT_ID": "your-chat-id-here"
}
}
}
}
Codex CLI
You can configure Codex CLI in either of these ways:
Option A: Add it manually in ~/.codex/config.toml
[mcp_servers.telegram-notifier]
command = "npx"
args = ["telegram-notifier-mcp"]
[mcp_servers.telegram-notifier.env]
TELEGRAM_BOT_TOKEN = "your-bot-token-here"
TELEGRAM_CHAT_ID = "your-chat-id-here"
Option B: Add it with a CLI command
codex mcp add telegram-notifier \
--env TELEGRAM_BOT_TOKEN=your-bot-token-here \
--env TELEGRAM_CHAT_ID=your-chat-id-here \
-- npx telegram-notifier-mcp
That's it — your LLM can now send you Telegram notifications.
Configuration
The server uses two environment variables:
| Variable | Required | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN | Yes | Bot token from @BotFather |
TELEGRAM_CHAT_ID | No | Default chat ID. Can be overridden per-tool call via the chatId parameter. |
The server will exit with an error if TELEGRAM_BOT_TOKEN is not set. If TELEGRAM_CHAT_ID is not set, you must pass chatId to every tool call.
Tools
send_message
Send a text message to a Telegram chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The message text to send |
chatId | string | No | Target chat ID (overrides TELEGRAM_CHAT_ID) |
parseMode | string | No | Markdown, MarkdownV2, or HTML |
disableNotification | boolean | No | Send silently without notification sound |
send_document
Send a file/document to a Telegram chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Absolute path to the file |
chatId | string | No | Target chat ID (overrides TELEGRAM_CHAT_ID) |
caption | string | No | Caption for the document |
parseMode | string | No | Markdown, MarkdownV2, or HTML |
disableNotification | boolean | No | Send silently without notification sound |
send_photo
Send a photo/image to a Telegram chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Absolute path to the image file |
chatId | string | No | Target chat ID (overrides TELEGRAM_CHAT_ID) |
caption | string | No | Caption for the photo |
parseMode | string | No | Markdown, MarkdownV2, or HTML |
disableNotification | boolean | No | Send silently without notification sound |
send_video
Send a video to a Telegram chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Absolute path to the video file |
chatId | string | No | Target chat ID (overrides TELEGRAM_CHAT_ID) |
caption | string | No | Caption for the video |
parseMode | string | No | Markdown, MarkdownV2, or HTML |
disableNotification | boolean | No | Send silently without notification sound |
send_audio
Send an audio file to a Telegram chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Absolute path to the audio file |
chatId | string | No | Target chat ID (overrides TELEGRAM_CHAT_ID) |
caption | string | No | Caption for the audio |
parseMode | string | No | Markdown, MarkdownV2, or HTML |
disableNotification | boolean | No | Send silently without notification sound |
get_updates
Check for new messages sent to the bot. Only returns messages received since the last check.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Max messages to retrieve (1-100, default 10) |
timeout | number | No | Long-polling timeout in seconds (0-30, default 0). Set >0 to wait for new messages. |
File Downloads
When a message contains media (photo, document, video, audio, voice message, or sticker), the server automatically downloads the file to ~/.telegram-notifier-mcp/downloads/ and includes the local path in the output. This lets the LLM read or process the file directly.
- Files are saved as
<timestamp>-<original_filename>to avoid collisions - Photos are downloaded at the highest available resolution
- Telegram Bot API limits downloads to 20 MB
- If a download fails, the output falls back to just labeling the media type
Testing with the MCP Inspector
You can test the server interactively using the MCP Inspector:
TELEGRAM_BOT_TOKEN="your-token" TELEGRAM_CHAT_ID="your-chat-id" \
npx @modelcontextprotocol/inspector npx telegram-notifier-mcp
This opens a browser UI where you can invoke each tool and see the results.
Error Handling
The server handles errors gracefully and returns descriptive messages:
| Scenario | Behavior |
|---|---|
Missing TELEGRAM_BOT_TOKEN | Server exits at startup with instructions |
| Missing chat ID (no env var, no parameter) | Returns isError: true with message |
| File not found | Returns isError: true with the file path |
| File exceeds 50 MB | Returns isError: true with file size |
| Telegram API error | Returns isError: true with Telegram's error description |
All server logs go to stderr so they never interfere with the stdio MCP transport on stdout.
File Size Limits
Telegram enforces a 50 MB limit for file uploads via the Bot API. The server validates file size before uploading and returns an error if the limit is exceeded.
Development
git clone https://github.com/AdeshAtole/telegram-notifier-mcp
cd telegram-notifier-mcp
npm install
npm run build
# Watch mode — rebuilds on file changes
npm run dev
Publishing
Releases are published to npm automatically via GitHub Actions when you create a GitHub release.
Setup:
- Add your npm token as a repository secret named
NPM_TOKENin GitHub Settings > Secrets and variables > Actions - Bump the version in
package.json - Create a new GitHub release — the workflow will build and publish to npm
License
MIT
Serveurs connexes
chakoshi MCP Server
A bridge server connecting Claude Desktop with the chakoshi moderation API for content safety.
WebRTC MCP Chat Server
A remote WebRTC chat server with secure temporary rooms and MCP support for background agents.
LINE Bot MCP Server
Connects an AI agent to a LINE Official Account using the LINE Messaging API.
Twitter NoAuth
Provides Twitter API access without requiring local credential setup. Credentials must be provided at runtime.
ChatSum
Summarize chat messages from a local database file.
Phone-a-Friend MCP Server
An AI-to-AI consultation system for complex problem-solving and reasoning, using OpenRouter for model access.
Mailinator MCP Server
Free disposable email for AI—check any @mailinator.com inbox, retrieve messages in multiple formats, and extract verification codes for automated workflows.
DingTalk
A server for interacting with DingTalk workspaces using the Model Context Protocol.
PubNub
Access PubNub SDK documentation and API resources for real-time communication applications.
RabbitMQ MCP Go
A Go-based MCP server for integrating with the RabbitMQ message broker.