Connects Claude to Russia's Честный ЗНАК (Chestniy ZNAK) product marking verification system. Three public tools work without auth: check_marking_code validates authenticity, get_product_info pulls manufacturer and brand details, and check_batch handles up to 50 codes at once. Add a CHESTNYZNAK_TOKEN to unlock search_products and get_cis_info for deeper queries against the authorized API. Useful if you're building compliance tools, retail verification workflows, or consumer protection features that need to validate Russian product marking codes. Part of a 50-server Russian API series. Public endpoint hits mobile.api.crpt.ru, authenticated calls go to markirovka.crpt.ru.
MCP-сервер для API «Честный ЗНАК» / ЦРПТ — проверка маркировки товаров. 5 инструментов. Публичные проверки без авторизации, информация из True API с токеном.
Часть серии Russian API MCP (50 серверов) by @theYahia.
{
"mcpServers": {
"chestnyznak": {
"command": "npx",
"args": ["-y", "@theyahia/chestnyznak-mcp"]
}
}
}
{
"mcpServers": {
"chestnyznak": {
"command": "npx",
"args": ["-y", "@theyahia/chestnyznak-mcp"],
"env": {
"CHESTNYZNAK_TOKEN": "ваш-токен"
}
}
}
}
claude mcp add chestnyznak -- npx -y @theyahia/chestnyznak-mcp
# С авторизацией
CHESTNYZNAK_TOKEN=ваш-токен claude mcp add chestnyznak -- npx -y @theyahia/chestnyznak-mcp
npx @theyahia/chestnyznak-mcp --http --port=3000
# Endpoint: POST http://127.0.0.1:3000/mcp
# Health: GET http://127.0.0.1:3000/health
По умолчанию HTTP-сервер слушает только 127.0.0.1 и проверяет заголовок Host
(защита от DNS-rebinding). Чтобы открыть наружу — --host=0.0.0.0 (на свой риск,
аутентификации на /mcp нет).
| Переменная | Обязательна | Описание |
|---|---|---|
CHESTNYZNAK_TOKEN | Нет | Токен True API для инструментов search_products, get_cis_info. См. «Авторизация». |
CHESTNYZNAK_BASE_URL | Нет | Origin авторизованного API (по умолчанию https://markirovka.crpt.ru). Допускаются только https хосты *.crpt.ru / *.crptech.ru. |
CHESTNYZNAK_PUBLIC_BASE_URL | Нет | Базовый URL публичного API (по умолчанию https://mobile.api.crpt.ru/mobile). Удобно для моков в тестах. |
| Инструмент | Аргументы | Описание |
|---|---|---|
check_marking_code | code, codeType? | Проверка подлинности по коду маркировки |
get_product_info | code, codeType? | Подробная информация: название, группа, производитель, владелец |
check_batch | codes[], codeType? | Пакетная проверка до 50 кодов (параллелизм ограничен) |
codeType — datamatrix (по умолчанию), qr или ean13.
| Инструмент | Аргументы | Описание |
|---|---|---|
search_products | query (GTIN) | Информация о товаре по GTIN из True API |
get_cis_info | cis | Информация о CIS (коде идентификации) из True API |
Поиск по названию/бренду — это Национальный каталог (
nk.crpt.ru), отдельный API; здесь не поддерживается.search_productsработает по GTIN.
check_marking_code:
{ "code": "0104600702028445", "found": true, "valid": true, "status": "INTRODUCED" }
get_product_info (поля producer/owner/status берутся из вложенного объекта группы товара, при отсутствии — null):
{
"code": "0104600702028445",
"found": true,
"valid": true,
"status": "INTRODUCED",
"productName": "Молоко 3.2%",
"category": "milk",
"producerName": "АО \"Данон Россия\"",
"ownerName": "ООО Магнит",
"ownerInn": "2309085638"
}
status — строковый enum: EMITTED / APPLIED / INTRODUCED / RETIRED / WRITTEN_OFF / DISAGGREGATION и др.
Каждый инструмент дополнительно возвращает structuredContent (типизированный объект по outputSchema), помимо текстового JSON.
Проверь код маркировки 0104600702028445
Расскажи подробнее о товаре с кодом 010460070202844521
Проверь пачку кодов: 0104600702028445, 0104600702028446
Информация о товаре с GTIN 04600702028445
Информация о CIS 0104600702028445
⚠️ Важно: у True API (ГИС МТ) нет статичного «вечного» токена. Токен получают по схеме «запрос-подпись» сертификатом УКЭП (ГОСТ):
GET /api/v3/true-api/auth/key → { uuid, data }data сертификатом УКЭП (CAdES-BES, base64).POST /api/v3/true-api/auth/simpleSignIn { uuid, data: <подпись> } → токен.Этот сервер использует CHESTNYZNAK_TOKEN как уже полученный таким образом токен
(он отправляется как Authorization: Bearer). Подпись УКЭП выполняется вне сервера
(например, через КриптоПро) — встроенного ГОСТ-подписания здесь нет. Регистрация
доступна юрлицам/ИП на markirovka.crpt.ru.
Эндпоинты/методы авторизованной части (пути, тело запроса) выверены по официальной документации и открытым клиентам, но не проверены против живого токена из-за требования УКЭП. Если ЦРПТ изменит контракт — поправьте через
CHESTNYZNAK_BASE_URL.
| Skill | Триггер |
|---|---|
skill-check-product | «Проверь маркировку товара по коду» |
skill-search | «Найди товар по GTIN» |
| Симптом | Причина / решение |
|---|---|
CHESTNYZNAK_TOKEN не задан | Инструменты search_products/get_cis_info требуют токен (см. «Авторизация»). |
таймаут запроса / все попытки исчерпаны | Сеть/недоступность API; сервер делает до 3 попыток с backoff. Публичный API может не отвечать с не-РФ IP. |
HTTP 401 / HTTP 403 | Токен невалиден или истёк (~10ч) — получите заново. |
HTTP 429 | Рейт-лимит; сервер повторяет автоматически. Для batch уменьшите размер пачки. |
CHESTNYZNAK_BASE_URL отклонён | Override должен быть https и хостом *.crpt.ru/*.crptech.ru. |
GET https://mobile.api.crpt.ru/mobile/check?code=<код>&codeType=<тип> — недокументированный эндпоинт мобильного приложения.https://markirovka.crpt.ru/api/v3/true-api/... — True API (ГИС МТ).npm ci
npm run typecheck # tsc --noEmit (src + tests)
npm test # vitest
npm run build # tsc -> dist/
npm run dev # tsx watch (stdio)
npm run dev:http # tsx watch (HTTP)
MIT
API_KEY*secretAPI key for the service