Samotpravil MCP
Allows generating and previewing a static documentation site from the API snapshot using Docusaurus.
Allows hosting the Docusaurus-generated documentation preview on GitHub Pages.
Allows fetching, syncing, and diffing Postman collections for API documentation management, and searching requests within the collection.
Allows exporting OpenAPI specification, publishing to SwaggerHub, and using Swagger-MCP for endpoint exploration and model generation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Samotpravil MCP find endpoints related to delivery"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Samotpravil MCP
MCP-сервер вокруг документации API СамОтправил и HTTP API api.samotpravil.ru.
Версия: 1.8.0 · npm: samotpravil-mcp · MCP Registry: io.github.dkanster/samotpravil-api-mcp · Smithery: smithery.yaml · Cursor Directory: .mcp.json
Хостинг: репозиторий временно в dkanster/samotpravil-api-mcp.
Планируется: переезд в org Samotpravil →@samotpravil/mcp— docs/ORG_MIGRATION.md.
Сервер подтягивает Postman-коллекцию с documenter (live + offline snapshot) и даёт агенту tools для поиска методов, вызова API и безопасных пресетов (READ_ONLY, dry_run). Имена typed tools совпадают с Python SDK samotpravil.
Экосистема: Postman → snapshot → MCP / OpenAPI / Docusaurus — docs/ECOSYSTEM.md · live preview: https://dkanster.github.io/samotpravil-api-mcp/
Быстрый старт
npx -y samotpravil-mcp@latestCursor — .cursor/mcp.json:
{
"mcpServers": {
"samotpravil": {
"command": "npx",
"args": ["-y", "samotpravil-mcp@latest"],
"env": {
"SAMOTPRAVIL_API_KEY": "your_api_key_here",
"SAMOTPRAVIL_READ_ONLY": "1",
"SAMOTPRAVIL_ALLOW_SEND": "0"
}
}
}
}SAMOTPRAVIL_API_KEY опционален для docs-only tools. После правок: Settings → MCP → Reload.
Бесплатного тестового ключа нет: регистрация в ЛК → верификация домена отправителя → ключ в env. Пакетную боевую отправку по умолчанию не открываем (SAMOTPRAVIL_ALLOW_SEND=0).
Экосистема (рядом с MCP)
Артефакт | Ссылка |
Спека OpenAPI | |
Node-клиент API | |
Пример SaaS (два ключа TX/MKT) | |
Python MCP (pip) | |
Smithery | |
Cursor Directory |
Для SaaS сразу два API-ключа (разные стоп-листы и webhook URL) — см. пример выше.
Сценарии и конфиги для Claude / VS Code: docs/EXAMPLES.md
Cursor Directory
Каталог сообщества cursor.directory автодетектит MCP из корневого .mcp.json (дубль: mcp.json, манифест plugin.json). Первая отправка: cursor.directory/plugins/new → URL этого репозитория (вход GitHub/Google). В листинг не входят swagger-mcp и Postman maintainer.
Дальше править код и карточку — docs/PUBLISH.md § «Cursor Directory»: релиз npm по tag v*; карточку Directory не слать второй раз (дубли). Add to Cursor у уже поставивших сам не обновляется.
Related MCP server: grok-api-mcp
Что внутри
Компонент | Кол-во | Нужен ключ |
Docs tools | 4 | нет |
Core typed API | 9 + |
|
Python SDK parity | 28 |
|
Auto tools ( | ~16 |
|
Postman maintainer | 4 |
|
MCP Resources | 9 | нет |
MCP Prompts | 5 | нет |
Итого: ~59 tools ( +4 postman при POSTMAN_API_KEY).
Инструменты
Документация (без API-ключа)
Tool | Описание |
| Авторизация, SMTP, лимиты, категории |
| Список всех методов API |
| Поиск по документации |
| Подробности по методу |
Typed API (нужен SAMOTPRAVIL_API_KEY)
Tool | Описание |
| POST |
| POST |
| GET |
| GET |
| Поиск email в стоп-листах |
| Стоп-лист ( |
| POST |
| GET |
| Generic escape hatch |
Python SDK parity (v1.3+)
Typed tools с именами как в PyPI-пакете samotpravil: send_package, get_statistics, get_ext_status, stop_list_export_create, domain_add, get_blist, create_authkey и др.
Полный список и маппинг: docs/EXAMPLES.md#python-sdk-parity · prompt python_sdk_parity
Postman maintainer (нужен POSTMAN_API_KEY)
Tool | Описание |
| Коллекция из Postman API |
| Postman API → |
| Diff Postman vs локальный snapshot |
| Поиск запросов в коллекции |
Подробнее: docs/EXAMPLES.md#postman-tools
Auto tools
api_{method}_{path} — для HTTP-методов, не покрытых typed tools (legacy v1, tickets, email check/clean и т.д.).
MCP Prompts
Prompt | Описание |
| Обзор SMTP + HTTP + лимиты |
| Чеклист отправки письма |
| Работа со стоп-листами |
| Статус по X-Track-ID / выпуску |
| Python SDK → MCP tools |
MCP Resources
URI | Содержимое |
| Обзор API |
| Индекс методов |
| Один метод |
| Популярные ошибки |
| SMTP, X-Track-ID, трекинг |
| Python SDK → MCP tools |
| Фрагмент CHANGELOG пакета |
| Лимиты API и отправки |
| Предложения по HTTP API (фрагмент) |
Безопасность
Env | Эффект |
| Только GET/HEAD |
| Блок send/package |
| Блок stop-list, доменов, authkey |
| Отключить |
|
|
| Preview запроса без отправки |
Секреты (api_key, key= в query) маскируются в ответах MCP.
Транспорты и интеграции
HTTP transport
npx samotpravil-mcp --http --port 3000
# POST http://127.0.0.1:3000/mcpEnv: SAMOTPRAVIL_HTTP_HOST, SAMOTPRAVIL_HTTP_PORT, SAMOTPRAVIL_HTTP_AUTH_TOKEN, SAMOTPRAVIL_HTTP_JSON_LOG=1 (structured logs).
docker build -t samotpravil-mcp .
docker run --rm -p 3000:3000 -e SAMOTPRAVIL_API_KEY=... -e SAMOTPRAVIL_HTTP_AUTH_TOKEN=... samotpravil-mcpOpenAPI + Swagger-MCP
npm run export-openapi # → data/openapi.yaml
npm run upload-swaggerhub # SwaggerHub (нужен .env.swaggerhub)
npm run prepare-swagger-mcp # Vizioz/Swagger-MCPСпека: mailganer/samotpravil-smtp-api@1.0.0 · docs/SWAGGERHUB.md
Docusaurus preview
npm run docusaurus:install && npm run docusaurus:startLive: https://dkanster.github.io/samotpravil-api-mcp/ · docs/DOCS_SITE.md
Discovery
Площадка | Ссылка |
npm | |
MCP Registry | |
Smithery |
|
Официальный promo |
Конфигурация
Шаблон: .env.samotpravil.example
SAMOTPRAVIL_API_KEY=your_key_here
# POSTMAN_API_KEY=... # maintainer tools
# SAMOTPRAVIL_READ_ONLY=1Ключ API: https://samotpravil.ru/get-access
Полный список env: docs/EXAMPLES.md
Разработка
git clone https://github.com/dkanster/samotpravil-api-mcp.git
cd samotpravil-api-mcp
npm install && npm test && npm run dev
npm run setup-hooks # optional: pre-commit (lint + test)
npm run lint # ESLint
npm run pre-publish-check # перед npm tag
npm run release-prepare # pre-flight перед npm tag
npm run generate-tool-catalog
npm run scaffold-typed-tool send_packageSecurity: SECURITY.md
Contributing: CONTRIBUTING.md
Changelog: CHANGELOG.md
Publish: docs/PUBLISH.md
Roadmap: docs/ROADMAP_v1.6.md · Release: docs/RELEASE_v1.7.0.md
Org migration: docs/ORG_MIGRATION_RUNBOOK.md ·
npm run plan-org-migrationAPI v1→v2: docs/MIGRATION_V1_TO_V2.md
API wishlist (предложения для HTTP API продукта): docs/API_WISHLIST.md
Источник документации
Offline:
data/collection.snapshot.jsonОбновить:
npm run sync-docsилиpostman_sync_snapshotAPI: https://api.samotpravil.ru · SMTP:
api.samotpravil.ru:1126/:1127
Из git clone в свой проект
/path/to/samotpravil-api-mcp/setup.sh .Лицензия
MIT
Available Tools
58 toolsadd_stop_list_emailADestructive
Добавить email в стоп-лист
Inputs: email (required), domain, dry_run, mail_from.
api_delete_v2_stop_list_export_tokenBDestructive
DELETE /api/v2/stop-list/export/:token — Удалить задачу
Inputs: dry_run.
api_get_v1_get_fbl_reportCRead-only
GET /api/v1/get_fbl_report — Отчёт о пожаловавшихся v1
Inputs: key, date, dry_run.
api_get_v1_get_smtp_issue_statCRead-only
GET /api/v1/get_smtp_issue_stat — Сводный отчет за сутки v1
Inputs: key, date, dry_run.
api_get_v1_get_stop_reportCRead-only
GET /api/v1/get_stop_report — Отчёт о недоставках v1
Inputs: key, date, dry_run.
api_get_v1_package_reportCRead-only
GET /api/v1/package_report — Недоставки пакетной отправки v1
Inputs: id, key, dry_run.
api_get_v1_package_report_fblCRead-only
GET /api/v1/package_report_fbl — Жалобы пакетной отправки v1
Inputs: key, dry_run, pack_id.
api_get_v1_package_statusCRead-only
GET /api/v1/package_status — Статус отправки v1
Inputs: key, dry_run, pack_id.
api_get_v2_email_activityCRead-only
GET /api/v2/email/activity — Активность
Inputs: email, dry_run.
api_get_v2_stop_list_export_tokenCRead-only
GET /api/v2/stop-list/export/:token — Скачать стоп-лист
Inputs: dry_run.
api_get_v2_ticketsBRead-only
GET /api/v2/tickets — Список обращений
Inputs: dry_run.
api_get_v2_tickets_idARead-only
GET /api/v2/tickets/:id/ — Отдельное обращение
Inputs: dry_run.
api_post_v2_email_checkCRead-only
POST /api/v2/email/check — Проверить верстку
Inputs: body, checks, dry_run.
api_post_v2_emails_cleanCRead-only
POST /api/v2/emails/clean/ — Стандартизация
Inputs: email, dry_run.
api_post_v2_ticketsCDestructive
POST /api/v2/tickets — Создать обращение
Inputs: dry_run, message, subject, client_name, +1 more.
api_post_v2_tickets_idBDestructive
POST /api/v2/tickets/:id/ — Обновить обращение
Inputs: dry_run, message, subject, client_name, +1 more.
api_post_v2_tickets_ipADestructive
POST /api/v2/tickets — Создать обращение на выделенный IP
Inputs: type, speed, region, cooment, +2 more.
api_requestBDestructive
Generic HTTP к api.samotpravil.ru (safety flags, dry_run). Отключается через SAMOTPRAVIL_ALLOW_GENERIC_API=0.
Inputs: path (required), method (required), body, query, +1 more.
create_authkeyDDestructive
POST /api/v2/authkey/create — WhiteLabel (Python SDK parity)
Inputs: blist_id (required), dry_run, check_ips, allowed_ips.
create_blistCDestructive
POST /api/v2/blist/create — WhiteLabel (Python SDK parity)
Inputs: name (required), dry_run, webhook_url, webhook_active, +3 more.
domain_addCDestructive
POST /api/v2/blist/domains/add (Python SDK parity)
Inputs: domain (required), dry_run.
domain_check_verificationDDestructive
POST /api/v2/blist/domains/verify (Python SDK parity)
Inputs: domain (required), dry_run.
domain_removeCDestructive
POST /api/v2/blist/domains/remove (Python SDK parity)
Inputs: domain (required), dry_run.
get_authkeyBRead-only
GET /api/v2/authkey — WhiteLabel (Python SDK parity)
Inputs: dry_run.
get_blistCRead-only
GET /api/v2/blist — WhiteLabel (Python SDK parity)
Inputs: blist_id (required), dry_run.
get_delivery_statusCRead-only
GET /api/v2/issue/status по x_track_id
Inputs: dry_run, message_id, x_track_id.
get_endpointCRead-only
Документация по методу API.
Inputs: name_or_path (required).
get_ext_statusCRead-only
GET /api/v2/issue/ext_status — полная история статусов (Python SDK parity)
Inputs: dry_run, message_id, x_track_id.
get_fbl_report_by_dateCRead-only
GET /api/v2/blist/report/fbl (Python SDK parity)
Inputs: date_to (required), date_from (required), limit, dry_run, +1 more.
get_fbl_report_by_issueDRead-only
GET /api/v2/issue/report/fbl (Python SDK parity)
Inputs: issuen (required), limit, dry_run, cursor_next.
get_ip_infoCRead-only
GET /api/v2/ip — WhiteLabel (Python SDK parity)
Inputs: dry_run.
get_issue_statDRead-only
GET /api/v1/get_issue_stat (Python SDK parity)
Inputs: ids (required), dry_run.
get_non_delivery_by_dateCRead-only
GET /api/v2/blist/report/non-delivery (Python SDK parity)
Inputs: date_to (required), date_from (required), limit, dry_run, +1 more.
get_non_delivery_by_issueDRead-only
GET /api/v2/issue/report/non-delivery (Python SDK parity)
Inputs: issuen (required), limit, dry_run, cursor_next.
get_overviewCRead-only
Обзор API СамОтправил.
Inputs: no named parameters.
get_package_statusDRead-only
GET /api/v2/package/status
Inputs: issuen (required), dry_run.
get_statisticsDRead-only
GET /api/v2/issue/statistics (Python SDK parity)
Inputs: date_to (required), date_from (required), limit, dry_run, +1 more.
get_unsubscribe_by_dateCRead-only
GET /api/v2/blist/report/unsubscribe (Python SDK parity)
Inputs: date_to (required), date_from (required), limit, order, +2 more.
get_unsubscribe_by_issueDRead-only
GET /api/v2/issue/report/unsubscribe (Python SDK parity)
Inputs: issuen (required), limit, order, dry_run, +1 more.
list_allowed_domainsCRead-only
GET /api/v2/blist/domains
Inputs: dry_run.
list_endpointsCRead-only
Список методов API.
Inputs: limit, category.
remove_stop_list_emailBDestructive
Удалить email из стоп-листа
Inputs: email (required), domain, dry_run, mail_from.
search_docsCRead-only
Поиск по документации API.
Inputs: query (required), limit.
search_stop_listARead-only
Поиск email в стоп-листах
Inputs: email (required), dry_run.
send_emailDDestructive
POST /api/v1/smtp_send
Inputs: subject (required), email_to (required), email_from (required), params, +8 more.
send_mail_v2DDestructive
POST /api/v2/mail/send
Inputs: subject (required), email_to (required), email_from (required), params, +7 more.
send_packageCDestructive
POST /api/v1/add_json_package — массовая отправка (Python SDK parity)
Inputs: users (required), subject (required), name_from (required), email_from (required), +11 more.
send_package_xmlCDestructive
GET /api/v1/add_package — XML-пакет по URL (Python SDK parity)
Inputs: url (required), dry_run.
stop_list_export_createCDestructive
POST /api/v2/stop-list/export — создать задачу экспорта (Python SDK parity)
Inputs: dry_run.
stop_list_export_deleteCDestructive
DELETE /api/v2/stop-list/export/{token} (Python SDK parity)
Inputs: token (required), dry_run.
stop_list_export_downloadCRead-only
GET /api/v2/stop-list/export/{token} (Python SDK parity)
Inputs: token (required), dry_run.
stop_list_export_tasksCRead-only
GET /api/v2/stop-list/export — список задач экспорта (Python SDK parity)
Inputs: status, dry_run.
stop_list_failedDRead-only
GET /api/v2/stop-list/failed (Python SDK parity)
Inputs: limit, dry_run, cursor_next.
stop_list_fblCRead-only
GET /api/v2/stop-list/fbl (Python SDK parity)
Inputs: limit, dry_run, cursor_next.
stop_list_unsubscribeCRead-only
GET /api/v2/stop-list/unsubscribe (Python SDK parity)
Inputs: limit, dry_run, cursor_next.
stop_packageCDestructive
GET /api/v1/package_stop — остановить пакет (Python SDK parity)
Inputs: package_id (required), dry_run.
update_blistCDestructive
POST /api/v2/blist/update — WhiteLabel (Python SDK parity)
Inputs: blist_id (required), name, active, dry_run, +5 more.
validate_emailDDestructive
POST /api/v2/emails/validate/
Inputs: email (required), dry_run.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 58 tools
Multiple tools have overlapping or identical purposes (e.g., send_email vs send_mail_v2, stop_list_export_delete vs api_delete_v2_stop_list_export_token, api_post_v2_tickets vs api_post_v2_tickets_ip). The presence of both SDK-parity and raw API wrapper functions creates redundant paths for the same operation, making it very difficult for an agent to determine which tool to use.
The naming is a mix of descriptive snake_case (get_delivery_status), versioned names (send_mail_v2), and raw API-style names with HTTP verbs and version prefixes (api_get_v2_tickets_id). There is no consistent verb_noun pattern; the api_* group breaks the otherwise somewhat consistent snake_case convention, and versioning is applied haphazardly.
With 58 tools, this server is severely overloaded. The count includes many redundant wrappers, meta-tools for documentation (list_endpoints, get_endpoint, search_docs), and near-duplicates of the same endpoint. This far exceeds a usable tool surface for an email delivery API, overwhelming agents with unnecessary choices.
The tool set covers a wide range of the email API domain: sending (email, packages), delivery status, stop-list management, reports, tickets, domain whitelist, IP info, and email validation. While there are some potential gaps (e.g., missing update for packages, no bulk update operations), the core lifecycle is well represented and an agent can accomplish most tasks without hitting dead ends.
Maintenance
Related MCP Connectors
MCP server that delivers up-to-date Bitrix24 REST API documentation.
MCP server for smoothsend documentation, generated by doc2mcp.
MCP server for opencode documentation, generated by doc2mcp.
MCP server for developer documentation, generated by doc2mcp.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that crawls API documentation websites and exposes their content to AI models, enabling them to search, browse, and reference API specifications.1MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides comprehensive xAI/Grok API documentation, allowing AI assistants to search bundled guides, fetch live documentation, and browse API endpoints or model specifications.13-
- AlicenseAqualityCmaintenanceMCP server that fetches and searches the latest stable documentation for any package from PyPI, npm, and crates.io.5MIT
- MIT