relic
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@relicsearch my Telegram chats for messages about relic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
relic
Чип, через який чужа свідомість бачить твоє життя, — і лише ту його частину, яку ти відкрив. Назва — з Cyberpunk 2077.
Шлюз від продуктів до соцмереж і месенджерів: ключ продукту, область дії, облік, бюджет відповіді. REST для продуктів і MCP для моделей — на одному порту, з одними ключами.
продукт ──(ключ продукту)──▶ relic ──▶ адаптер ──▶ інструмент ──▶ платформа
модель (MCP) ────────────┘ telegram-archive → Telegram-Archive → Telegram
youtube → Data API v3, yt-dlp → YouTubeДвійник exo-ai (шлюз до моделей) за механікою і незалежний від нього: шлюзи один про одного не знають. Самарі, аналіз і відповіді робить продукт: текст звідси → промпт → exo-ai.
Навіщо сервіс, а не бібліотека
Сесія особистого акаунта — одна. Два процеси на одній сесії ламають її, кожен новий вхід — «новий пристрій», часті входи — шлях до бану. Сесія живе в одному місці, продукти просять дані.
Політику не можна доручити тому, кого вона обмежує. «Продукт A бачить лише ці три чати» тримається тільки на боці сервера.
Стелі частоти — спільні: FloodWait і ліміти API рахуються на акаунт.
Адаптер — на інструмент, не на платформу. Важка робота лишається в готовому інструменті (архіватор, міст, офіційний API), адаптер лише перекладає.
Related MCP server: Telegram MCP Server
Контракт
Authorization: Bearer <ключ продукту> (або X-Api-Key). Ключ називає
продукт — це ім'я шукається в області й пишеться в облік.
MCP-інструмент | REST-двійник |
|
|
|
|
|
|
|
|
|
|
Ще: GET /v1/adapters (стан входу кожного адаптера з причиною і limited), GET /v1/scope
(своя область), GET /v1/usage (виклики за добу), /health/live,
/health/ready (обидва без ключа). MCP — POST /mcp, Streamable HTTP,
stateless, відповідь JSON.
Спільна форма даних — одна на всі адаптери:
сутність | поля |
розмова |
|
повідомлення |
|
сегмент транскрипту |
|
код | що це | що робити продуктові |
200 | відповідь є | читати; |
404 | розмови немає або вона поза областю ключа — невідрізненно | брати ref з |
429 | денна стеля продукту | деградувати, сьогодні не повторювати |
429 | стеля частоти платформи (у YouTube — і вичерпана квота Data API) | повторити пізніше |
502 | платформа відмовляє саме серверу (бот-перевірка YouTube для IP датацентру) | не повторювати; вхід цілий |
503 | вхід адаптера відхилено | людина: перелогінити інструмент |
503 | інструмент або БД недосяжні | fail-safe продукту |
Область дії
Рядки social_scope: (продукт, адаптер, акаунт, розмови, read|write).
Розмови — список ref або {*} = «усе, що бачить акаунт адаптера». Новий
продукт — порожня область, а не «усе». Запис — окремий рядок write; поки
його немає, інструментів запису немає в tools/list (у цій версії їх немає
взагалі). Недоступна БД — відмова (fail-closed); облік і стелі — fail-open.
Два рівні білого списку свідомо: акаунт інструмента (наприклад, акаунт переглядача архіву з білим списком чатів) — що шлюзу взагалі видно; область ключа — що з цього видно конкретному продукту.
Бюджет відповіді
Кожна відповідь — не більше MAX_ITEMS (100) елементів і MAX_RESPONSE_BYTES
(32 КБ ≈ 8–10 тис. токенів) компактного JSON. Обрізана каже truncated,
пояснює note і, де є куди гортати, дає непрозорий курсор next. Перше
повідомлення не випадає, а вкорочується (cut) — порожня сторінка не дала б
курсора. Перенесення internal/budget з форку
telegram-archive-mcp, тести —
ті самі межі. Заміряно на чаті в 10 тис. повідомлень: 3,3 тис. токенів замість 75 тис.
Здоров'я бачить вхід адаптера
/health/ready несе checks.<адаптер>: ok / expired / down (і skip —
вхід вимкнений конфігом свідомо, як youtube без ключа). expired чи
down увімкненого адаптера — 503 проби: протухлий вхід — це «шлюз
непридатний», і монітор мусить це бачити, а не дізнатись з обліку. Стеля
частоти платформи (FloodWait, 429, вичерпана квота) і відмова платформи серверу
(бот-перевірка) — не вирок, лише limited з причиною у /v1/adapters.
Проба ходить за розкладом (ADAPTER_PROBE_INTERVAL_MS), а не на кожен запит
монітора: відхилений вхід — теж спроба, а стелі входів у інструментів тісні.
Адаптери
адаптер | інструмент | вхід |
| HTTP API переглядача Telegram-Archive | окремий акаунт переглядача з |
| YouTube Data API v3 (коментарі, назви) і yt-dlp (транскрипти) | входу в акаунт немає, акаунт один — |
youtube
Розмова = відео:
youtube:public:<id>,type: video,name— назва. Ref будує викликач: на місці id можна дати й посилання (watch?v=,youtu.be/,shorts/,live/,embed/) — шлюз зводить його до id до області й обліку.list_chatsвідео не показує: відео — не список розмов акаунта. Окремогоresolveнемає: розбір рядка не вартий ще одного інструмента.Повідомлення = коментарі (
commentThreads): гілка, за нею відповіді, які Data API віддає разом із нею (reply_to— батьківський коментар); новіші гілки першими. Курсор несеpageTokenі останній відданий коментар — сторінку, обрізану бюджетом посередині, продовжує без повторів.get_messages_by_date— коментарі дня (обхід до 20 сторінок);search_messages—searchTerms.Транскрипт — окремий інструмент
get_transcript, бо мовлення не «повідомлення»: ні автора, ні id. Субтитри автора мовою відео, інакше розпізнане YouTube (source: manual | auto);language— інша мова. Сторінки гортаються з кешу (година), yt-dlp — один запуск на відео.Квота Data API — 10 000 одиниць на добу на проєкт Google; сторінка коментарів = 1. Витрата кожного виклику — у
detailобліку (units=…), проба ключа — 1 одиниця раз наYOUTUBE_PROBE_INTERVAL_MS(10 хв).Запобіжник (
adapters/youtube/guard.ts, стан у Redis): на весь шлюз ≤ 20 запусків yt-dlp на годину і ≤ 100 на добу, проміжок ≥ 10 с, один процес за раз; 429 від YouTube — пауза на годину, 5 бот-перевірок поспіль — на 30 хв; відео з бот-перевіркою не питається вдруге добу; кеш транскрипту — доба; автоперекладу субтитрів немає; власна стеля Data API — 5000 одиниць на добу з 10 000. На паузі чи стелі шлюз відповідає сам (429rate_limitedз причиною), YouTube не питає. Без Redis стан тримається в пам'яті — стелі не знімаються.Бот-перевірка. З IP датацентру YouTube часто просить «Sign in to confirm you're not a bot» — тоді
get_transcript→platform_blocked, а стан адаптера лишаєтьсяokзlimitedі причиною. Ні іншийplayer_client, ні PO-токен цього не знімають (перевірено 2026-09-24); коментарі (Data API) перевірка не зачіпає.
Інтерфейс — src/adapters/types.ts (як Publisher в exopost: probe ≈
verify, AdapterError.retryable, реєстр за іменем).
stdio-вхід MCP
dist/mcp-stdio.js — міст stdin/stdout ↔ http://127.0.0.1:$PORT/mcp того
самого контейнера з ключем продукту STDIO_PRODUCT з оточення. Для клієнта,
що бачить контейнер лише через docker exec:
claude mcp add relic -s user -- docker exec -i relic-web node dist/mcp-stdio.jsПолітика лишається на сервері: область, стеля, бюджет і облік — ті самі.
Розробка
pnpm install && pnpm test && pnpm typecheckВорота (typecheck + test) — у стадії build образу. Міграції — dbmate
(apps/api/db/migrations), бінарник у образі. yt-dlp — запінений реліз з
перевіркою sha256 (ADD --checksum у Dockerfile); тести підміняють його
справжнім процесом-скриптом.
Ліцензія
MIT — LICENSE. Бюджет відповіді — перенесення нашого ж доповнення до форку
telegram-archive-mcp
(сам форк лишається під GPL-3.0 апстріму, і його код сюди не переноситься:
обхід дня в адаптері — власна реалізація). Інструмент під адаптером —
Telegram-Archive, з ним relic
говорить лише по HTTP. yt-dlp (Unlicense) — окремий бінарник в образі, relic
запускає його процесом.
This server cannot be deployed
Maintenance
Related MCP Connectors
Your personal data for AI — Telegram, bank, courses, Zoom & more, scoped to you.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
- EngramOAuthapp.getengram
Persistent, verbatim, searchable memory for AI assistants — one memory across every MCP client.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables full access to your personal Telegram account via MCP, allowing reading, sending, and searching messages, managing chats, and retrieving user information through natural language commands.1829 npm4MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control a personal Telegram account for sending/reading messages, media, group management, and more via the MTProto API.MIT
- AlicenseAqualityAmaintenanceEnables MCP-compatible clients to securely access and manage Telegram accounts, chats, messages, media, and contacts, with tiered permissions, write controls, and local caching.22Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read chats, Saved Messages, files and media, search history, and send messages through your personal Telegram account.3MIT