Skip to main content
Glama
Mailganer API MCP
by dkanster

Mailganer API MCP

MCP-сервер для REST API Mailganer: локальный кэш документации и live-вызовы API через единый интерфейс.

Кэширует страницы документации и Postman-коллекцию в docs/, даёт инструменты для поиска, синхронизации и проверки изменений. С MAILGANER_API_KEY — выполняет реальные HTTP-запросы к API.

Структура

mailganer-api-mcp/
├── docs/
│   ├── overview.md          # авторизация, лимиты, пагинация
│   ├── api-index.json       # каталог всех страниц
│   ├── sitemap-pages.json   # страницы из sitemap.xml
│   ├── postman-index.json   # индекс Postman-запросов
│   ├── postman-collection.md  # changelog и инструкция по обновлению коллекции
│   ├── crosslinks.json      # связи docs ↔ Postman
│   ├── manual-crosslinks.json  # ручные связи и пояснения для «дырок»
│   ├── endpoints/           # JSON по каждой странице API
│   └── postman/             # Postman collection JSON
├── docs_kb.py               # фасад над пакетом kb/
├── kb/                      # модули knowledge base
│   ├── storage.py           # загрузка кэша
│   ├── matching.py          # сопоставление docs ↔ Postman paths
│   ├── crosslinks.py        # crosslinks и linked docs
│   ├── search.py            # поиск по docs/Postman
│   ├── prepare.py           # prepare_api_call
│   ├── sync_runner.py       # sync + live diff
│   └── sanitize.py          # маскирование секретов при sync
├── paths.py                 # нормализация API paths
├── http_retry.py            # retry/backoff для HTTP
├── sync_lib.py              # парсинг и sync документации с сайта
├── mailganer_client.py      # HTTP-клиент для live-вызовов API
├── mcp_resources.py         # MCP resources (docs, postman)
├── mcp_prompts.py           # MCP prompts (workflows)
├── scripts/
│   ├── sync-api-docs.py     # парсер документации (sitemap + menu)
│   ├── sync-postman.py      # синхронизация Postman-коллекции (скачивание)
│   ├── add-missing-postman-requests.py  # добавление методов в Postman (запись)
│   └── build-docusaurus-docs.py  # генерация markdown для Docusaurus
├── website/                 # Docusaurus-сайт (локальный preview docs)
└── server.py                # MCP-сервер

Related MCP server: mcp-for-docs

Быстрый старт

cd mailganer-api-mcp
chmod +x setup.sh
./setup.sh .

Reload MCP в Cursor: Settings → MCP → Reload.

Или в чате: «установи mailganer api docs» / «обнови документацию mailganer».

Переменные окружения (.env.api)

MAILGANER_API_KEY=your_api_key
MAILGANER_API_BASE_URL=https://mailganer.com/api
POSTMAN_API_KEY=PMAK-your_postman_api_key
  • MAILGANER_API_KEY — раздел Настройки аккаунта в личном кабинете Mailganer (для live-вызовов API)

  • POSTMAN_API_KEY — Postman → Settings → API keys

MCP-серверы

Сервер

Назначение

mailganer-api

Локальный кэш документации Mailganer API

postman

Ваши workspace, коллекции и запросы в Postman

Режим Postman MCP по умолчанию: --code. Чтобы сменить (--minimal, --full), отредактируйте .cursor/postman-mcp.sh.

MCP-инструменты

Документация (без API-ключа)

Инструмент

Описание

get_doc_status

Статус кэша: дата sync, кол-во страниц, ошибки

get_cache_health

Готовность кэша (ready / warnings) — после pip install без clone

sync_documentation

Обновить docs с сайта (all / api / postman)

list_api_docs

Список страниц, фильтр по категории

search_api_docs

Полнотекстовый поиск по кэшу

get_api_endpoint_doc

Страница docs + связанные Postman-запросы

get_linked_postman_request

Postman-запрос + связанные страницы docs

rebuild_doc_crosslinks

Пересобрать docs/crosslinks.json

list_crosslink_gaps

Список «дырок» без связи + пояснения

check_doc_page

Сравнить кэш с live-сайтом, показать diff

get_api_overview

Обзор: auth, лимиты, пагинация

search_postman

Поиск по Postman-коллекции

get_postman_request

Запрос Postman по имени или path

Live API (нужен MAILGANER_API_KEY)

Инструмент

Описание

get_api_credentials_status

Проверить, настроен ли API-ключ (без раскрытия)

prepare_api_call

Собрать method/path/auth/body из docs по slug

call_mailganer_api

Выполнить HTTP-запрос к Mailganer API

MCP Resources

URI

Содержимое

mailganer://docs/overview

Обзор API (markdown)

mailganer://docs/status

Статус кэша (JSON)

mailganer://docs/cache

Готовность кэша: ready/warnings (JSON)

mailganer://docs/index

Каталог страниц (JSON)

mailganer://docs/endpoint/{slug}

Страница docs + Postman-связи

mailganer://postman/request/{name}

Postman-запрос + связанные docs

MCP Prompts

Prompt

Назначение

explore-endpoint

Найти docs и Postman по slug/ключевому слову

call-endpoint

Подготовить и выполнить live-запрос по slug

sync-docs-review

Sync + обзор изменений

find-crosslink-gaps

Анализ дыр docs ↔ Postman

Обновить документацию вручную

bash scripts/sync-all-docs.sh

или по отдельности:

python3 scripts/sync-api-docs.py
python3 scripts/sync-postman.py
python3 scripts/build-crosslinks.py

Docusaurus preview

Локальный сайт с документацией из кэша docs/ — sidebar по категориям mailganer.com, на страницах методов есть связанные Postman-запросы.

Требования: Node.js ≥ 20.

python3 scripts/build-docusaurus-docs.py   # website/docs/ + website/sidebars.ts
cd website
npm install
npm start                                  # http://localhost:3000

После sync документации перегенерируйте страницы тем же скриптом build-docusaurus-docs.py.

Production-сборка: cd website && npm run build → статика в website/build/.

Тесты и CI

pip install -e ".[dev]"
pytest

Workflow .github/workflows/ci.yml — pytest и ruff на Python 3.11–3.13 при push/PR.

Кэш docs и pip install

Каталог docs/ не входит в wheel — после pip install без clone кэш пустой.
Проверка: MCP tool get_cache_health или get_doc_status → cache.ready и cache.warnings.
Решение: clone репозитория, ./setup.sh . или bash scripts/sync-all-docs.sh.

Без sync — скачать готовый кэш из GitHub Release:

bash scripts/download-docs-cache.sh        # latest release
bash scripts/download-docs-cache.sh v0.5.1 # конкретный tag

Release создаётся workflow .github/workflows/release-docs.yml при push tag v*.

Changelog: CHANGELOG.md. Contributing: CONTRIBUTING.md.

Сгенерированные website/docs/ и website/sidebars.ts в .gitignore — в репозитории только исходники сайта и скрипт генерации.

CI: автоматический sync

Workflow .github/workflows/sync-docs.yml:

Триггер

Когда

schedule

Каждый понедельник, 06:00 UTC

workflow_dispatch

Вручную: GitHub → Actions → Sync API docs → Run workflow

Если документация на сайте изменилась, workflow создаёт PR automation/sync-docs с обновлённым docs/.

После merge PR локально: git pull или ./setup.sh . для обновления кэша.

Настройка репозитория (один раз): Settings → Actions → General → Workflow permissions → Read and write и включить Allow GitHub Actions to create and approve pull requests. Без этого workflow не сможет открыть PR.

Источники

Источник

URL

Скрипт

Sitemap

https://mailganer.com/sitemap.xml

sync-api-docs.py

Меню API

https://mailganer.com/documentation/api/

sync-api-docs.py (fallback)

Postman

https://documenter.getpostman.com/view/23131434/VUxPvnhA

sync-postman.py

Postman-коллекция: добавление методов

sync-postman.py только скачивает публичную коллекцию в docs/postman/. Чтобы добавить запросы в workspace Mailganer Team:

# POSTMAN_API_KEY в .env.api
python3 scripts/add-missing-postman-requests.py
python3 scripts/sync-postman.py
python3 scripts/build-crosslinks.py

Подробности, список добавленных методов (2026-06-22) и как расширять скрипт: docs/postman-collection.md.

Ручные связи (manual-crosslinks.json)

Автоматический матчинг не покрывает всё: разные пути (/api/auth/ vs /api/v2/auth/), несколько способов вызова, методы без отдельной doc-страницы.

Файл docs/manual-crosslinks.json:

  • doc_to_postman — явные связи slug → имена Postman-запросов

  • doc_notes — пояснение, почему у страницы нет Postman (webhook, нет в коллекции)

После правок: python3 scripts/build-crosslinks.py
Проверить «дыры»: MCP-инструмент list_crosslink_gaps.

Авторизация API (справка)

  • v1 — api_key в теле запроса

  • v2 — заголовок Authorization: CodeRequest {{api_key}}

  • Лимит: 500 запросов/мин

Available Tools

16 tools
call_mailganer_apiB

Execute a live HTTP request against Mailganer REST API

Inputs: path (required), method (required), auth, body, +1 more.

check_doc_pageA

Compare a cached doc page with the live site and report differences

Inputs: slug (required).

get_api_credentials_statusA

Check whether MAILGANER_API_KEY is configured (without exposing the full key)

Inputs: no named parameters.

get_api_endpoint_docB

Get cached Mailganer API doc page with linked Postman requests

Inputs: slug (required).

get_api_overviewA

Get Mailganer API overview: auth, limits, pagination

Inputs: no named parameters.

get_cache_healthA

Check whether docs/ cache is ready to use (empty after pip install without clone/sync)

Inputs: no named parameters.

get_doc_statusA

Get sync status of cached Mailganer API docs and Postman collection

Inputs: no named parameters.

get_linked_postman_requestB

Get Postman request with related Mailganer documentation pages

Inputs: name, path.

get_postman_requestA

Get a Postman request by partial name or exact API path (without related docs)

Inputs: name, path.

list_api_docsB

List cached Mailganer API documentation pages, optionally by category

Inputs: category.

prepare_api_callC

Build method, path, auth mode and example body from cached docs by slug

Inputs: slug (required), path_params.

search_api_docsC

Full-text search in cached Mailganer API documentation

Inputs: query (required), limit.

search_postmanC

Search Mailganer Postman collection requests by keyword

Inputs: query (required), limit.

sync_documentationB

Re-sync Mailganer API documentation from web sources into docs/

Inputs: target.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 16 tools

    Disambiguation4/5

    Most tools target distinct operations (sync, list, search, get, compare, rebuild), but get_doc_status and get_cache_health both report cache state, and search_postman/get_postman_request can overlap when locating a request. Descriptions generally clarify the boundary.

    Naming Consistency5/5

    All tool names follow a clear snake_case verb_noun pattern (sync_, get_, list_, search_, rebuild_, call_). The verbs are consistently imperative and objects are specific, so the naming scheme is predictable across the set.

    Tool Count4/5

    16 tools is slightly above the ideal 3-15 range, but each tool addresses a distinct documentation/Postman/API-call workflow. The count is acceptable for a server that manages cached docs, crosslinks, and live requests.

    Completeness4/5

    The set covers sync, cache status, searching/reading docs, Postman lookup, crosslink maintenance, credential checks, request preparation, and live API execution. Minor gaps exist, such as no explicit list-all-Postman-requests tool and no way to validate the API key beyond checking it is configured.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers