Gravi MCP
Собирайте страницу из своего ИИ-инструмента
MCP-сервер Gravi позволяет ИИ-ассистенту читать и редактировать вашу страницу: добавлять ссылки, писать текст, менять тему, переставлять блоки и проверять результат. Он использует те же API-ключи, что и REST API.
- Адрес сервера
- https://api.gravi.page/mcp
- Транспорт
- Streamable HTTP, без состояния
Перед началом
Нужен проект на Pro. Скриптам и редакторам кода подходит API-ключ (Настройки → API), а коннекторы вроде Claude.ai или ChatGPT входят через OAuth. Давайте ключу только нужные права: с content:read и content:write можно собирать страницы; инструменты ответов и аналитики видны, только если такие права есть у ключа или подключения.
Настройка
Замените gravi_… на ваш API-ключ. Не добавляйте его в репозиторий.
Claude Code
claude mcp add --transport http gravi https://api.gravi.page/mcp \
--header "Authorization: Bearer gravi_…"Cursor
Добавьте в ~/.cursor/mcp.json (или .cursor/mcp.json в проекте):
{
"mcpServers": {
"gravi": {
"url": "https://api.gravi.page/mcp",
"headers": {
"Authorization": "Bearer gravi_…"
}
}
}
}VS Code
Добавьте в .vscode/mcp.json. VS Code один раз спросит ключ и сохранит его:
{
"inputs": [
{
"type": "promptString",
"id": "gravi-key",
"description": "Gravi API key",
"password": true
}
],
"servers": {
"gravi": {
"type": "http",
"url": "https://api.gravi.page/mcp",
"headers": {
"Authorization": "Bearer ${input:gravi-key}"
}
}
}
}Claude.ai, ChatGPT и другие коннекторы
В настройках коннекторов приложения добавьте свой коннектор с адресом сервера выше, поля авторизации оставьте пустыми. Gravi откроет вход и экран согласия, где вы выберете проект и разрешённые действия (ответы форм по умолчанию выключены). API-ключ не нужен. Отключить приложение можно в Настройки → API → Подключённые приложения.
Инструменты
Ассистент видит только инструменты, которые разрешены правами ключа. Каждое изменение возвращает публичный адрес страницы, чтобы вы могли посмотреть результат. Описания инструментов на английском.
get_projectThe project behind this key: plan, limits and usage, the key's scopes, pages with their public URLs and the block types with their sizes. Call first to learn what is allowed.Требуется: любой ключlist_pagesPages of the project with id, slug, public URL, status and block count.Требуется: content:readget_pageOne page: settings, header (name, bio as Markdown), theme and its blocks in reading order with type, size and a short summary (text blocks as Markdown).Требуется: content:readcreate_pageCreate and publish a page at gravi.page/{slug}, optionally from a template.Требуется: content:writeupdate_pageChange a page's address, status (published / unpublished), SEO fields or language.Требуется: content:writedelete_pageDelete a page (restorable for 30 days from the dashboard). Requires confirm_slug equal to the page's slug.Требуется: content:read, content:writeupdate_headerSet the page's name, bio (Markdown) and avatar (imported from an image URL; null removes it).Требуется: content:writelist_themesTheme presets (Pro presets are marked), fonts and the override options of set_theme.Требуется: любой ключset_themeSet a page's theme: a preset plus optional overrides (replaces the previous overrides).Требуется: content:writeadd_blocksAdd up to 20 blocks to a page, in order: link {url, title?}, text {markdown}, heading {text}, image {image_url, alt?}, video {url}, article {markdown}, spacer. Optional size and position per block. Stops at the first error and reports what was added.Требуется: content:writeupdate_blockChange a block: markdown (text / article), params (partial; top-level keys replace, null removes one) or size.Требуется: content:writeremove_blocksDelete blocks from a page by id (cannot be undone through the API).Требуется: content:writereorder_blocksSet the block order for the desktop and/or mobile view. Each list must contain every block id of the page exactly once; blocks keep their sizes and are re-flowed in that order.Требуется: content:writelock_blocksProtect blocks with one shared password (Pro). Visitors see a placeholder until they unlock. The password is write-only and never returned.Требуется: content:writeunlock_blocksRemove the password protection from blocks.Требуется: content:writelist_formsForm blocks with response counts per status and their columns.Требуется: responses:readlist_responsesResponses of a form, newest first. Filter by status, date range (ISO) or search text; paginate with cursor.Требуется: responses:readupdate_responsesChange the status, read state or note of responses (up to 100 by id), or delete them.Требуется: responses:writeget_analyticsViews, clicks, top blocks, referrers, countries and devices of a page for a period (UTC days, default the last 30; limited by the plan's history).Требуется: analytics:read
Ошибки и лимиты
Сбои приходят как ошибки инструментов с кодом и сообщением API, например LIMIT_REACHED: Free plan allows 60 blocks per page. Запросы учитываются в лимитах ключа (см. документацию API). Без ключа сервер отвечает 401, а проект без доступа к API — 403.