Skip to main content
Glama
omotsart

rekvizit-mcp-

by omotsart
README.md
<div align="center">

# rekvizit-mcp-

![mcp](https://img.shields.io/badge/mcp-8A2BE2?style=flat-square)
![model-context-protocol](https://img.shields.io/badge/model--context--protocol-1E90FF?style=flat-square)
![python](https://img.shields.io/badge/python-3776AB?style=flat-square&logo=python&logoColor=white)
![fintech](https://img.shields.io/badge/fintech-2E8B57?style=flat-square)
![validation](https://img.shields.io/badge/validation-FF8C00?style=flat-square)
![legaltech](https://img.shields.io/badge/legaltech-008080?style=flat-square)
![inn](https://img.shields.io/badge/inn-DC143C?style=flat-square)
![ogrn](https://img.shields.io/badge/ogrn-6A5ACD?style=flat-square)

</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

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues