tg-assistant

tg-assistant

MCP server that connects Claude to a Telegram personal assistant, enabling message processing, task management, and responses via scheduled workflows.

Category
Visit Server

README

Личный ассистент в Telegram на Claude

Пишешь боту в Telegram → Claude раз в 15 минут разбирает входящие, отвечает и запоминает.

Ставится из браузера за 30 минут. Терминал, Node и Git не нужны.

Deploy with Vercel


Как это работает

  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_URL
  • service_role (нажми Reveal) → это SUPABASE_SERVICE_ROLE_KEY

Затем SQL Editor → New query → вставь целиком файл schema.sqlRun.

service_role обходит все ограничения доступа. Он живёт только в переменных Vercel. В браузер, в чат и в скриншоты — никогда.

3. Деплой на Vercel

Нажми кнопку Deploy выше. Vercel попросит:

  1. подключить GitHub (Create Git Repository) — репозиторий скопируется тебе;
  2. заполнить 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured