Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SEO_FACTORY_TOKENNoAPI token for the site (zmcp_...)
SEO_FACTORY_BASE_URLNoURL of the site's article API (e.g., https://example.com)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
setupA

Статус конфига и авторизации по всем сайтам (живой лёгкий probe GET /api/account/mcp-tokens на каждый) + инструкция подключения, если пусто. Вызывай первым при ошибках доступа или если пользователь не знает, с чего начать.

add_siteA

Добавить/обновить сайт в конфиге (существующий alias перезаписывается — так ротируется токен). Валидирует живьём: GET /api/articles/list (сайт реализует контракт) и, если передан token, GET /api/account/mcp-tokens (токен жив). Невалидное НЕ сохраняется. Первый сайт становится дефолтным. yandexHost принимает и URL, и host_id Вебмастера (https:site.ru:443 — двоеточия не опечатка), нормализуется сам. hiddenTags — темы, скрытые на самом сайте (напр. VPN на zaytsv.ru из-за РКН): исключаются из перелинковки/аудитов.

list_articlesA

Лёгкий список статей сайта (GET /api/articles/list — без content; поля: id, slug, title, excerpt, coverImage, tags, viewCount, authorName, createdAt; updatedAt там НЕТ). Фильтры на клиенте: tag (вхождение в теги, без регистра), query (подстрока заголовка). Скрытые на сайте статьи помечаются hidden:true. Пагинации на сервере нет — приходит всё; на большом сайте передай saveToFile.

get_articleA

Полная статья по slug (публичный GET /api/articles/by-slug/{slug}): title, content (Markdown), excerpt, coverImage, tags, viewCount, id (нужен для update/delete), даты (LocalDateTime без таймзоны). Для больших статей — saveToFile.

publish_articleA

Опубликовать НОВУЮ статью (POST /api/articles). Сначала гоняет validate_article: errors блокируют (обход skipValidation:true), warnings печатаются. content — Markdown; title можно не передавать, если content начинается с «# Заголовок» (сервер возьмёт и вырежет строку). ⚠️ Slug генерирует сервер (транслит + дата + счётчик коллизий) — узнаёшь его ТОЛЬКО из ответа; внутренние ссылки на новую статью ставь после публикации. Обложка = первая картинка в теле (, или голый URL с расширением) — иначе фолбэк-генератор сайта. IndexNow сервер пингует сам (fire-and-forget). Большой текст передавай через contentFile.

update_articleA

Обновить статью (resolve по slug через публичный /by-slug → PUT /api/articles/{id}). Это НЕ upsert: нет статьи → ошибка с подсказкой про publish_article. ⚠️ ГЛАВНАЯ ГОТЧА: PUT стирает excerpt/coverImage/authorName и пере-выводит их из НОВОГО content — если у статьи была обложка, а в новом теле нет первой картинки, обложка пропадёт; тул это ловит и блокирует (обход skipValidation:true). Slug при PUT стабилен. tags: не передал — сохранились старые; передал [] — стёр. 403 = статья не найдена ИЛИ принадлежит другому аккаунту (бэкенд не различает).

delete_articleA

⚠️ Удалить статью (DELETE /api/articles/{id}; resolve по slug). Требует confirm:true. 404 — нет статьи, 403 — чужая (админ-аккаунт может удалять чужие). После удаления IndexNow НЕ уведомляется — URL останется в индексе; при необходимости снять через Вебмастер.

upload_imageA

Загрузить картинку статьи (POST /api/media/article-image, multipart): jpg/png/webp/gif/avif/svg, ≤10 МБ. Возвращает {url}. Вставь «» ПЕРВОЙ строкой тела — станет обложкой и переживёт будущие PUT (см. готчу update_article).

validate_articleA

Офлайн-линтер статьи БЕЗ сети: errors (пустой content; нет title и нет «# H1»; двойной H1) и warnings (title>60; первый абзац>160 — обрежется excerpt/description; нет «## FAQ» с ≥2 парами «### Вопрос» — не будет FAQPage-разметки; нет картинки-обложки в теле; голый URL без расширения — сервер не увидит обложку; <2 внутренних ссылок; заголовок без букв/цифр → slug no-title; тегов >6/длиннее 40). Возвращает и facts: слова, FAQ-пары, обложка, ссылки. Прогоняется автоматически внутри publish_article/update_article.

audit_orphansA

Статьи-сироты: на кого не ссылается ни одна «Читайте также» (тот же тематический скоринг, что на фронте: теги ×3 + слова заголовка ×1; count = размер блока на сайте, по умолчанию 3). Сирота = поисковик считает страницу неважной. К каждой сироте — до 2 статей-доноров, куда добавить входящую ссылку. Скрытые на сайте статьи (hiddenTags) исключены из графа. На большом сайте — saveToFile.

audit_contentA

Контент-аудит по ПОЛНЫМ телам (GET /api/articles/all — тяжёлый, на 400+ статьях мегабайты: всегда передавай saveToFile). По каждой статье: есть ли «## FAQ» (≥2 пар), длина < minWords, title>60, нет картинки-обложки в теле (уязвима к PUT-готче), <2 внутренних ссылок. В чат — сводка с приоритетами, полный список — в файл.

suggest_linksA

Перелинковка для одной статьи: тематически близкие (score>0, теги ×3 + слова заголовка ×1) с готовыми markdown-сниппетами title. Скоринг симметричен, поэтому список один: используй его и как ЦЕЛИ (на кого сослаться из этой статьи), и как ДОНОРОВ (в чьи тела добавить ссылку на эту статью через update_article).

match_queriesA

Мост «Вебмастер → контент-план»: сопоставить поисковые запросы со статьями сайта. Вход: queries — массив строк ИЛИ объектов {query, shows?, position?}; queriesFile — JSON-файл того же формата (пиши его сам из ответа yd_webmaster_search_queries_popular: query_text→query, TOTAL_SHOWS→shows, AVG_SHOW_POSITION→position; фильтруй позиции 8–30 ДО вызова). По каждому запросу: score против всех статей → вердикт boost (дожать существующую, best.slug) или new (написать новую). Сортировка по shows desc.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/skiddgoddamn/seo-factory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server