Skip to main content
Glama
erwanpaccard

irpp-mcp

by erwanpaccard

🧮 irpp-mcp — Официальный симулятор IRPP от DGFiP

Python-сервер MCP, который рассчитывает французский подоходный налог на основе официального исходного кода DGFiP, скомпилированного через Mlang (OCamlPro/DGFiP). 100% локальный расчет, ноль сетевых вызовов.

Охватываемые доходы: 2023 (декларация 2024). См. Ограничения.


Архитектура

Sources DGFiP (langage M)  →  Mlang (OCamlPro/DGFiP)  →  C (~55 Mo)  →  irpp_calc
                                                                           ↓
                                                                    irpp_mcp.py (MCP)
                                                                           ↓
                                                                      Claude Code

Related MCP server: itr-mcp

Ожидаемая структура каталогов

Перед началом создайте рабочую директорию. В конце установки структура будет выглядеть так:

~/impots/
├── calculette-ir-master/           ← sources DGFiP téléchargées (étape 1)
│   └── sources2023m_8_0/
├── mlang-src/                      ← compilateur Mlang cloné (étape 2)
│   ├── _build/default/src/main.exe
│   ├── m_ext/2023/
│   └── examples/dgfip_c/ml_primitif/c_driver/
│       └── irdata.c
├── output/                         ← C générés (étape 3) + binaire (étape 4)
│   ├── irpp_driver.c               ← fourni dans ce repo
│   ├── Makefile                    ← fourni dans ce repo
│   └── irpp_calc                   ← binaire compilé
└── irpp-mcp/                       ← ce repo (cloné en premier)
    └── irpp_mcp.py

Начните с клонирования этого репозитория:

mkdir ~/impots && cd ~/impots
git clone https://github.com/erwanpaccard/irpp-mcp.git

Быстрая установка (прекомпилированный бинарный файл)

Если вы используете Linux x86-64 или WSL (Ubuntu 22.04+), вы можете пропустить шаги 1–4 и загрузить прекомпилированный бинарный файл напрямую:

mkdir -p ~/impots/output
wget https://github.com/erwanpaccard/irpp-mcp/releases/download/v1.0.0/irpp_calc \
     -O ~/impots/output/irpp_calc
chmod +x ~/impots/output/irpp_calc

# Tester
printf "V_0AC=1\nTSHALLOV=50000.00\n" | ~/impots/output/irpp_calc
# → {"IINET": 6786.00, "NBPT": 1.00, "RNI": 45000.00, ...}

Затем переходите сразу к шагу 5.


Полная установка (компиляция из исходников)

Предварительные требования

  • WSL (рекомендуется Ubuntu 22.04) — необходимо для компиляции и запуска бинарного файла Linux

  • Python 3.11+ с pip

  • gcc, make, git, opam, unzip


Шаг 1 — Исходники DGFiP (язык M)

Официальный налоговый код публикуется DGFiP на Adullact под лицензией CeCILL 2.1. Учетная запись не требуется.

cd ~/impots
curl -L "https://gitlab.adullact.net/dgfip/impots-nationaux-revenu-patrimoine-particuliers/calculette-ir/-/archive/master/calculette-ir-master.zip" \
     -o calculette-ir-master.zip
unzip calculette-ir-master.zip

Полезная папка: calculette-ir-master/sources2023m_8_0/


Шаг 2 — Компиляция Mlang (~15 мин)

cd ~/impots
sudo apt install libgmp-dev libmpfr-dev git opam bubblewrap unzip bzip2 patch

git clone https://gitlab.adullact.net/dgfip/impots-nationaux-revenu-patrimoine-particuliers/Mlang.git mlang-src
cd mlang-src

# Correctif obligatoire (version non substituée dans les fichiers opam)
sed -i 's/%%VERSION%%/0.0.1/g' mlang.opam irj_checker.opam

OPAMYES=1 make init
make build

Полученный бинарный файл: mlang-src/_build/default/src/main.exe


Шаг 3 — Генерация C-файлов из исходников M

cd ~/impots/mlang-src
eval $(opam env --switch=$(pwd) --set-switch)

./_build/default/src/main.exe \
  -A iliad \
  --display_time \
  --precision double \
  --mpp_function=enchainement_primitif \
  --income-year=2023 \
  --dgfip_options=-g,-O,-k4,-m2023,-X \
  --backend dgfip_c \
  --output ../output/irpp_2023.c \
  $(find ../calculette-ir-master/sources2023m_8_0 -name 'tgvI.m') \
  $(find ../calculette-ir-master/sources2023m_8_0 -name 'errI.m') \
  $(find ../calculette-ir-master/sources2023m_8_0 -name '*.m' \
    ! -name 'err*.m' ! -name 'tgv*.m' ! -name 'cibles.m' | sort) \
  m_ext/2023/cibles.m m_ext/2023/codes_1731.m m_ext/2023/commence_par_5.m \
  m_ext/2023/commence_par_7.m m_ext/2023/commence_par_H.m \
  m_ext/2023/correctif.m m_ext/2023/main.m

tgvI.m должен быть передан первым — он объявляет приложение iliad.

Результат: ~55 МБ C-файлов в ~/impots/output/.


Шаг 4 — Компиляция бинарного файла

irpp_driver.c и Makefile уже находятся в output/ (предоставлены этим репозиторием). Скопируйте из репозитория:

cp ~/impots/irpp-mcp/output/irpp_driver.c ~/impots/output/
cp ~/impots/irpp-mcp/output/Makefile ~/impots/output/

cd ~/impots/output
make CDRIVER=../mlang-src/examples/dgfip_c/ml_primitif/c_driver

Тест:

printf "V_0AC=1\nTSHALLOV=50000.00\n" | ./irpp_calc
# → {"IINET": 6786.00, "NBPT": 1.00, "RNI": 45000.00, ...}

Шаг 5 — Установка сервера MCP

pip install mcp pydantic

Убедитесь, что BINARY_PATH в irpp_mcp.py указывает на скомпилированный бинарный файл. По умолчанию:

BINARY_PATH = Path(__file__).parent.parent / "output" / "irpp_calc"
# → ~/impots/output/irpp_calc  ✓ si vous avez suivi l'arborescence ci-dessus

Шаг 6 — Настройка Claude Code

Создайте .mcp.json в корне проекта Claude Code:

{
  "mcpServers": {
    "irpp-mcp": {
      "command": "python3",
      "args": ["/home/user/impots/irpp-mcp/irpp_mcp.py"]
    }
  }
}

В Windows (вызов через WSL):

{
  "mcpServers": {
    "irpp-mcp": {
      "command": "wsl",
      "args": ["-e", "python3", "/mnt/c/Users/vous/impots/irpp-mcp/irpp_mcp.py"]
    }
  }
}

Адаптируйте путь к вашей структуре каталогов. Узнать путь к Python: which python3 в WSL.


Использование

Инструмент MCP irpp_calculer_ir принимает параметры формы 2042:

Параметр

Поле 2042

Описание

situation

celibataire / marie / pacse / divorce / veuf

salaires_declarant1

1AJ

Чистая налогооблагаемая зарплата декларанта 1

salaires_declarant2

1BJ

Чистая налогооблагаемая зарплата декларанта 2

pensions_declarant1

1AS

Пенсии, пособия, ренты декларанта 1

pensions_declarant2

1BS

Пенсии, пособия, ренты декларанта 2

bnc_declarant1

5QC

BNC профессиональный (обычный режим)

micro_foncier

4BE

Micro-foncier валовая выручка

dividendes

2DC

Дивиденды (льгота 40%)

plus_values

3VG

Прирост капитала от движимого имущества

nb_enfants_charge

0CF

Несовершеннолетние дети на иждивении

nb_enfants_alternee

0CH

Дети при совместной опеке

per_declarant1

6NS

Вычитаемые взносы PER декларанта 1

per_declarant2

6NT

Вычитаемые взносы PER декларанта 2

pension_alimentaire

6GI

Алименты, выплаченные совершеннолетнему ребенку

revenus_fonciers_reels

4BA

Чистый доход от недвижимости (реальный режим)

annee_naissance_declarant1

Год рождения декларанта 1

response_format

markdown (по умолчанию) или json

Возвращаемые переменные: IINET (чистый налог), NBPT (части), RNI (чистый налогооблагаемый доход), REVKIRE (справочный налоговый доход), IRNET, IAVIM, IRTOTAL.


Использование с навыком impots

Навык erwanpaccard/impots автоматически обнаруживает этот сервер MCP и использует его для моделирования IR — расчеты тогда опираются на официальный движок DGFiP, а не на оценки LLM.


Ограничения

  • Только доходы за 2023 год: исходники 2024 года (sources2024m_3_13) несовместимы с текущей версией Mlang (переменная GLOBAL.REPRCM не разрешена в контексте correctif).

  • micro_bnc_declarant1 (поле 5TE): правильно рассчитывает REVKIRE, но дает IINET=0. Обходной путь: передать выручку × 66% в bnc_declarant1 (5QC).

  • Только бинарный файл Linux: в Windows вызов автоматически проходит через WSL.


Источники и лицензии

Компонент

Источник

Лицензия

Исходники DGFiP (доходы 2023)

Adullact — calculette-ir

CeCILL 2.1

Компилятор Mlang

Mlang (Adullact)

GPL-3.0

irpp_driver.c + irpp_mcp.py

Этот репозиторий

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A local MCP server that enables Claude to answer Norwegian tax questions with actual calculations, covering income, wealth, stocks, funds, real estate, crypto, and more.
    12
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local-first MCP server for Indian income tax computation, enabling users to compute taxes, compare regimes, plan advance tax, and parse Form 26AS without sending data to the cloud.
    12
    6 npm
    8
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    MCP server for the Swiss federal tax calculator, providing income, wealth, inheritance, and corporate tax figures for all Swiss municipalities and tax years 2010-2026.
    13
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A standalone MCP server for Indian personal income-tax work (ITR-1/2/3/4 + post-filing notices) with 8 deterministic tools, running fully offline with no API keys.
    MIT