zaytsv-bot-graph-mcp
MCP server for building and publishing Telegram bot funnels on zaytsv.ru, enabling graph creation, validation, and publication via API.
README
zaytsv-mcp
MCP-сервер (+ скилл для Claude Code) для сборки и публикации воронок/автоматизаций ботов (Telegram, MAX и Instagram) в сервисе zaytsv /bots: из текстового описания → валидный граф сценария → заливка и публикация через API.
- 🤖 30 инструментов сборки/публикации:
list_bots,list_graphs,list_channels,get_graph,create_graph,update_graph,edit_graph_live,patch_graph,dry_run,publish_graph,import_funnel,list_templates,create_graph_from_template,clone_graph,copy_graph,rename_graph,set_active_graph,delete_graph,upload_file,list_files,delete_file,graph_analytics,list_bot_users,list_links(+setup/set_token). - 📝 Статьи блога (тот же токен
zmcp_…):article_publish,article_update,article_list,article_get— публикация статей в Markdown (как README на GitHub) в раздел /articles. - 📎 Медиа:
upload_fileгрузит фото/видео/документы в библиотеку /bots/files (до 50 МБ) и возвращает публичный URL — его вставляешь в медиа-карточку сценария. - 🧠 Скилл
build-bot-funnel: учит агента собирать корректный граф (типы узлов, ветки, кнопки, задержки) и проверять его перед публикацией. Поддерживает Telegram, MAX и Instagram. - 📦 Без зависимостей — чистый Node ≥18, ставится и запускается сразу.
Поддерживаемые платформы
| Платформа | Онбординг | Триггеры входа | Ограничения |
|---|---|---|---|
| Telegram | Токен бота (BotFather) | /start, команды, callback, текст, рассылки |
Полный функционал |
| MAX | Токен бота (MAX Developer) | Команды, callback, текст | Без SUBSCRIBED/reply-клавиатур (мягкие предупреждения) |
OAuth в /growth (без токена) |
Комментарий/Direct/Ответ на историю/Упоминание | Ограниченный набор узлов; DELAY ≤ 24ч; ASK_QUESTION только TEXT/EMAIL/PHONE/NUMBER/CONTACT (CONTACT = ручной ввод номера); без рассылок |
Установка
Вариант A — как плагин Claude Code (рекомендуется)
/plugin marketplace add skiddgoddamn/zaytsv-mcp
/plugin install zaytsv-mcp@zaytsv
Подтянутся и MCP-сервер bot-graph, и скилл build-bot-funnel. Проверить: /mcp и /plugin.
Вариант B — как обычный MCP-сервер (Claude Code / Cursor / Windsurf / любой MCP-клиент)
Через npx без установки. Пример конфига (.mcp.json / настройки клиента):
{
"mcpServers": {
"zaytsv-mcp": {
"command": "npx",
"args": ["-y", "zaytsv-mcp"],
"env": {
"ZAYTSV_BASE_URL": "https://zaytsv.ru",
"ZAYTSV_MCP_TOKEN": "zmcp_ваш_токен"
}
}
}
}
См. также examples/.mcp.json.
Авторизация — персональный токен
Токен даёт полный доступ к управлению твоими ботами (как вход в аккаунт).
- Залогинься на https://zaytsv.ru → открой
/bots/mcp-tokens. - Создай токен → скопируй секрет
zmcp_...(показывается один раз). - Передай токен любым способом:
- просто пришли его агенту в чат — он вызовет инструмент
set_tokenи сохранит токен в~/.zaytsv-bot-graph/token(применяется сразу, без рестарта), или envв.mcp.json(Вариант B), или- переменной окружения: PowerShell
setx ZAYTSV_MCP_TOKEN "zmcp_...", bashexport ZAYTSV_MCP_TOKEN="zmcp_...".
- просто пришли его агенту в чат — он вызовет инструмент
Отозвать токен можно там же — доступ блокируется мгновенно.
Не знаешь, что делать? Скажи агенту «настрой подключение» — он вызовет
setup, объяснит шаги и попросит токен. Любой инструмент при отсутствии токена тоже вернёт пошаговую инструкцию.
Дев-окружение:
ZAYTSV_BASE_URL=http://localhost:8066. Fallback без токена:ZAYTSV_SESSION_COOKIE= значение кукиSESSIONиз браузера.
Использование
Опиши воронку словами — агент соберёт граф и (через MCP) опубликует:
«Собери бота:
/start→ приветствие с кнопкой подписки на канал → вопрос с 3 кнопками (бизнес / эксперт / просто смотрю) → для каждой свою цепочку из 2 сообщений с задержкой 1 день → финал с регистрацией на вебинар. Залей в бота и опубликуй.»
Под капотом скилл соберёт nodes/edges, прогонит локальную проверку и вызовет import_funnel → создаст граф, зальёт узлы, прогонит dry-run /start, опубликует. При ошибках публикации — разберёт по code/nodeId, починит, повторит.
Инструменты
| Tool | Назначение |
|---|---|
setup |
статус авторизации + пошаговая инструкция подключения |
set_token |
сохранить присланный токен zmcp_… (без env/рестарта) |
list_bots |
список ботов |
list_graphs(botId) |
графы (сценарии) бота |
list_channels(botId) |
каналы/группы, подключённые к боту (chatId для условия SUBSCRIBED) |
get_graph(graphId, [summary], [saveToFile]) |
получить граф; summary:true — компактная сводка (id/type/title + рёбра), saveToFile — записать полный JSON на диск (для больших графов, чтобы не упереться в лимит токенов) |
create_graph(botId, name) |
создать пустой граф (DRAFT) |
update_graph(graphId, graphFile|graph|nodes,edges) |
залить узлы/рёбра (PUT); graphFile — путь к локальному JSON, граф не нужно слать инлайном |
edit_graph_live(graphId, graphFile|graph|nodes,edges) |
правка живого графа НА МЕСТЕ + авто-бэкап (рекомендуется для прода) |
patch_graph(graphId, replacements) |
строковые замены в JSON графа на сервере (для больших/живых графов) |
dry_run(graphId, kind, value) |
прогон без публикации |
publish_graph(graphId) |
публикация (вернёт errors[] при провале) |
import_funnel(botId, name, graphFile|graph) |
всё за раз: create → update → dry-run → publish |
list_templates() |
готовые шаблоны воронок |
create_graph_from_template(botId, templateId, name) |
граф из шаблона (DRAFT) |
clone_graph(graphId) |
копия графа в новый DRAFT |
rename_graph(graphId, name) |
переименовать сценарий |
set_active_graph(botId, graphId) |
переключить активный (живой) граф бота |
delete_graph(graphId) |
удалить граф (активный — нельзя, 409) |
upload_file(path|url) |
загрузить файл в /bots/files → публичный url для медиа-карточки |
list_files() |
файлы библиотеки /bots/files + использовано/лимит байт |
delete_file(id) |
удалить файл из /bots/files |
graph_analytics(graphId) |
прохождение сценария по узлам (где отваливается воронка) |
list_bot_users(botId) |
подписчики/лиды бота (постранично, поиск query) |
list_links(botId) |
стартовые трекинговые ссылки бота с UTM |
article_list() |
свои статьи блога (id, slug, title, просмотры) |
article_get(slug) |
статья по slug (Markdown content, excerpt, обложка) |
article_publish(content, title?, cover?, excerpt?) |
новая статья (Markdown; title из # ..., если не задан; обложка из cover-URL или 1-й картинки → OG; excerpt явно или авто) → id, slug, URL |
article_update(id, content, title?) |
обновить свою статью по id |
Формат графа и проверка
Граф — контейнер zaytsv-bot-graph (nodes[] + edges[]). Полная схема узлов/хэндлов и правила валидатора — в скилле:
Локальная проверка графа перед заливкой:
# Telegram (по умолчанию)
node skills/build-bot-funnel/validate.mjs path/to/import.json
# Instagram-бот
node skills/build-bot-funnel/validate.mjs path/to/import.json --platform=INSTAGRAM
# MAX-бот
node skills/build-bot-funnel/validate.mjs path/to/import.json --platform=MAX
Разработка
git clone https://github.com/skiddgoddamn/zaytsv-mcp
cd zaytsv-mcp
ZAYTSV_MCP_TOKEN=zmcp_... node src/index.mjs # стартует stdio MCP-сервер
Зависимостей нет — это голый JSON-RPC по stdio (протокол MCP 2024-11-05).
Безопасность
Токен = доступ к аккаунту по API. Не коммить его; держи в env. В конфигах храни ссылку ${ZAYTSV_MCP_TOKEN}, не само значение.
Лицензия
MIT — см. LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。