tg-assistant
MCP server that connects Claude to a Telegram personal assistant, enabling message processing, task management, and responses via scheduled workflows.
README
Личный ассистент в Telegram на Claude
Пишешь боту в Telegram → Claude раз в 15 минут разбирает входящие, отвечает и запоминает.
Ставится из браузера за 30 минут. Терминал, Node и Git не нужны.
Как это работает
Telegram ──POST──▶ /api/telegram ──▶ Supabase.inbox (status = new)
│
каждые 15 мин, по расписанию
▼
Claude (Cowork)
│ через MCP-коннектор
▼
/api/mcp/<секрет> ──▶ Supabase.items
│ (память)
▼
sendMessage ──▶ Telegram
Сервер не думает. Он только принимает сообщения, хранит их и умеет писать в Telegram. Всё мышление — на стороне Claude, по расписанию. Поэтому нет ни одного платного API-ключа модели.
Что нужно
| Сервис | План | Зачем |
|---|---|---|
| Telegram | бесплатно | сам бот |
| Supabase | Free | база: входящие + память |
| GitHub | Free | копия этого репозитория |
| Vercel | Hobby | хостинг вебхука и MCP |
| Claude Pro или Max | платно | Cowork + расписание + коннекторы |
Установка
1. Бот в Telegram
Открой @BotFather → /newbot → имя → username (обязан кончаться на bot).
Скопируй токен вида 8123456789:AAH... — это TELEGRAM_BOT_TOKEN.
2. База в Supabase
supabase.com → New project (регион — Frankfurt) → придумай пароль, запиши его. Пока проект поднимается (~2 мин), возьми ключи в Project Settings → API:
Project URL→ этоSUPABASE_URLservice_role(нажми Reveal) → этоSUPABASE_SERVICE_ROLE_KEY
Затем SQL Editor → New query → вставь целиком файл schema.sql → Run.
service_roleобходит все ограничения доступа. Он живёт только в переменных Vercel. В браузер, в чат и в скриншоты — никогда.
3. Деплой на Vercel
Нажми кнопку Deploy выше. Vercel попросит:
- подключить GitHub (Create Git Repository) — репозиторий скопируется тебе;
- заполнить 4 переменные (см. таблицу ниже).
Через ~40 секунд получишь адрес вида https://my-assistant-xxxx.vercel.app.
4. Самонастройка
Открой в браузере:
https://ТВОЙ-АДРЕС.vercel.app/api/setup?secret=ТВОЙ_APP_SECRET
Страница сама проверит ключи, проверит базу, зарегистрирует webhook в Telegram и выдаст готовый MCP-адрес для Claude.
5. Коннектор в Claude
Claude → Settings → Connectors → Add custom connector.
Имя: assistant. URL: тот, что выдала страница настройки.
Проверь в чате: «покажи мои новые сообщения» — Claude должен дёрнуть get_new_messages.
6. Расписание
В Cowork напиши /schedule и вставь промт из PROMPTS.md.
Раз в 15 минут — */15 * * * *.
Переменные окружения
| Переменная | Откуда |
|---|---|
TELEGRAM_BOT_TOKEN |
@BotFather, шаг 1 |
APP_SECRET |
придумай сам: 20+ случайных символов, латиница и цифры |
SUPABASE_URL |
Supabase → Project Settings → API → Project URL |
SUPABASE_SERVICE_ROLE_KEY |
там же → service_role → Reveal |
APP_SECRET служит двум целям сразу: им подписан webhook Telegram и им закрыт MCP-эндпоинт.
Кто знает секрет — управляет ботом. Меняется в Vercel → Settings → Environment Variables → Redeploy,
после чего надо заново открыть /api/setup и обновить URL коннектора.
Что умеет ассистент
Инструменты, которые видит Claude:
| Инструмент | Что делает |
|---|---|
get_new_messages |
забрать необработанные сообщения |
mark_message_done |
закрыть сообщение (иначе обработает повторно) |
send_telegram |
написать в Telegram |
save_item |
сохранить task / reminder / idea / note |
list_items |
найти в памяти по типу, статусу, подстроке |
complete_item |
закрыть задачу |
Если что-то не работает
| Симптом | Причина |
|---|---|
/api/setup — красное про Supabase |
не прогнал schema.sql, либо неверный URL/ключ |
/api/setup — красное про Telegram |
опечатка в токене бота |
| Бот молчит на сообщение | не открыл /api/setup, webhook не зарегистрирован |
| Claude не видит инструменты | опечатка в MCP-URL; секрет в адресе должен совпадать с APP_SECRET |
| Claude отвечает дважды | пропущен mark_message_done — поправь промт расписания |
| Всё умерло через неделю | Supabase Free ставит проект на паузу после 7 дней тишины. Разбуди в дашборде |
Диагностический промт — в PROMPTS.md, раздел «Спасатель».
Куда расти
- Голос. Ловить
msg.voiceв webhook, гнать file_id в распознавание, класть текст в тот жеinbox. - Проактивность. Отдельное расписание в 8:00:
list_items(kind=reminder, status=open)→ сводка дня. - Кто угодно не напишет. Проверять
msg.from.idпротив своего Telegram ID вapi/telegram.ts. - Векторный поиск.
pgvectorв Supabase поверхitems— семантический поиск вместоilike.
Лицензия
MIT. Форкай, ломай, переделывай под себя.
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.
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.
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.
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.