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
Server Terkait
CData Twilio
A read-only MCP server for querying live Twilio data, powered by the CData JDBC Driver.
Qiye Wechat MCP
Enables AI assistants to send messages to Enterprise WeChat (Qiye Wechat) groups via webhooks.
LINE Bot MCP Server
Connects an AI agent to a LINE Official Account using the LINE Messaging API.
Ntfy
An ntfy MCP server for sending/fetching ntfy notifications to your self-hosted ntfy server from AI Agents 📤 (supports secure token auth & more - use with npx or docker!)
aiogram-mcp
MCP server for Telegram bots built with aiogram. 30 tools, 7 resources, 3 prompts — messaging, rich media, moderation, interactive keyboards, real-time event streaming, rate limiting, permissions, and audit logging.
Mailtrap
Integrates with Mailtrap Email API.
Infobip MCP servers
Enables seamless integration with communication platform that allows you to reach your customers globally across any channel.
VoidMob MCP
Mobile proxies, SMS verifications, and global eSIM data plans for AI agents and MCP clients.
Speech MCP Server
A text-to-speech server using the Kokoro TTS model, configurable via environment variables.
Fastmail MCP Server
Integrate your Fastmail account with AI assistants using the Model Context Protocol.