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 в проекте):

mcp.json
{
  "mcpServers": {
    "gravi": {
      "url": "https://api.gravi.page/mcp",
      "headers": {
        "Authorization": "Bearer gravi_…"
      }
    }
  }
}

VS Code

Добавьте в .vscode/mcp.json. VS Code один раз спросит ключ и сохранит его:

mcp.json
{
  "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_project
    The 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_pages
    Pages of the project with id, slug, public URL, status and block count.Требуется: content:read
  • get_page
    One 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:read
  • create_page
    Create and publish a page at gravi.page/{slug}, optionally from a template.Требуется: content:write
  • update_page
    Change a page's address, status (published / unpublished), SEO fields or language.Требуется: content:write
  • delete_page
    Delete a page (restorable for 30 days from the dashboard). Requires confirm_slug equal to the page's slug.Требуется: content:read, content:write
  • update_header
    Set the page's name, bio (Markdown) and avatar (imported from an image URL; null removes it).Требуется: content:write
  • list_themes
    Theme presets (Pro presets are marked), fonts and the override options of set_theme.Требуется: любой ключ
  • set_theme
    Set a page's theme: a preset plus optional overrides (replaces the previous overrides).Требуется: content:write
  • add_blocks
    Add 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:write
  • update_block
    Change a block: markdown (text / article), params (partial; top-level keys replace, null removes one) or size.Требуется: content:write
  • remove_blocks
    Delete blocks from a page by id (cannot be undone through the API).Требуется: content:write
  • reorder_blocks
    Set 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:write
  • lock_blocks
    Protect blocks with one shared password (Pro). Visitors see a placeholder until they unlock. The password is write-only and never returned.Требуется: content:write
  • unlock_blocks
    Remove the password protection from blocks.Требуется: content:write
  • list_forms
    Form blocks with response counts per status and their columns.Требуется: responses:read
  • list_responses
    Responses of a form, newest first. Filter by status, date range (ISO) or search text; paginate with cursor.Требуется: responses:read
  • update_responses
    Change the status, read state or note of responses (up to 100 by id), or delete them.Требуется: responses:write
  • get_analytics
    Views, 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.

Справочник REST API