A powerful Model Context Protocol (MCP) server for seamless Telegram Bot API integration with intelligent message splitting, comprehensive error handling, and NPX support.
- 🔄 Intelligent Message Splitting: Automatically handles Telegram's 4096 character limit while preserving word boundaries and formatting
- 🛡️ Comprehensive Error Handling: Detailed error reporting with context, error codes, and debugging information
-
📦 NPX Support: Run directly with
npx telegram-bot-mcp-server
- no installation required - 🔧 Easy Integration: Simple MCP client configuration for AI assistants
- 📝 Rich API Coverage: Complete Telegram Bot API functionality including messaging, user management, and bot configuration
# Run directly without installation
npx telegram-bot-mcp-server
# Install globally
npm install -g telegram-bot-mcp-server
# Or install locally
npm install telegram-bot-mcp-server
- Node.js 18+: Download here
- Telegram Bot Token: Get one from @BotFather
- Open Telegram and search for @BotFather
- Start a conversation and run:
/newbot
- Follow the prompts to name your bot
- Copy the API token provided
Add this configuration to your MCP client (Claude Desktop, etc.):
{
"mcpServers": {
"telegram_bot": {
"command": "npx",
"args": ["telegram-bot-mcp-server"],
"env": {
"TELEGRAM_BOT_API_TOKEN": "your_bot_token_here"
}
}
}
}
Using global installation:
{
"mcpServers": {
"telegram_bot": {
"command": "telegram-bot-mcp-server",
"env": {
"TELEGRAM_BOT_API_TOKEN": "your_bot_token_here"
}
}
}
}
Using local installation:
{
"mcpServers": {
"telegram_bot": {
"command": "node",
"args": ["./node_modules/.bin/telegram-bot-mcp-server"],
"env": {
"TELEGRAM_BOT_API_TOKEN": "your_bot_token_here"
}
}
}
}
Send text messages with automatic splitting for long content.
- Features: Intelligent message splitting, word boundary preservation
-
Input:
chatId
(string),text
(string) - Auto-splitting: Messages over 4096 characters are automatically split
Send photos with captions, handling long captions automatically.
- Features: Long caption splitting, multiple message support
-
Input:
chatId
(string),media
(string),text
(optional string)
Send a photo with an optional caption.
-
Input:
-
chatId
: Target chat ID or username -
media
: File ID, URL, or uploaded file -
text
(optional): Caption for the photo
-
Ban a user from a group, supergroup, or channel.
-
Input:
-
chatId
: Target chat -
userId
: User to ban
-
Unban a previously banned user from a chat.
-
Input:
-
chatId
: Target chat -
userId
: User to unban
-
Fetch full chat metadata and details.
-
Input:
-
chatId
: Target chat
-
Get the total number of members in a group or channel.
-
Input:
-
chatId
: Target chat
-
Get detailed info about a specific member in a group or channel.
-
Input:
-
chatId
: Target chat -
userId
: Target user
-
Update your bot's short description (shown in the profile and shares).
-
Input:
-
short_description
: New short description (max 120 chars)
-
Fetch the current short description of the bot.
Set the list of commands that appear in the Telegram UI.
-
Input:
-
commands
: Array of{ command, description }
-
Get the current list of commands configured for the bot.
Update the name of the bot.
-
Input:
-
name
: New bot name
-
Retrieve the current name of the bot.
Update the full description of the bot (shown in empty chats).
-
Input:
-
description
: New bot description (max 512 chars)
-
Manage chat members with detailed error reporting.
- Features: Ban/unban users, comprehensive error handling
-
Input:
chatId
(string),userId
(number)
Retrieve detailed chat and member information.
- Features: Complete chat data, member details, member counts
-
Input:
chatId
(string),userId
(number, for member info)
Test bot authentication and retrieve bot information.
- Features: Authentication validation, bot details
- Input: None required
Configure and retrieve bot name.
-
Input:
name
(string, 0-64 characters)
Configure and retrieve bot description.
-
Input:
description
(string, 0-512 characters)
Configure and retrieve bot short description.
-
Input:
short_description
(string, 0-120 characters)
Configure and retrieve bot commands.
-
Input:
commands
(array of command objects)
- Automatic Detection: Detects when messages exceed 4096 characters
- Smart Splitting: Preserves word boundaries and formatting
- Sequential Delivery: Sends parts in order with part indicators
- Photo Captions: Handles long photo captions by splitting across messages
- Detailed Errors: Includes error codes, descriptions, and context
- Telegram API Errors: Captures and formats Telegram-specific errors
- Network Issues: Handles connection and timeout errors
- Debug Information: Comprehensive logging for troubleshooting
-
Zero Installation: Run directly with
npx telegram-bot-mcp-server
- CLI Interface: Built-in help and version commands
- Environment Validation: Checks for required bot token
- Cross-Platform: Works on Windows, macOS, and Linux
❌ Error: Missing Telegram Bot Token
Solution: Set the TELEGRAM_BOT_API_TOKEN
environment variable:
export TELEGRAM_BOT_API_TOKEN="your_token_here"
npx telegram-bot-mcp-server
This has been replaced with detailed error messages. Update to the latest version for better error reporting.
Solution: Ensure Node.js 18+ is installed:
node --version # Should be 18.0.0 or higher
npm --version # Should be included with Node.js
Solution: On Unix systems, you may need to use sudo
for global installation:
sudo npm install -g telegram-bot-mcp-server
Set NODE_ENV=development
for additional debug information:
NODE_ENV=development npx telegram-bot-mcp-server
// Through MCP client
await sendMessage({
chatId: "@username",
text: "Hello! This is a test message."
});
// Messages over 4096 characters are automatically split
await sendMessage({
chatId: "123456789",
text: "Very long message content..." // Will be split automatically
});
await sendPhoto({
chatId: "123456789",
media: "https://example.com/photo.jpg",
text: "Very long caption..." // Will be split if needed
});
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes
- Add tests if applicable
- Commit your changes:
git commit -am 'Add feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Telegram API Docs: Official Documentation
- MCP Protocol: Model Context Protocol
If you find this project helpful, consider supporting the developer: