Telegram MCP Server
Enables LLM clients to send messages, read recent messages, and retrieve chat information through the Telegram Bot API.
README
Telegram MCP Server
MCP-сервер для взаимодействия с Telegram через Telegram Bot API. Сервер предоставляет LLM-клиенту набор инструментов для отправки сообщений, чтения последних доступных сообщений и получения информации о чате.
Возможности
Сервер предоставляет три MCP tools:
send_message— отправляет текстовое сообщение в указанный Telegram-чат.get_recent_messages— получает последние доступные сообщения из указанного чата.get_chat_info— возвращает основную информацию о Telegram-чате.
Сервер использует stdio transport, поэтому его можно подключать к MCP Inspector и другим MCP-клиентам без отдельного HTTP-сервера.
Архитектура
MCP client / MCP Inspector
│
│ MCP over stdio
▼
src/server.py
│
▼
src/telegram_client.py
│
│ HTTPS
▼
Telegram Bot API
server.py отвечает за MCP-интерфейс и регистрацию tools.
telegram_client.py инкапсулирует HTTP-взаимодействие с Telegram Bot API.
config.py загружает токен из переменной окружения.
Стек
- Python 3.10+
- MCP Python SDK 2.x
- Telegram Bot API
httpxpython-dotenv
Структура проекта
telegram-mcp/
├── src/
│ ├── __init__.py
│ ├── config.py
│ ├── telegram_client.py
│ └── server.py
├── .env.example
├── .gitignore
├── requirements.txt
└── README.md
Требования
- Python 3.10 или новее
- Telegram-бот, созданный через
@BotFather - Node.js и
npx— только если используется MCP Inspector черезmcp dev
Установка
Клонируйте репозиторий и перейдите в его директорию:
git clone <repository-url>
cd telegram-mcp
Создайте виртуальное окружение:
python3 -m venv .venv
source .venv/bin/activate
Установите зависимости:
pip install -r requirements.txt
Настройка Telegram-бота
- Откройте Telegram и найдите
@BotFather. - Выполните
/newbot. - Создайте бота и получите Bot API token.
- Не добавляйте токен в исходный код или Git.
Создайте файл .env:
cp .env.example .env
Укажите токен:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
.env добавлен в .gitignore.
Подготовка чата
Личный чат
- Откройте созданного бота.
- Нажмите
Startили отправьте ему сообщение. - Для проверки
get_recent_messagesотправьте несколько текстовых сообщений.
Группа
- Создайте тестовую группу.
- Добавьте в неё бота.
- Если бот должен видеть обычные сообщения группы, отключите для него режим приватности через
@BotFather(/setprivacy→Disable). - Отправьте в группу несколько сообщений.
Для получения chat_id удобно сначала вызвать get_chat_info или get_recent_messages после того, как бот получил сообщение из нужного чата.
Запуск
Из корневой директории проекта:
python src/server.py
Сервер работает через stdio и ожидает MCP-соединение. Поэтому отсутствие обычного вывода в терминал после запуска является нормальным поведением.
Для разработки и проверки можно использовать MCP CLI:
mcp dev src/server.py
Команда запускает сервер и MCP Inspector. Inspector использует npx, поэтому Node.js должен быть доступен в PATH.
MCP tools
send_message
Отправляет текстовое сообщение в Telegram.
Параметры:
chat_id: string — ID чата
text: string — текст сообщения
Пример:
chat_id: 123456789
text: Привет! Сообщение отправлено через MCP.
В ответ сервер возвращает подтверждение отправки и message_id.
get_recent_messages
Получает последние доступные сообщения указанного чата.
Параметры:
chat_id: string — ID чата
limit: integer — количество сообщений, по умолчанию 10
limit ограничивается диапазоном от 1 до 100.
Пример:
chat_id: 123456789
limit: 10
Результат содержит отправителя и текст каждого доступного сообщения.
get_chat_info
Получает основную информацию о чате.
Параметры:
chat_id: string — ID чата
В ответе отображаются доступные поля, включая ID, тип, название, username, имя и фамилию.
Как работает получение сообщений
Telegram Bot API не предоставляет боту отдельный метод для чтения произвольной истории чата. Для получения входящих сообщений сервер использует getUpdates.
get_recent_messages запрашивает до 100 последних доступных updates и затем фильтрует их по chat_id. Поэтому инструмент работает с сообщениями, которые Telegram предоставляет боту через очередь updates, а не с полной историей чата.
Это означает, что tool не является заменой Telegram-клиенту с доступом ко всей истории переписки. Для тестирования достаточно отправить сообщения после добавления бота в чат и затем вызвать get_recent_messages.
Важно: getUpdates не используется одновременно с активным webhook. Если для бота настроен webhook, сначала удалите его, чтобы long polling через getUpdates мог получать updates.
Пример сценария
- Запустить MCP Inspector.
- Подключить
src/server.py. - Убедиться, что доступны:
send_messageget_recent_messagesget_chat_info
- Вызвать
get_chat_infoдля проверки подключения к чату. - Вызвать
send_messageи убедиться, что сообщение появилось в Telegram. - Отправить несколько сообщений в Telegram.
- Вызвать
get_recent_messagesи проверить полученный список сообщений.
Безопасность
Telegram Bot API token передаётся только через переменную окружения TELEGRAM_BOT_TOKEN.
Настоящий .env не должен попадать в Git. В репозитории хранится только .env.example без рабочего токена.
Ограничения
- Бот не имеет доступа ко всей истории Telegram-чата через Bot API.
get_recent_messagesработает с доступными bot updates.- В группах набор сообщений, которые бот получает, зависит от настроек приватности Telegram.
getUpdatesи webhook являются взаимоисключающими способами получения updates.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.