{
  "markdown": "# MCP-сервер для МойСклад — 60 инструментов для ИИ-агента: товары, склад, заказы, финансы\n\nЕсли вы искали, как подключить МойСклад к Claude или другому ИИ-агенту, — этот сервер закрывает весь торгово-складской цикл через JSON API 1.2: каталог и цены, остатки по складам, контрагенты, заказы покупателей и поставщикам, отгрузки, приёмки, перемещения, инвентаризации, списания, возвраты, счета, платежи и касса, отчёты по прибыли и оборотам, аудит и вебхуки. Спрашиваете «сколько футболок свободно к продаже» или «какая маржа по каждому товару за август» — получаете таблицу с цифрами, а не выгрузку в Excel. Цены во всех инструментах в рублях (перевод в копейки, которых требует API МойСклад, сервер делает сам), лимит запросов соблюдается автоматически.\n\n[![npm](https://img.shields.io/npm/v/@theyahia/moysklad-mcp)](https://www.npmjs.com/package/@theyahia/moysklad-mcp)\n[![license](https://img.shields.io/npm/l/@theyahia/moysklad-mcp)](./LICENSE)\n\n![Демонстрация: вопрос «сколько футболок на складе и сколько из них в резерве» — агент вызывает get_stock и отвечает таблицей остатков и резервов](https://raw.githubusercontent.com/theYahia/WWmcp/main/servers/moysklad/assets/demo.svg)\n\nЧасть **[WWmcp](https://github.com/theYahia/WWmcp)** — набора MCP-серверов для развивающихся рынков.\n\n## Быстрый старт\n\n### Claude Desktop\n\nДобавьте в `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"moysklad\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/moysklad-mcp\"],\n      \"env\": {\n        \"MOYSKLAD_TOKEN\": \"your-bearer-token\"\n      }\n    }\n  }\n}\n```\n\nЧтобы использовать логин и пароль вместо токена, замените блок `env` на:\n\n```json\n\"env\": { \"MOYSKLAD_LOGIN\": \"you@example.com\", \"MOYSKLAD_PASSWORD\": \"your-password\" }\n```\n\n### Claude Code\n\n```bash\nclaude mcp add moysklad --env MOYSKLAD_TOKEN=your-bearer-token -- npx -y @theyahia/moysklad-mcp\n```\n\n### Cursor / Windsurf\n\nДобавьте в настройки MCP:\n\n```json\n{\n  \"moysklad\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@theyahia/moysklad-mcp\"],\n    \"env\": { \"MOYSKLAD_TOKEN\": \"your-bearer-token\" }\n  }\n}\n```\n\n## Авторизация\n\n| Переменная                             | Описание                    |\n| -------------------------------------- | --------------------------- |\n| `MOYSKLAD_TOKEN`                       | Bearer-токен (предпочтительно) |\n| `MOYSKLAD_LOGIN` + `MOYSKLAD_PASSWORD` | HTTP Basic-авторизация      |\n\nТокен выдаётся в МоёмСкладе: **Настройки → Пользователи → Токены доступа** (также работает `POST /security/token` с Basic-авторизацией). Генерация нового токена отзывает предыдущий.\n\n**Нужные права:** у пользователя или токена должен быть доступ к тем сущностям, с которыми вы работаете. Читающим инструментам нужны права просмотра, создающим и изменяющим — права редактирования соответствующего типа документов. Вебхуки и часть отчётов требуют платного тарифа МойСклад.\n\n## Цены\n\nAPI МойСклад хранит деньги в **копейках** (1 рубль = 100 копеек). Сервер конвертирует автоматически:\n\n- **На вход**: передавайте цены и суммы **в рублях** (например, `1500.50`)\n- **На выход**: цены и суммы возвращаются **в рублях**\n- (Отчёт `get_dashboard` проксируется как есть, поэтому денежные значения в нём остаются в копейках.)\n\nЕсли у товара есть цена продажи, МойСклад требует **тип цены**. Сервер сам подставляет тип цены по умолчанию из вашего аккаунта (берёт из `list_price_types`); чтобы выбрать конкретный, передайте `price_type_href`.\n\n## Инструменты (60)\n\n### Товары и каталог\n\n| Инструмент                                               | Описание                                                     |\n| -------------------------------------------------------- | ------------------------------------------------------------ |\n| `search_products`                                        | Поиск товаров по названию или артикулу                       |\n| `get_product`                                            | Товар по UUID (`raw` — полный объект)                        |\n| `create_product`                                         | Создать товар (тип цены подставляется автоматически)         |\n| `update_prices`                                          | Обновить цены продажи, закупки и минимальную                 |\n| `search_assortment`                                      | Сквозной поиск по товарам, модификациям, услугам и комплектам |\n| `list_price_types`                                       | Типы цен (первый — по умолчанию)                             |\n| `search_variants` / `search_bundles` / `search_services` | Поиск модификаций / комплектов / услуг                        |\n| `create_service`                                         | Создать услугу                                               |\n\n### Остатки\n\n| Инструмент           | Описание                                        |\n| -------------------- | ----------------------------------------------- |\n| `get_stock`          | Текущие остатки (количество, резерв, в пути)    |\n| `get_stock_by_store` | Остатки в разрезе складов                       |\n| `get_stock_current`  | Быстрый срез текущих остатков                   |\n\n### Контрагенты\n\n| Инструмент            | Описание                                    |\n| --------------------- | ------------------------------------------- |\n| `get_counterparties`  | Поиск по названию, ИНН или телефону         |\n| `get_counterparty`    | Полная карточка (`raw` — полный объект)     |\n| `create_counterparty` | Создать покупателя или поставщика           |\n\n### Заказы и отгрузки\n\n| Инструмент                                                                                     | Описание                                            |\n| ---------------------------------------------------------------------------------------------- | --------------------------------------------------- |\n| `create_customer_order` / `get_orders` / `get_customer_order` / `update_customer_order_status` | Жизненный цикл заказа покупателя                    |\n| `create_purchase_order` / `get_purchase_orders`                                                | Заказы поставщикам                                  |\n| `create_demand`                                                                                | Отгрузка, привязанная к заказу и складу             |\n| `create_supply`                                                                                | Приёмка (поступление от поставщика)                 |\n| `create_sales_return` / `create_purchase_return`                                               | Возвраты от покупателей и поставщикам               |\n\n### Складские документы\n\n| Инструмент                             | Описание                        |\n| -------------------------------------- | ------------------------------- |\n| `create_move` / `get_moves`            | Перемещение между складами      |\n| `create_enter` / `get_enters`          | Оприходование                   |\n| `create_loss` / `get_losses`           | Списание                        |\n| `create_inventory` / `get_inventories` | Инвентаризация                  |\n\n### Финансы\n\n| Инструмент                                                      | Описание                             |\n| --------------------------------------------------------------- | ------------------------------------ |\n| `create_payment_in` / `create_payment_out`                      | Входящие и исходящие банковские платежи |\n| `create_cash_in` / `create_cash_out`                            | Приходные и расходные кассовые ордера |\n| `create_invoice_out` / `create_invoice_in` / `get_invoices_out` | Счета покупателям и от поставщиков   |\n\n### Отчёты\n\n| Инструмент          | Описание                                        |\n| ------------------- | ----------------------------------------------- |\n| `get_profit_report` | Прибыль по товарам (выручка, себестоимость, маржа) |\n| `get_sales_report`  | Продажи по товарам (количество, выручка)        |\n| `get_dashboard`     | Показатели дашборда за день, неделю, месяц      |\n| `get_turnover`      | Оборачиваемость товаров за период               |\n| `get_money_report`  | Текущие остатки денег по счетам и кассам        |\n\n### Справочники и аудит\n\n| Инструмент                                                    | Описание                                                              |\n| ------------------------------------------------------------- | --------------------------------------------------------------------- |\n| `list_stores` / `list_organizations`                          | Склады и юрлица                                                       |\n| `list_employees` / `list_currencies` / `list_product_folders` | Справочные данные                                                     |\n| `get_metadata`                                                | Метаданные сущностей (статусы, атрибуты) — здесь берутся href статусов заказа |\n| `get_audit` / `get_entity_audit`                              | Журнал событий аккаунта и история одной сущности                      |\n\n### Вебхуки и универсальные инструменты\n\n| Инструмент                                                               | Описание                                                    |\n| ------------------------------------------------------------------------ | ----------------------------------------------------------- |\n| `list_webhooks` / `create_webhook` / `update_webhook` / `delete_webhook` | Управление вебхуками (CREATE/UPDATE/DELETE/PROCESSED)       |\n| `get_documents` / `get_document`                                         | Универсальные список и получение для любого типа сущностей, не покрытого выше |\n\n## HTTP-транспорт\n\n```bash\nHTTP_PORT=3000 npx @theyahia/moysklad-mcp\n# или\nnpx @theyahia/moysklad-mcp --http 3000\n```\n\nЭндпоинты: `POST /mcp` (JSON-RPC), `GET /health` (статус). CORS **выключен по умолчанию** — HTTP-эндпоинт действует от имени вашего токена МойСклад, поэтому задавайте `MOYSKLAD_HTTP_CORS_ORIGIN` только если доверенному браузерному origin это действительно нужно.\n\n## Конфигурация (переменные окружения)\n\n| Переменная                             | По умолчанию | Описание                                            |\n| -------------------------------------- | ------- | ---------------------------------------------------- |\n| `MOYSKLAD_TOKEN`                       | —       | Bearer-токен                                         |\n| `MOYSKLAD_LOGIN` / `MOYSKLAD_PASSWORD` | —       | Basic-авторизация                                    |\n| `MOYSKLAD_RATE_BUCKET`                 | `20`    | Сколько запросов разрешено в трёхсекундном окне      |\n| `MOYSKLAD_MAX_CONCURRENT`              | `5`     | Максимум параллельных запросов (МойСклад допускает 5 на пользователя) |\n| `MOYSKLAD_HTTP_CORS_ORIGIN`            | —       | Разрешённый CORS-origin для HTTP-транспорта          |\n| `HTTP_PORT`                            | —       | Запустить транспорт Streamable HTTP на этом порту    |\n\n## Ограничение частоты запросов\n\nМойСклад считает «вес за 3 секунды» (≈45 единиц для токена решения, меньше для логина с паролем; отчёты `get_stock` и `get_stock_by_store` стоят по 5 единиц каждый). Встроенный лимитер — token bucket, который списывается по весу запроса, и по умолчанию он **консервативен** (`MOYSKLAD_RATE_BUCKET=20`), потому что API может временно отключить доступ после серии `429`. Повторы на `429`/`5xx` идут с задержкой и учитывают заголовок `X-Lognex-Retry-After`. С токеном решения корзину можно поднять ближе к 45.\n\n## Решение проблем\n\n| Симптом                      | Причина и что делать                                                                                                                                   |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `Auth not configured`        | Задайте `MOYSKLAD_TOKEN` (или `MOYSKLAD_LOGIN` + `MOYSKLAD_PASSWORD`).                                                                                 |\n| `auth error 401/403`         | Токен недействителен или истёк, либо у пользователя нет прав на сущность. Новый токен отзывает старые.                                                  |\n| `MoySklad HTTP 412 …`        | Не хватает обязательного поля (например, исходящему платежу может требоваться статья расходов — передайте `expense_item_href`). Параметр указан в тексте ошибки. |\n| Много `429` / медленно       | Снизьте объём запросов или положитесь на встроенный лимитер; поднимайте `MOYSKLAD_RATE_BUCKET` только с токеном решения.                                |\n| `HTTP 415`                   | Среда выполнения не отправляет gzip — используйте Node ≥18 (его `fetch` делает gzip автоматически).                                                     |\n| Вебхуки и часть отчётов не работают | Требуют платного тарифа МойСклад.                                                                                                                |\n\n## E-commerce-стек\n\n| Сервис   | MCP-сервер               | Что делает                  |\n| -------- | ------------------------ | --------------------------- |\n| МойСклад | `@theyahia/moysklad-mcp` | Склад, товары, заказы       |\n| СДЭК     | `@theyahia/cdek-mcp`     | Доставка, трекинг           |\n| DaData   | `@theyahia/dadata-mcp`   | Проверка адресов            |\n| ЮKassa   | `@theyahia/yookassa-mcp` | Платежи                     |\n\n## Демо-промпты\n\n> «Покажи все товары с низким остатком (меньше 10 штук) и их текущие цены»\n\n> «Создай заказ покупателя для контрагента „ООО Рога и Копыта“ на 50 штук „Widget Pro“ по 1500 рублей, потом сделай отгрузку с основного склада»\n\n> «Перемести 20 штук SKU LP15 с основного склада в магазин, затем подними отчёт по прибыли за этот месяц»\n\n## Разработка\n\n```bash\nnpm install        # зависимости + git-хуки (husky)\nnpm run build      # tsc -> dist/\nnpm run lint       # eslint\nnpm run typecheck  # tsc --noEmit\nnpm test           # vitest (требуется Node >=20)\nnpm run coverage   # vitest с покрытием\n```\n\nОпубликованный рантайм поддерживает **Node ≥18**; тестовая оснастка требует **Node ≥20**.\n\n## Справочник API\n\nОснован на [JSON API 1.2 МойСклад](https://dev.moysklad.ru/doc/api/remap/1.2/).\n\n## Лицензия\n\nMIT\n\n---\n\nЧасть [WWmcp](https://github.com/theYahia/WWmcp) · Telegram: [@vhodvai](https://t.me/vhodvai)\n",
  "bytes": 14355,
  "sha": "b43004853983987f681761f3970907a0e95714a7ae392b60f5bec86af485da08",
  "repo_slug": "theyahia/moysklad-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_theyahia_moysklad_mcp_fbae1ca3/readme"
}