Skip to main content
Glama

mcp-server-cdek

Version

MCP-сервер, CLI-утилита и библиотека Pydantic-моделей для API СДЭК v2.

  • MCP-сервер — интеграция с Claude Code, Claude Desktop и другими MCP-клиентами

  • CLI-утилита — работа с API из терминала, скрипты и автоматизация

  • Pydantic-модели — типизированные модели API для использования в своих Python-программах

Все данные остаются на вашем компьютере — ключи никуда не передаются.

Оглавление

Related MCP server: SF Express MCP Server

Возможности

Доставка

Инструмент

CLI

Описание

cdek_create_order

create-order

Создать заказ на доставку (от меня / ко мне, на ПВЗ / до двери)

cdek_track

track

Отследить заказ по номеру СДЭК

cdek_barcode

barcode

Скачать PDF штрихкода для заказа

cdek_label

label

Скачать этикетку (A4/A5/A6/A7, по умолчанию A6 ~70x120мм)

cdek_waybill

waybill

Скачать PDF накладной для заказа

cdek_delivery_points

delivery-points

Поиск ПВЗ в городе

cdek_cities

cities

Поиск городов СДЭК по названию

Локальный справочник товаров

Инструмент

CLI

Описание

goods_list

goods list

Список всех товаров

goods_add

goods add

Добавить товар (название, вес, габариты, цена)

goods_remove

goods remove

Удалить товар по названию

Товары хранятся локально в ~/.config/mcp-server-cdek/goods.json. При создании заказа параметры берутся из справочника (если не указаны явно).

Настройки

Инструмент

CLI

Описание

config_show

—

Показать текущую конфигурацию (отправитель, ПВЗ, дефолты товара)

config_set

—

Установить значение конфигурации

Настройки хранятся в ~/.config/mcp-server-cdek/config.json. Можно настроить через Claude: «установи компанию-отправителя ООО Рога».


MCP-сервер

Установка

Шаг 1. Получить ключи API СДЭК

  1. Зарегистрируйтесь в личном кабинете СДЭК

  2. Перейдите в Настройки → Интеграция

  3. Скопируйте Client ID и Client Secret

Шаг 2. Подключить MCP-сервер

Подключение к Claude Code

Способ 1: через uvx (не требует установки пакета)

Требуется uv — если не установлен:

curl -LsSf https://astral.sh/uv/install.sh | sh
claude mcp add cdek \
  -e CDEK_CLIENT=ваш_client_id \
  -e CDEK_SECRET=ваш_client_secret \
  -- uvx mcp-server-cdek

Способ 2: через pip

pip install mcp-server-cdek

claude mcp add cdek \
  -e CDEK_CLIENT=ваш_client_id \
  -e CDEK_SECRET=ваш_client_secret \
  -- python -m mcp_server_cdek

Данные отправителя настраиваются через Claude: «установи отправителя: ООО Компания, Иванов И.И., ...» → config_set. Также можно передать через env vars (см. ниже).

Для удаления:

claude mcp remove cdek

Подключение к Claude Desktop

Добавьте в конфигурационный файл:

Клиент

ОС

Путь к файлу

Claude Code

все

~/.claude/settings.json (секция mcpServers)

Claude Desktop

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop

Windows

%APPDATA%\Claude\claude_desktop_config.json

Claude Desktop

Linux

~/.config/Claude/claude_desktop_config.json

Через uvx:

{
  "mcpServers": {
    "cdek": {
      "command": "uvx",
      "args": ["mcp-server-cdek"],
      "env": {
        "CDEK_CLIENT": "ваш_client_id",
        "CDEK_SECRET": "ваш_client_secret"
      }
    }
  }
}

Через pip (после pip install mcp-server-cdek):

{
  "mcpServers": {
    "cdek": {
      "command": "python",
      "args": ["-m", "mcp_server_cdek"],
      "env": {
        "CDEK_CLIENT": "ваш_client_id",
        "CDEK_SECRET": "ваш_client_secret"
      }
    }
  }
}

Остальные настройки (отправитель, ПВЗ, дефолты товара) задаются через config_set или env vars (см. таблицу ниже).

Подключение через --mcp-config

Подключает сервер только на время одной сессии Claude, не сохраняя в настройки. Токен хранится в отдельном .env.mcp файле, а не в конфиге Claude.

Из JSON-строки:

claude --mcp-config '{"cdek":{"command":"bash","args":["-c","source ~/.env.mcp && exec uvx mcp-server-cdek"]}}'

Из файла:

claude --mcp-config ~/mcp-servers.json

Пример ~/mcp-servers.json:

{
  "cdek": {
    "command": "bash",
    "args": ["-c", "source ~/.env.mcp && exec uvx mcp-server-cdek"]
  }
}

Пример ~/.env.mcp:

CDEK_CLIENT=ваш_client_id
CDEK_SECRET=ваш_client_secret

Шаг 3. Проверить

Попросите Claude: «найди ПВЗ СДЭК в Москве на Тверской» — он вызовет cdek_delivery_points.

Примеры (MCP)

  • «отправь посылку Иванову на ПВЗ MSK005, телефон +79001234567» → cdek_create_order

  • «отправь посылку до двери: Москва, Тверская 1, Петрову +79007654321» → cdek_create_order

  • «создай возвратный заказ от Сидорова, адрес: Самара, Ленина 10» → cdek_create_order (to_me)

  • «отследи посылку СДЭК 1234567890» → cdek_track

  • «скачай штрихкод для заказа 1234567890» → cdek_barcode

  • «скачай этикетку для заказа 1234567890» → cdek_label

  • «скачай этикетку A4 для заказа 1234567890» → cdek_label (format=A4)

  • «скачай накладную для заказа 1234567890» → cdek_waybill

  • «найди ПВЗ в Новосибирске» → cdek_delivery_points

  • «какие города СДЭК есть на "Новосиб"?» → cdek_cities

  • «добавь товар: Wi-Fi модем, 0.17 кг, 8x7x10 см» → goods_add

  • «список товаров» → goods_list


CLI-утилита

Установка (CLI)

pip install mcp-server-cdek

Переменные окружения CDEK_CLIENT и CDEK_SECRET обязательны:

export CDEK_CLIENT=ваш_client_id
export CDEK_SECRET=ваш_client_secret

Или через файл:

mcp-server-cdek --env /path/to/.env <command>

Формат файла — KEY=VALUE, по одной переменной на строку, #-комментарии.

Данные отправителя берутся из ~/.config/mcp-server-cdek/config.json или переменных окружения.

Использование (CLI)

Без аргументов запускается MCP-сервер, с командой — CLI. Все команды выводят JSON.

# Версия
mcp-server-cdek --version

# Справка
mcp-server-cdek --help
mcp-server-cdek <command> --help

Примеры команд

# Создать заказ (от меня на ПВЗ)
mcp-server-cdek create-order --direction from_me --name "Петров Пётр" --phone "+79007654321" --pvz MSK005

# Создать заказ (от меня до двери)
mcp-server-cdek create-order --direction from_me --name "Петров Пётр" --phone "+79007654321" --address "Москва, Тверская 1"

# Создать возвратный заказ (ко мне)
mcp-server-cdek create-order --direction to_me --name "Сидоров" --phone "+79009876543" --address "Самара, Ленина 10"

# Отследить заказ
mcp-server-cdek track 1234567890

# Скачать штрихкод
mcp-server-cdek barcode 1234567890 --output /tmp/barcode.pdf

# Скачать этикетку (по умолчанию A6 ~70x120мм)
mcp-server-cdek label 1234567890 --output /tmp/label.pdf
mcp-server-cdek label 1234567890 --output /tmp/label_a4.pdf --format A4

# Скачать накладную
mcp-server-cdek waybill 1234567890 --output /tmp/waybill.pdf

# Поиск ПВЗ
mcp-server-cdek delivery-points Москва --search Тверская

# Поиск городов
mcp-server-cdek cities Новосиб

# Справочник товаров
mcp-server-cdek goods list
mcp-server-cdek goods add --name "Wi-Fi модем" --weight 0.17 --height 8 --width 7 --length 10
mcp-server-cdek goods remove --name "Wi-Fi модем"

Pydantic-модели

Пакет содержит типизированные Pydantic-модели всех объектов API СДЭК v2. Модели можно использовать в своих Python-программах для валидации данных и автодополнения в IDE.

Установка (библиотеки)

pip install mcp-server-cdek

Использование в своих программах

from mcp_server_cdek.models import OrderRequest, TariffRequest, Location, Package, Item

# Валидация данных из API
data = {"tariff_code": 136, "from_location": {"code": 44}, "to_location": {"code": 137}}
req = TariffRequest.model_validate(data)
print(req.tariff_code)  # type-safe доступ к полям

# Создание объекта
item = Item(name="Товар", ware_key="ART001", weight=170, cost=1000, amount=1, payment={"value": 0})
print(item.model_dump_json())

Все модели используют extra="allow" для forward compatibility — неизвестные поля API не вызывают ошибок.

Полный список моделей: models.py


Переменные окружения

Переменная

Обязательная

По умолчанию

Описание

CDEK_CLIENT

да

—

Client ID из личного кабинета СДЭК

CDEK_SECRET

да

—

Client Secret из личного кабинета СДЭК

CDEK_SENDER_COMPANY

нет

—

Название компании отправителя

CDEK_SENDER_NAME

нет

—

Краткое имя отправителя

CDEK_SENDER_FULL_NAME

нет

—

Полное ФИО отправителя

CDEK_SENDER_EMAIL

нет

—

Email отправителя

CDEK_SENDER_PHONE

нет

—

Телефон отправителя

CDEK_MY_PVZ

нет

—

Код вашего ПВЗ (для приёма посылок "ко мне")

CDEK_DEFAULT_PRODUCT_NAME

нет

Товар

Название товара по умолчанию

CDEK_DEFAULT_WEIGHT

нет

0.17

Вес по умолчанию в кг

CDEK_DEFAULT_HEIGHT

нет

8

Высота по умолчанию в см

CDEK_DEFAULT_WIDTH

нет

7

Ширина по умолчанию в см

CDEK_DEFAULT_LENGTH

нет

10

Длина по умолчанию в см

CDEK_TIMEOUT

нет

30

Таймаут HTTP-запросов к API (секунды)

CDEK_FILE_TIMEOUT

нет

60

Таймаут скачивания файлов (секунды)

Настройки отправителя можно также задать через config_set — env vars имеют приоритет над конфиг-файлом.

Разработка

pip install -e ".[test]"
ruff check src/ tests/
pytest tests/ -v

Лицензия

MIT

Available Tools

49 tools
cdek_all_tariffsA

Список доступных тарифов (GET /v2/calculator/alltariffs).

Возвращает все доступные и актуальные тарифы по договору.

Args: lang: Language — "rus", "eng" or "zho" (default "rus")

Inputs: lang. Returns: result

cdek_barcodeA

Формирование и скачивание ШК-места (POST /v2/print/barcodes).

Формирует ШК-место в формате PDF для заказа и сохраняет файл.

Args: cdek_number: CDEK tracking number output_path: Absolute path to save PDF (e.g. /tmp/1234567890.pdf)

Inputs: cdek_number (required), output_path (required). Returns: result

cdek_calculate_tariffA

Расчет по коду тарифа (POST /v2/calculator/tariff).

Расчет стоимости и сроков доставки по конкретному тарифу с учетом весо-габаритных характеристик.

Args: tariff_code: CDEK tariff code (e.g. 136 warehouse-warehouse, 137 warehouse-door) from_city: Sender city name (e.g. "Москва") to_city: Recipient city name (e.g. "Новосибирск") weight_kg: Package weight in kg length: Package length in cm (default 10) width: Package width in cm (default 10) height: Package height in cm (default 10)

Inputs: to_city (required), from_city (required), weight_kg (required), tariff_code (required), +3 more. Returns: result

cdek_calculate_tariff_and_serviceC

Расчет по доступным тарифам и дополнительным услугам (POST /v2/calculator/tariffAndService).

Расчет стоимости и сроков доставки по доступным тарифам с учетом дополнительных услуг.

Args: from_city: Sender city name to_city: Recipient city name weight_kg: Package weight in kg length: Package length in cm (default 10) width: Package width in cm (default 10) height: Package height in cm (default 10)

Inputs: to_city (required), from_city (required), weight_kg (required), width, +2 more. Returns: result

cdek_calculate_tarifflistB

Расчет по доступным тарифам (POST /v2/calculator/tarifflist).

Расчет стоимости и сроков доставки по всем доступным тарифам между двумя городами.

Args: from_city: Sender city name to_city: Recipient city name weight_kg: Package weight in kg length: Package length in cm (default 10) width: Package width in cm (default 10) height: Package height in cm (default 10)

Inputs: to_city (required), from_city (required), weight_kg (required), width, +2 more. Returns: result

cdek_checksA

Получение информации о чеках (GET /v2/check).

Информация о чеке по заказу или за выбранный день. Provide at least one filter: order_uuid, cdek_number, or date.

Args: order_uuid: Order UUID cdek_number: CDEK tracking number date: Date in YYYY-MM-DD format (дата создания чека)

Inputs: date, order_uuid, cdek_number. Returns: result

cdek_citiesA

Получение списка населенных пунктов (GET /v2/location/cities).

Возвращает коды городов СДЭК, необходимые для других операций.

Args: city: City name or part of it (e.g. "Новосиб")

Inputs: city (required). Returns: result

cdek_client_returnA

Регистрация клиентского возврата (POST /v2/orders/{uuid}/clientReturn).

Оформление возврата для интернет-магазинов. Создается только для заказов в конечном статусе "Вручен". Отличие от обычного возврата: возврат оформляет сам клиент.

Args: uuid: Order UUID (идентификатор прямого заказа) tariff_code: Tariff code for return delivery (e.g. 136)

Inputs: uuid (required), tariff_code (required). Returns: result

cdek_coordinatesA

Получение локации по координатам (GET /v2/location/coordinates).

Args: latitude: Latitude (e.g. 55.7558) longitude: Longitude (e.g. 37.6173)

Inputs: latitude (required), longitude (required). Returns: result

cdek_create_deliveryA

Регистрация договоренности о доставке (POST /v2/delivery).

Фиксирует оговоренные с клиентом дату и время доставки (приезда курьера), а также позволяет изменить адрес доставки.

At least one of cdek_number or order_uuid must be provided.

Args: date: Delivery date YYYY-MM-DD (согласованная с получателем) cdek_number: CDEK order number order_uuid: Order UUID (alternative to cdek_number) time_from: Delivery time from HH:MM (обязательно для "до двери") time_to: Delivery time to HH:MM (обязательно для "до двери") comment: Comment for delivery delivery_point: Delivery point code (обязательно для "до склада")

Inputs: date (required), comment, time_to, time_from, +3 more. Returns: result

cdek_create_intakeA

Регистрация заявки на вызов курьера (POST /v2/intakes).

Вызов курьера для забора груза со склада с последующей доставкой до склада СДЭК. Рекомендуемый минимальный диапазон времени — не менее 3 часов.

At least one of cdek_number or order_uuid must be provided.

Args: intake_date: Pickup date YYYY-MM-DD (не более 31 дня от текущей) cdek_number: CDEK order number order_uuid: Order UUID (alternative to cdek_number) intake_time_from: Pickup time from HH:MM (default 09:00, не ранее 9:00) intake_time_to: Pickup time to HH:MM (default 18:00, не позднее 22:00) comment: Comment for the courier name: Cargo description

Inputs: intake_date (required), name, comment, order_uuid, +3 more. Returns: result

cdek_create_orderA

Регистрация заказа на доставку (POST /v2/orders).

Создает в ИС СДЭК заказ на доставку. Работает асинхронно — статус ACCEPTED не гарантирует создание, результат проверяется через методы получения информации.

Two directions:

  • "from_me": send from my warehouse/PVZ to recipient's PVZ (tariff 136) or door (tariff 137)

  • "to_me": receive from sender to my PVZ (returns, tariff 136). Requires my_pvz in config.

If product parameters are not specified, defaults from goods catalog or config are used.

Args: direction: "from_me" or "to_me" recipient_name: Recipient full name (получатель) recipient_phone: Phone in international format (e.g. "+79001234567") pvz: PVZ code (e.g. "MSK005") or address for PVZ search. For from_me warehouse delivery. address: Full delivery address for door delivery (from_me) or sender address (to_me) recipient_email: Email (optional) product_name: Product name (overrides defaults) weight: Weight per unit in kg (overrides defaults) height: Height in cm (overrides defaults) width: Width in cm (overrides defaults) length: Length in cm (overrides defaults) quantity: Number of items (default 1) price: Declared value per unit in rubles (overrides defaults)

Inputs: direction (required), recipient_name (required), recipient_phone (required), pvz, +9 more. Returns: result

cdek_create_prealertB

Регистрация преалерта (POST /v2/prealert).

Информирование СДЭК о намерении передать заказы на склад. Реестр заказов, которые клиент собирается передать.

Args: planned_date: Planned date YYYY-MM-DD (планируемая дата передачи) shipment_point: Shipment point code (код ПВЗ для передачи, e.g. "MSK005") cdek_numbers: Comma-separated CDEK numbers

Inputs: cdek_numbers (required), planned_date (required), shipment_point (required). Returns: result

cdek_create_webhookB

Добавление подписки на вебхуки (POST /v2/webhooks).

Типы: ORDER_STATUS, PRINT_FORM, PREALERT_CLOSED, ACCOMPANYING_WAYBILL, ORDER_CHANGED, DELIVERY_COST_CHANGED, DELIVERY_PROBLEM, DELIVERY_DATE_CHANGED, ORDER_MODE_CHANGED, COURIER_INFO.

Args: type: Webhook type (e.g. ORDER_STATUS, PRINT_FORM) url: URL to receive webhook events

Inputs: url (required), type (required). Returns: result

cdek_delete_intakeA

Удаление заявки на вызов курьера (DELETE /v2/intakes/{uuid}).

Заявку можно удалить в любом статусе, отличном от финального.

Args: uuid: Intake request UUID

Inputs: uuid (required). Returns: result

cdek_delete_orderA

Удаление заказа (DELETE /v2/orders/{uuid}).

Удаление возможно только при отсутствии движения груза на складе СДЭК (статус "Создан").

Args: uuid: Order UUID to delete

Inputs: uuid (required). Returns: result

cdek_delete_webhookA

Удаление подписки по UUID (DELETE /v2/webhooks/{uuid}).

Args: uuid: Webhook subscription UUID

Inputs: uuid (required). Returns: result

cdek_delivery_intervalsA

Получение интервалов доставки (GET /v2/delivery/intervals).

Возвращает доступные даты и временные интервалы для регистрации договоренности о доставке по уже созданному заказу.

At least one of cdek_number or order_uuid must be provided.

Args: cdek_number: CDEK order number order_uuid: Order UUID

Inputs: order_uuid, cdek_number. Returns: result

cdek_delivery_pointsA

Получение списка офисов СДЭК (GET /v2/deliverypoints).

Возвращает список действующих ПВЗ и постаматов в городе. Рекомендуется обновлять список офисов раз в сутки.

Args: city: City name (e.g. "Москва", "Санкт-Петербург") search: Optional address substring to filter (e.g. "Тверская")

Inputs: city (required), search. Returns: result

cdek_download_photosB

Скачивание готового архива с фото (GET /v2/photoDocument/{uuid}).

Скачивает архив с фото документов в zip-формате.

Args: uuid: Photo document request UUID output_path: Absolute path to save the zip archive

Inputs: uuid (required), output_path (required). Returns: result

cdek_estimated_intervalsB

Получение интервалов доставки до создания заказа (POST /v2/delivery/estimatedIntervals).

Позволяет получить доступные интервалы доставки "до двери" до создания заказа.

Args: to_city: Recipient city name from_city: Sender city name (e.g. "Москва") tariff_code: CDEK tariff code (default 136) date_time: Date-time ISO format (планируемая дата отправки) shipment_point: Shipment point code (для тарифов "от склада")

Inputs: to_city (required), date_time, from_city, tariff_code, +1 more. Returns: result

cdek_get_deliveryB

Получение информации о договоренности о доставке (GET /v2/delivery/{uuid}).

Args: uuid: Delivery UUID

Inputs: uuid (required). Returns: result

cdek_get_intakeA

Получение информации о заявке по UUID (GET /v2/intakes/{uuid}).

Args: uuid: Intake request UUID

Inputs: uuid (required). Returns: result

cdek_get_orderA

Получение информации о заказе по UUID (GET /v2/orders/{uuid}).

Возвращает детальную информацию о ранее созданном заказе по его идентификатору. Также позволяет получить информацию о заказах, созданных через другие каналы.

Args: uuid: Order UUID (идентификатор заказа в ИС СДЭК)

Inputs: uuid (required). Returns: result

cdek_get_order_by_im_numberA

Получение информации о заказе по номеру ИМ (GET /v2/orders?im_number=).

Возвращает информацию о заказе по номеру в информационной системе клиента.

Args: im_number: Order number in client's system (номер заказа в ИС Клиента)

Inputs: im_number (required). Returns: result

cdek_get_prealertA

Получение информации о преалерте (GET /v2/prealert/{uuid}).

Args: uuid: Prealert UUID

Inputs: uuid (required). Returns: result

cdek_get_webhookA

Получение информации о подписке по UUID (GET /v2/webhooks/{uuid}).

Args: uuid: Webhook subscription UUID

Inputs: uuid (required). Returns: result

cdek_intake_available_daysA

Получение дат вызова курьера для НП (POST /v2/intakes/availableDays).

Возвращает доступные даты для забора груза курьером со склада.

Args: city: City name (e.g. "Москва") date: До какого числа включительно получить дни (по умолчанию: сегодня + 2 недели)

Inputs: city (required), date. Returns: result

cdek_international_restrictionsA

Получение ограничений по международным заказам (POST /v2/international/package/restrictions).

Ограничения по направлению и тарифу для международного заказа.

Args: tariff_code: CDEK tariff code (0 to omit) from_city: Origin city name to_city: Destination city name

Inputs: to_city, from_city, tariff_code. Returns: result

cdek_labelB

Формирование и скачивание ШК-места с выбором формата (POST /v2/print/barcodes).

Формирует ШК-место в формате PDF с указанным размером и сохраняет файл.

Args: cdek_number: CDEK tracking number output_path: Absolute path to save PDF (e.g. /tmp/1234567890_label.pdf) format: Print format — A4 (4 per page), A5 (2 per page), A6 (default, ~70x120mm), A7 (small)

Inputs: cdek_number (required), output_path (required), format. Returns: result

cdek_list_webhooksA

Получение информации о подписках на вебхуки (GET /v2/webhooks).

Inputs: no named parameters. Returns: result

cdek_order_intakesC

Получение информации о всех заявках по заказу (GET /v2/orders/{uuid}/intakes).

Args: order_uuid: Order UUID

Inputs: order_uuid (required). Returns: result

cdek_order_refusalA

Регистрация отказа (POST /v2/orders/{uuid}/refusal).

Регистрация отказа от заказа и возврат в интернет-магазин. Заказ может быть отменен в любом статусе до "Вручен"/"Не вручен". Для статуса "Создан" рекомендуется использовать удаление заказа.

Args: uuid: Order UUID to refuse

Inputs: uuid (required). Returns: result

cdek_passportA

Получение информации о паспортных данных (GET /v2/passport).

Информация о готовности передавать заказы на таможню по международным заказам. Provide at least one of cdek_number, order_uuid, or client.

Args: cdek_number: CDEK tracking number order_uuid: Order UUID client: Client filter (если не передано — и по отправителю, и по получателю)

Inputs: client, order_uuid, cdek_number. Returns: result

cdek_postalcodesA

Получение почтовых индексов города (GET /v2/location/postalcodes).

Args: city_code: CDEK city code (use cdek_cities to find it)

Inputs: city_code (required). Returns: result

cdek_regionsA

Получение списка регионов (GET /v2/location/regions).

Возвращает детальную информацию о регионах с возможностью фильтрации по стране.

Args: country_codes: Country codes in ISO_3166-1_alpha-2 (e.g. "RU", "KZ"). Empty for all. size: Max number of results (default 5)

Inputs: size, country_codes. Returns: result

cdek_registriesB

Получение информации о реестрах наложенных платежей (GET /v2/registries).

Реестры НП, по которым клиенту был переведен наложенный платеж в заданную дату.

Args: date: Date in YYYY-MM-DD format

Inputs: date (required). Returns: result

cdek_request_photosA

Получение заказов с готовыми фото (POST /v2/photoDocument).

Возвращает перечень заказов со ссылками на готовые к скачиванию архивы с фото. Требуется подключенная фотоуслуга и настроенный фотопроект.

Provide at least one filter: date range (period_begin/period_end) or cdek_numbers.

Args: period_begin: Start date (YYYY-MM-DD) period_end: End date (YYYY-MM-DD) cdek_numbers: Comma-separated CDEK numbers (e.g. "1234567890,9876543210")

Inputs: period_end, cdek_numbers, period_begin. Returns: result

cdek_reverse_availabilityA

Проверка доступности реверса (POST /v2/reverse/availability).

Проверяет доступность обратной доставки до создания прямого заказа. При доступности возвращается пустой ответ с кодом 200.

Args: tariff_code: CDEK tariff code (e.g. 136) from_city: Sender city name to_city: Recipient city name shipment_point: Shipment point code (для тарифов "от склада") delivery_point: Delivery point code (для тарифов "до склада")

Inputs: tariff_code (required), to_city, from_city, delivery_point, +1 more. Returns: result

cdek_suggest_citiesA

Подбор локации по названию города (GET /v2/location/suggest/cities).

Возвращает подсказки по подбору населенного пункта по его наименованию.

Args: name: City name or prefix (e.g. "Моск") country_code: Country code in ISO_3166-1_alpha-2 (e.g. "RU"). Empty for all.

Inputs: name (required), country_code. Returns: result

cdek_trackB

Получение информации о заказе по номеру СДЭК (GET /v2/orders).

Возвращает статус заказа, историю статусов и детали доставки. Также позволяет получить информацию о заказах, созданных через ЛК и другие каналы.

Args: cdek_number: CDEK tracking number (e.g. 1234567890)

Inputs: cdek_number (required). Returns: result

cdek_update_intakeC

Изменение статуса заявки на вызов курьера (PATCH /v2/intakes).

Изменяет статус заявки на "Требует обработки" с дополнительными статусами.

Args: uuid: Intake request UUID status_code: New status code

Inputs: uuid (required), status_code (required). Returns: result

cdek_update_orderA

Изменение заказа (PATCH /v2/orders).

Изменение созданного ранее заказа. Возможно только при отсутствии движения груза на складе СДЭК (статус заказа "Создан").

At least one of uuid or cdek_number must be provided.

Args: uuid: Order UUID (идентификатор в ИС СДЭК) cdek_number: CDEK tracking number (alternative to uuid) comment: New comment for the order delivery_point: New delivery point code

Inputs: uuid, comment, cdek_number, delivery_point. Returns: result

cdek_waybillA

Формирование и скачивание квитанции к заказу (POST /v2/print/orders).

Формирует квитанцию (накладную) в формате PDF и сохраняет файл.

Args: cdek_number: CDEK tracking number output_path: Absolute path to save PDF (e.g. /tmp/1234567890_waybill.pdf)

Inputs: cdek_number (required), output_path (required). Returns: result

config_setA

Update a configuration value in ~/.config/mcp-server-cdek/config.json.

Args: section: Config section — "sender", "my_pvz", or "product_defaults" key: Setting key. For sender: company, name, full_name, email, phone. For product_defaults: name, weight, height, width, length. For my_pvz: ignored (pass any value). value: New value (numbers are auto-converted for product_defaults)

Inputs: key (required), value (required), section (required). Returns: result

config_showA

Show current CDEK server configuration (sender, PVZ, product defaults).

Reads from ~/.config/mcp-server-cdek/config.json. Does not show API credentials.

Inputs: no named parameters. Returns: result

goods_addA

Add a new good to local catalog.

Args: name: Product name (e.g. "Wi-Fi модем") weight: Weight per unit in kg (e.g. 0.17) height: Height in cm (e.g. 8) width: Width in cm (e.g. 7) length: Length in cm (e.g. 10) price: Declared value per unit in rubles (default 100.0)

Inputs: name (required), width (required), height (required), length (required), +2 more. Returns: result

goods_listA

List all goods from local catalog (~/.config/mcp-server-cdek/goods.json).

Returns JSON array of goods with name, weight (kg), height/width/length (cm), price.

Inputs: no named parameters. Returns: result

goods_removeA

Remove a good from local catalog by exact name.

Args: name: Exact product name to remove

Inputs: name (required). Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 49 tools

    Disambiguation4/5

    Most tools have distinct purposes, but cdek_barcode and cdek_label both print barcodes with only format difference, causing slight confusion. Similarly, cdek_calculate_tariff, cdek_calculate_tarifflist, and cdek_calculate_tariff_and_service overlap in function. Overall, boundaries are clear for the majority.

    Naming Consistency3/5

    CDEK operations consistently use 'cdek_verb_noun' pattern, but local tools (goods_list, goods_add, config_show) break the prefix convention, creating inconsistency. Some names like cdek_order_intakes or cdek_delivery_points use noun_noun instead of verb_noun.

    Tool Count2/5

    With 49 tools, the server attempts to cover the full CDEK API plus local catalog/configuration. This is excessive for an MCP server, overwhelming agents and making tool selection error-prone. A more focused subset (15-20) would be appropriate.

    Completeness4/5

    The tool set covers major CDEK operations: order lifecycle, tracking, printing, tariff calculation, intakes, deliveries, webhooks, and location services. Only minor gaps exist (e.g., missing order status history or some document types), but core workflows are well-supported.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables interaction with Shiprocket shipping services to check courier rates and delivery times, create and manage orders, ship packages, track shipments, and schedule pickups through natural language commands.
      6 npm
      29
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to track and manage deliveries by interacting with the Parcel delivery tracking API. Users can add new shipments, retrieve active delivery statuses, and look up carrier information through natural language.
      2
      MIT