rekvizit-mcp-
<div align="center">
# rekvizit-mcp-








</div>
MCP-сервер для работы с российскими реквизитами. Пять инструментов: детерминированная валидация по контрольным суммам, извлечение реквизитов из произвольного текста и карточка контрагента по ИНН.
Зачем это ассистенту: языковые модели уверенно «проверяют» ИНН на глаз и ошибаются. Контрольные суммы считаются точно или никак — это ровно тот класс задач, который надо выносить в инструменты.
## Инструменты
| Инструмент | Что делает |
|---|---|
| `validate_inn` | ИНН 10/12 знаков, контрольные разряды по приказу ФНС, определение юрлицо/физлицо |
| `validate_ogrn` | ОГРН (mod 11) и ОГРНИП (mod 13), разбор года и региона из номера |
| `validate_bank_account` | Расчётный/корреспондентский счёт против БИК (веса 7-1-3, mod 10) |
| `parse_requisites` | Извлечение всех реквизитов из текста договора/письма с перекрёстной проверкой (счета сверяются с найденными БИК) |
| `check_counterparty` | Карточка контрагента через DaData: статус, банкротство, руководитель, адрес |
Четыре инструмента работают полностью офлайн. Единственный внешний вызов — `check_counterparty`; наружу уходит только ИНН.
Особенность `parse_requisites`: кандидат попадает в выдачу, только если сошлась контрольная сумма или рядом стоит текстовая метка («ИНН», «БИК»…). Номер договора из 10 цифр не будет объявлен ИНН, а БИК не притворится КПП — на это есть регрессионные тесты.
## Установка и подключение
```bash
git clone https://github.com/omotsart/rekvizit-mcp-.git && cd rekvizit-mcp-
pip install -e .
```
Фрагмент конфигурации MCP-клиента (Claude Desktop, Cursor и др. — точное расположение конфига смотрите в документации вашего клиента, для Claude Desktop это `claude_desktop_config.json`, обычно `%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"legal-requisites": {
"command": "python",
"args": ["-m", "legal_mcp.server"],
"env": { "DADATA_API_KEY": "ваш_ключ" }
}
}
}
```
`pip install -e .` создаёт и короткую команду `rekvizit-mcp` (можно указать её как `"command": "rekvizit-mcp"`), но на Windows каталог `Scripts` часто не в `PATH` — запуск через `python -m legal_mcp.server` надёжнее.
`DADATA_API_KEY` нужен только для `check_counterparty` (бесплатный ключ выдаёт dadata.ru); остальные четыре инструмента работают полностью офлайн.
## Проверка
```bash
pip install -e ".[dev]"
pytest # 22 теста контрольных сумм на публичных реквизитах госорганов
```
Проверить весь путь через MCP-протокол (поднять сервер по stdio и вызвать инструменты, как это делает клиент) можно демо-скриптом:
```bash
python demo_client.py
```
Он запускает сервер как подпроцесс, перечисляет инструменты и вызывает `validate_inn`, `validate_ogrn`, `parse_requisites` на публичном ИНН — удобно как smoke-тест интеграции и как пример клиента на `mcp.ClientSession`.
Совместимость: написано под MCP Python SDK **2.x** (`MCPServer`); в 1.x тот же класс назывался `FastMCP` — большинство туториалов в сети ещё про него.
## Лицензия
MIT
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: parsing/extraction, counterparty lookup, and standalone validation of INN, OGRN/OGRNIP, and bank account-BIK pairs. Even though parse_requisites performs some internal checks, it does not overlap with the dedicated validation tools.
All tool names follow a consistent snake_case verb_noun pattern: parse_requisites, check_counterparty, validate_inn, validate_ogrn, validate_bank_account. The validate_ prefix is used uniformly for all validation operations.
Five tools is well-scoped for the server's stated purpose of working with Russian business requisites. Each tool contributes a distinct capability: extraction, counterparty lookup, and validation of key identifiers.
The toolset covers extraction, counterparty status, and checksum validation for the most important requisites. A minor gap is the lack of standalone validation for KPP and BIK, though parse_requisites does surface these fields and account validation requires a BIK.