TelegramMCP
TelegramMCP
Сервер с протоколом MCP — единственный инструмент: отправляет в Telegram название проекта и статус завершения. Работает в двух вариантах транспорта: StreamableHTTP (FastAPI) и stdio (stdin/stdout).
Возможности
🚀 MCP-сервер с инструментом
notify_task_done(project_name, status)📡 StreamableHTTP транспорт — FastAPI-сервер на порту 8000
💬 Stdio транспорт — stdin/stdout для MCP-клиентов
📱 Отправка уведомлений в Telegram (через
python-telegram-bot)🌐 Прокси SOCKS5 (по умолчанию
socks5://192.168.0.250:2081)🧪 Unit-тесты (mock, без сети)
Требования
Python 3.11+
Windows 10/11 (PowerShell 5.1)
Установка
# Создание виртуального окружения
python -m venv venv
# Установка зависимостей (используем прямой вызов python)
.\venv\Scripts\python.exe -m pip install --upgrade pip
.\venv\Scripts\python.exe -m pip install -r requirements.txt
# Настройка переменных окружения
copy .env.example .env
# Отредактируйте .env: BOT_TOKEN, TG_CHAT_ID и т.д.Запуск
HTTP (StreamableHTTP)
# Запуск HTTP-сервера (двойной вызов, без активации venv)
.\venv\Scripts\python.exe main.pyИли через батник:
.\run_server.batСервер запустится на 127.0.0.1:8000, MCP-эндпоинт доступен на /mcp.
Stdio
# Запуск MCP-сервера через stdin/stdout
.\venv\Scripts\python.exe mcp_stdio.pyПодключение MCP-клиента
Ниже примеры конфигурации для подключения MCP-клиента (Claude Desktop, opencode, VS Code и т.д.) к каждому транспорту.
Конфиг для HTTP (StreamableHTTP)
{
"mcpServers": {
"telegram": {
"type": "streamableHttp",
"url": "http://127.0.0.1:8000/mcp"
}
}
}Конфиг для STDIO
{
"mcpServers": {
"telegram": {
"type": "stdio",
"command": ".\\venv\\Scripts\\python.exe",
"args": ["mcp_stdio.py"],
"cwd": "<путь к корню проекта, например C:\\Projects\\TelegramMCP>"
}
}
}
cwdможно опустить —mcp_stdio.pyсам добавляет свою директорию вsys.path, поэтому сервер запустится из любого рабочего каталога. Путь кpython.exeдолжен быть абсолютным или указываться относительноcwd.
Переменные окружения (.env)
Переменная | Описание | По умолчанию |
| Токен Telegram-бота |
|
| ID чата для уведомлений |
|
| URL SOCKS5-прокси |
|
| Логин прокси (пусто = без auth) |
|
| Пароль прокси |
|
| Адрес привязки |
|
| Порт сервера |
|
| Уровень логов |
|
Использование MCP-инструмента
Сервер предоставляет один инструмент MCP:
notify_task_done(project_name: str, status: str, message: str?)Проект поддерживает два транспорта — оба используют одинаковую логику (app/server.py):
Транспорт | Запуск | MCP-эндпоинт |
StreamableHTTP |
|
|
stdio |
| stdin / stdout |
Вызов инструмента через HTTP
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "notify_task_done",
"arguments": {
"project_name": "MyProject",
"status": "completed",
"message": "All green"
}
}
}Вызов инструмента через stdio
MCP-клиент (например, Claude Desktop, VS Code) подключается к mcp_stdio.py напрямую через stdio. Сами JSON-RPC-сообщения передаются клиентом автоматически.
В Telegram будет отправлено сообщение: Задача "MyProject": completed
Тестирование
.\venv\Scripts\python.exe -m pytest tests/ -vВсе тесты используют mock — реальная сеть не используется.
Подробности см. в tests/TEST_GUIDE.md.