# telegram-mcp
A Model Context Protocol (MCP) server for interacting with Telegram using mtcute.
## Features
- Send text messages to chats
- Wait for incoming messages in specific chats
- Read messages from chats
- Search messages
- List and get information about dialogs (chats)
- Get recent messages across all chats
## Setup
### Installation
#### Option 1: Download Pre-built Binary
Download the latest release for your platform from the [releases page](https://github.com/zhigang1992/telegram-mcp/releases):
- **macOS (Apple Silicon)**: `telegram-mcp-darwin-arm64.tar.gz`
- **macOS (Intel)**: `telegram-mcp-darwin-x64.tar.gz`
- **Linux**: `telegram-mcp-linux-x64.tar.gz`
- **Windows**: `telegram-mcp-win-x64.exe.zip`
Extract the archive and make the binary executable (Unix systems):
```bash
tar -xzf telegram-mcp-*.tar.gz
chmod +x telegram-mcp
```
#### Option 2: Build from Source
1. Clone the repository and install dependencies:
```bash
git clone git@github.com:zhigang1992/telegram-mcp.git
cd telegram-mcp
bun install
```
2. Build the executable:
```bash
bun run build
```
### Initial Setup (First Time Only)
1. Get your Telegram API credentials from https://my.telegram.org
2. Run the initial setup to authenticate with Telegram:
```bash
export API_ID=your_api_id
export API_HASH=your_api_hash
./telegram-mcp
```
The server will:
- Prompt you to enter your phone number
- Send you a verification code via Telegram
- Ask for the verification code
- Display the absolute storage path (you'll need this for MCP configuration)
3. Note the storage path displayed in the output. It will look something like:
```
Storage path: /Users/username/telegram-mcp/bot-data/session
```
## Usage
### As an MCP Server
Add to your Claude Desktop config using the storage path from the initial setup:
```json
{
"mcpServers": {
"telegram": {
"command": "/path/to/telegram-mcp",
"env": {
"API_ID": "your_api_id",
"API_HASH": "your_api_hash",
"TELEGRAM_STORAGE_PATH": "/absolute/path/from/initial/setup"
}
}
}
}
```
**Important**: The `TELEGRAM_STORAGE_PATH` must be the absolute path shown during initial setup. This ensures the MCP server uses the authenticated session.
### Available Tools
#### Message Tools
- `messages_sendText` - Send a text message to a chat
- `chatId` (required): Chat/User ID or username
- `text` (required): Message text to send
- `replyToMessageId`: Optional message ID to reply to
- `messages_getHistory` - Get message history from a chat
- `chatId` (required): Chat/User ID or username
- `limit`: Number of messages (default: 100, max: 100)
- `offsetId`: Message ID for pagination
- `messages_search` - Search for messages
- `query` (required): Search query
- `chatId`: Specific chat to search in (optional)
- `limit`: Number of results (default: 50)
- `messages_getRecent` - Get recent messages from all chats
- `limit`: Number of chats (default: 10)
- `messagesPerChat`: Messages per chat (default: 10)
#### Interactive Tools
- `wait_for_reply` - Wait for the next message in a chat
- `chatId` (required): Chat/User ID or username to wait for a message from
- `timeoutSeconds`: Timeout in seconds (default: 60, max: 300)
#### Dialog Tools
- `dialogs_list` - List all dialogs
- `limit`: Maximum dialogs (default: 50)
- `filter`: Filter options (onlyUsers, onlyGroups, onlyChannels)
- `dialogs_getInfo` - Get detailed dialog information
- `chatId` (required): Chat/User ID or username
## Development
Run in development mode:
```bash
bun run dev
```
The server stores session data in `bot-data/` directory.