bmwdroch/telegram-mcp-server
3.2
If you are the rightful owner of telegram-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP server for integrating AI agents with Telegram, enabling synchronous message exchange.
Tools
1
Resources
0
Prompts
0
Telegram MCP Server
MCP сервер для интеграции AI-агентов с Telegram. Позволяет отправлять сообщения пользователю и получать ответы в синхронном режиме.
Особенности
- Интеграция с AI-агентами через протокол MCP
- Отправка сообщений в Telegram
- Ожидание ответа пользователя с настраиваемым таймаутом
- Синхронный режим работы (агент ждет ответа пользователя)
- Безопасное хранение токенов через переменные окружения
- Готовый Docker-контейнер для простого развертывания
Быстрый старт
Предварительные требования
- Создайте Telegram бота через @BotFather и получите токен
- Получите ID вашего чата через @userinfobot
- Установите Docker
Варианты использования
Вариант 1: Использование в сервисах с поддержкой MCP (Cursor, WindSurf, Anthropic, VSCode с расширениями)
- Добавьте следующую конфигурацию в ваш файл
mcp_config.json
:
{
"mcpServers": {
"telegram-docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "TELEGRAM_BOT_TOKEN=your_bot_token_here",
"-e", "TELEGRAM_CHAT_ID=your_chat_id_here",
"bmwdroch/telegram-mcp-server:latest"
]
}
}
}
- Замените
your_bot_token_here
иyour_chat_id_here
на ваши значения - Перезапустите IDE для применения изменений
- Теперь вы можете использовать инструмент
sendMessage
в ваших AI-агентах
Пример использования инструмента в AI-агенте
# Пример вызова инструмента в Cursor, WindSurf, Anthropic или других агентах с поддержкой MCP
result = await mcp4_sendMessage(
agentMessage="Привет! Это тестовое сообщение от AI-агента.",
parseMode="HTML",
timeout=3600 # Таймаут ожидания ответа в секундах (1 час)
)
# Обработка ответа пользователя
user_response = result.get("userResponse")
print(f"Пользователь ответил: {user_response}")
Вариант 2: Запуск контейнера напрямую
# Создайте файл .env с вашими данными
echo "TELEGRAM_BOT_TOKEN=your_bot_token_here" > .env
echo "TELEGRAM_CHAT_ID=your_chat_id_here" >> .env
# Запустите контейнер
docker run -i --rm --env-file .env bmwdroch/telegram-mcp-server:latest
Вариант 2: Сборка из исходного кода
# Клонируйте репозиторий
git clone https://github.com/username/telegram-mcp-server.git
cd telegram-mcp-server
# Создайте файл .env с вашими данными
echo "TELEGRAM_BOT_TOKEN=your_bot_token_here" > .env
echo "TELEGRAM_CHAT_ID=your_chat_id_here" >> .env
# Соберите и запустите через Docker Compose
docker-compose up --build
Подключение к Cursor/Cline
Добавьте в файл конфигурации MCP серверов (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"telegram": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/path/to/.env",
"username/telegram-mcp-server:latest"
]
}
}
}
Или с прямым указанием переменных окружения:
{
"mcpServers": {
"telegram": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"username/telegram-mcp-server:latest"
],
"env": {
"TELEGRAM_BOT_TOKEN": "your_bot_token_here",
"TELEGRAM_CHAT_ID": "your_chat_id_here"
}
}
}
}
Доступные инструменты
sendMessage
Отправляет сообщение пользователю в Telegram и ожидает ответа.
Параметры:
agentMessage
(обязательный) - сообщение от агента для пользователяtimeout
(опциональный) - таймаут ожидания ответа в секундах (от 600 до 3600 секунд)parseMode
(опциональный) - режим форматирования сообщения (HTML, Markdown, или null)
Возвращает: JSON-объект со следующими полями:
status
: "success" или "timeout" или "error"userResponse
: текст ответа пользователя (при status="success")error
: описание ошибки (при status="error")timestamp
: время выполнения запроса
Примеры использования
В Python
import json
# В коде агента
response = await call_tool("sendMessage", {
"agentMessage": "Нужно ваше решение: продолжить обработку файла или остановиться?",
"timeout": 600, # 10 минут
"parseMode": "Markdown"
})
user_decision = json.loads(response)
if user_decision["status"] == "success":
print(f"Пользователь ответил: {user_decision['userResponse']}")
elif user_decision["status"] == "timeout":
print("Пользователь не ответил вовремя")
else:
print(f"Ошибка: {user_decision['error']}")