{
  "markdown": "# MCP-сервер для Честного Знака — проверка маркировки товаров через ИИ\n\nЕсли вы искали, как проверить код маркировки Честного Знака не заходя в личный кабинет, подключить True API ЦРПТ к нейросети или узнать статус товара прямо в чате — это оно. 5 инструментов: публичные проверки кодов работают сразу, без регистрации и токена; данные True API — по токену. Присылаете код DataMatrix — получаете статус, владельца и историю вместо вкладки с формой.\n\n[![npm](https://img.shields.io/npm/v/@theyahia/chestnyznak-mcp)](https://www.npmjs.com/package/@theyahia/chestnyznak-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nЧасть серии [WWmcp](https://github.com/theYahia/WWmcp) (46 серверов) by [@theYahia](https://github.com/theYahia).\n\n## Установка\n\n### Claude Desktop\n```json\n{\n  \"mcpServers\": {\n    \"chestnyznak\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/chestnyznak-mcp\"]\n    }\n  }\n}\n```\n\n### Claude Desktop (с авторизацией)\n```json\n{\n  \"mcpServers\": {\n    \"chestnyznak\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/chestnyznak-mcp\"],\n      \"env\": {\n        \"CHESTNYZNAK_TOKEN\": \"ваш-токен\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n```bash\nclaude mcp add chestnyznak -- npx -y @theyahia/chestnyznak-mcp\n\n# С авторизацией\nCHESTNYZNAK_TOKEN=ваш-токен claude mcp add chestnyznak -- npx -y @theyahia/chestnyznak-mcp\n```\n\n### Streamable HTTP\n```bash\nnpx @theyahia/chestnyznak-mcp --http --port=3000\n# Endpoint: POST http://127.0.0.1:3000/mcp\n# Health:   GET  http://127.0.0.1:3000/health\n```\n\nПо умолчанию HTTP-сервер слушает только `127.0.0.1` и проверяет заголовок `Host`\n(защита от DNS-rebinding). Чтобы открыть наружу — `--host=0.0.0.0` (на свой риск,\nаутентификации на `/mcp` нет).\n\n## Переменные окружения\n\n| Переменная | Обязательна | Описание |\n|-----------|-------------|----------|\n| `CHESTNYZNAK_TOKEN` | Нет | Токен True API для инструментов `search_products`, `get_cis_info`. См. «Авторизация». |\n| `CHESTNYZNAK_BASE_URL` | Нет | Origin авторизованного API (по умолчанию `https://markirovka.crpt.ru`). Допускаются только `https` хосты `*.crpt.ru` / `*.crptech.ru`. |\n| `CHESTNYZNAK_PUBLIC_BASE_URL` | Нет | Базовый URL публичного API (по умолчанию `https://mobile.api.crpt.ru/mobile`). Удобно для моков в тестах. |\n\n## Инструменты (5)\n\n### Публичные (без авторизации)\n\n| Инструмент | Аргументы | Описание |\n|------------|-----------|----------|\n| `check_marking_code` | `code`, `codeType?` | Проверка подлинности по коду маркировки |\n| `get_product_info` | `code`, `codeType?` | Подробная информация: название, группа, производитель, владелец |\n| `check_batch` | `codes[]`, `codeType?` | Пакетная проверка до 50 кодов (параллелизм ограничен) |\n\n`codeType` — `datamatrix` (по умолчанию), `qr` или `ean13`.\n\n### Авторизованные (CHESTNYZNAK_TOKEN)\n\n| Инструмент | Аргументы | Описание |\n|------------|-----------|----------|\n| `search_products` | `query` (GTIN) | Информация о товаре по GTIN из True API |\n| `get_cis_info` | `cis` | Информация о CIS (коде идентификации) из True API |\n\n> Поиск по названию/бренду — это Национальный каталог (`nk.crpt.ru`), отдельный API; здесь не поддерживается. `search_products` работает по GTIN.\n\n## Формат ответа\n\n`check_marking_code`:\n```json\n{ \"code\": \"0104600702028445\", \"found\": true, \"valid\": true, \"status\": \"INTRODUCED\" }\n```\n\n`get_product_info` (поля `producer`/`owner`/`status` берутся из вложенного объекта группы товара, при отсутствии — `null`):\n```json\n{\n  \"code\": \"0104600702028445\",\n  \"found\": true,\n  \"valid\": true,\n  \"status\": \"INTRODUCED\",\n  \"productName\": \"Молоко 3.2%\",\n  \"category\": \"milk\",\n  \"producerName\": \"АО \\\"Данон Россия\\\"\",\n  \"ownerName\": \"ООО Магнит\",\n  \"ownerInn\": \"2309085638\"\n}\n```\n\n`status` — строковый enum: `EMITTED` / `APPLIED` / `INTRODUCED` / `RETIRED` / `WRITTEN_OFF` / `DISAGGREGATION` и др.\n\nКаждый инструмент дополнительно возвращает `structuredContent` (типизированный объект по `outputSchema`), помимо текстового JSON.\n\n## Примеры\n```\nПроверь код маркировки 0104600702028445\nРасскажи подробнее о товаре с кодом 010460070202844521\nПроверь пачку кодов: 0104600702028445, 0104600702028446\nИнформация о товаре с GTIN 04600702028445\nИнформация о CIS 0104600702028445\n```\n\n## Авторизация (True API)\n\n⚠️ Важно: у True API (ГИС МТ) **нет статичного «вечного» токена**. Токен получают по\nсхеме «запрос-подпись» сертификатом УКЭП (ГОСТ):\n\n1. `GET /api/v3/true-api/auth/key` → `{ uuid, data }`\n2. Подписать `data` сертификатом УКЭП (CAdES-BES, base64).\n3. `POST /api/v3/true-api/auth/simpleSignIn` `{ uuid, data: <подпись> }` → токен.\n4. Срок жизни токена — **не более ~10 часов**, далее повторная авторизация.\n\nЭтот сервер использует `CHESTNYZNAK_TOKEN` как **уже полученный** таким образом токен\n(он отправляется как `Authorization: Bearer`). Подпись УКЭП выполняется вне сервера\n(например, через КриптоПро) — встроенного ГОСТ-подписания здесь нет. Регистрация\nдоступна юрлицам/ИП на [markirovka.crpt.ru](https://markirovka.crpt.ru).\n\n> Эндпоинты/методы авторизованной части (пути, тело запроса) выверены по официальной\n> документации и открытым клиентам, но **не проверены против живого токена** из-за\n> требования УКЭП. Если ЦРПТ изменит контракт — поправьте через `CHESTNYZNAK_BASE_URL`.\n\n## Skills\n\n| Skill | Триггер |\n|-------|---------|\n| `skill-check-product` | «Проверь маркировку товара по коду» |\n| `skill-search` | «Найди товар по GTIN» |\n\n## Troubleshooting\n\n| Симптом | Причина / решение |\n|---|---|\n| `CHESTNYZNAK_TOKEN не задан` | Инструменты `search_products`/`get_cis_info` требуют токен (см. «Авторизация»). |\n| `таймаут запроса` / `все попытки исчерпаны` | Сеть/недоступность API; сервер делает до 3 попыток с backoff. Публичный API может не отвечать с не-РФ IP. |\n| `HTTP 401` / `HTTP 403` | Токен невалиден или истёк (~10ч) — получите заново. |\n| `HTTP 429` | Рейт-лимит; сервер повторяет автоматически. Для batch уменьшите размер пачки. |\n| `CHESTNYZNAK_BASE_URL отклонён` | Override должен быть `https` и хостом `*.crpt.ru`/`*.crptech.ru`. |\n\n## API\n\n- **Публичный (без авторизации):** `GET https://mobile.api.crpt.ru/mobile/check?code=<код>&codeType=<тип>` — недокументированный эндпоинт мобильного приложения.\n- **Авторизованный (Bearer):** `https://markirovka.crpt.ru/api/v3/true-api/...` — True API (ГИС МТ).\n\n## Разработка\n\n```bash\nnpm ci\nnpm run typecheck   # tsc --noEmit (src + tests)\nnpm test            # vitest\nnpm run build       # tsc -> dist/\nnpm run dev         # tsx watch (stdio)\nnpm run dev:http    # tsx watch (HTTP)\n```\n\n## Лицензия\nMIT\n\n---\n\nЧасть [WWmcp](https://github.com/theYahia/WWmcp) · Telegram: [@vhodvai](https://t.me/vhodvai)\n",
  "bytes": 6652,
  "sha": "9038b2547326fb73e2b81b369e1858de2271b4bfb35ddb852fdbb210d0340f16",
  "repo_slug": "theyahia/chestnyznak-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_theyahia_chestnyznak_mcp_57833c6d/readme"
}