Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
French family-benefit models (CNAF corpus) as executable rules with sources; independent demo
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://mcp.arxo.io/mcp/cnafOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"cnaf": {
"command": "npx",
"args": [
"-y",
"@arxo/mcp-cnaf"
]
}
}
}Run this in your terminal
claude mcp add --transport http cnaf https://mcp.arxo.io/mcp/cnafclaude mcp add cnaf -- npx -y @arxo/mcp-cnafPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cnaf": {
"url": "https://mcp.arxo.io/mcp/cnaf"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cnaf": {
"command": "npx",
"args": [
"-y",
"@arxo/mcp-cnaf"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"cnaf": {
"type": "http",
"url": "https://mcp.arxo.io/mcp/cnaf"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"cnaf": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@arxo/mcp-cnaf"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://mcp.arxo.io/mcp/cnafMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain arxo.io (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.1.1) reached the registry 23 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Starreel
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Turn a script into a finished, downloadable short-drama episode — via MCP or REST.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Explore French benefit rules as executable models, and trace their answers back to published legal sources.
[Explore the demo](https://french-benefits.law.arxo.io/) · [Run an example](#quick-start) · [Read the book](https://books.arxo.io/)
First of all, a demonstration. This repository shows what modelling legislation with Arxo can do:
French family-benefit law written as executable canons, with the source of every answer. It is an
independent model built from published French law for teaching and demonstration. It does not claim
legal accuracy or completeness, it is not an implementation by or for the Cnaf or any French
authority, and its answers are not legal advice. For a real file, rely on the official texts and the
competent bodies.
| I want to… | Start here |
|---|---|
| Explore saved cases and their sources in a browser | French Benefits Lab — no installation |
| Use a model from JavaScript or TypeScript | Node.js package |
| Run a local MCP with npx, connect a client or deploy independently | CNAF MCP — stdio, connection and pinned image |
| Run a scenario on my machine | Quick start |
| Find the model for a benefit | Browse the models |
| Reproduce a chapter of the book | Book examples |
| Rebuild a package or check the registry | Reproducibility guide |
*French Benefits Lab, captured on 12 October 2026. Open the demo and choose “Explore a saved family case” to inspect its inputs, answer and French sources. The lab presents its own recorded evidence release; its coverage and version are separate from this repository's export.*
| Question | Explore a concrete example |
|---|---|
| How does a selected reading change the amount? | One APL case, two readings |
| Why is an answer withheld? | The same APL case without a selected reading |
| Where do an amount and its parameters come from? | Follow an instruction to a saved calculation |
| What changes between two legal dates? | Compare saved dates in the lab |
| Which facts, duties and stages does a case involve? | Browse the book's fictional case files |
The browser examples belong to the lab's recorded release. The local APL example below belongs to this repository's pinned model.
Node.js 20+. The pinned models are available as @arxo/canon-fr-benefits. Load one world and ask it through the common @arxo/law API:
npm install @arxo/law@0.4.2 @arxo/canon-fr-benefits@0.1.1
import { open } from '@arxo/law';
import { loadModel } from '@arxo/canon-fr-benefits/apl'; import { household, caseInput } from '@arxo/canon-fr-benefits/examples/apl';
const model = await loadModel(); const apl = await open(model.spec, { offline: true, local: { packages: { [model.spec]: model.package } }, }); const answer = await apl.collect('aide_formule', [household, '?amount'], caseInput); console.log(answer.evaluationStatus); // COMPUTED console.log(answer.value[0].value); // '20.17' (EUR, formula amount) console.log(apl.unfold('aide_formule', { depth: 2 }).text);
The input is the technical APL case below, with PpPlancherFinal selected. The answer includes the engine's canonical document, proof and hashes. This is a formula amount, not a final payable benefit. The package contains all 21 models; loading a subpath parses only the selected world.
Package API, model exports, TypeScript and verification limits. For maintainers: how to ship a canon with several models. Source models are pinned to the original public export; npm delivery checks are separate from full corpus acceptance, which remains not checked.
You need Git, Node.js 20+ and npm. This example uses the released `law` 0.2.2 command-line tool, which executes the models. The package already includes its pinned dependency; no Python, source restoration or registry installation is needed for this scenario.
npm install -g @arxo/cli@0.2.2
law --version
git clone https://github.com/arxohq/arxo-cnaf.git cd arxo-cnaf/packages/fr.apl
law test . --file tests/finish-lecture-pp.lawtest --json
This runs seven scenarios about the personal contribution in housing aid (article D. 823-17). Success means the command exits with code 0 and the JSON report records no failed scenarios. These are checks against the model's declared expectations, not certification of legal accuracy. The successful report includes these fields:
{"ok": true, "passed": 7, "failed": 0, "notRun": 0, "total": 7}
What to explore next: compare the readings, then open the scenario file.
Need help getting started? See Troubleshooting.
The model records two readings of the personal contribution in article D. 823-17. The choice enters at SensMinimumPp, an interpretation group that requires exactly one of PpPlancherFinal or PpLitteral.
The scenario fixes a single person with no dependants, zone II in metropolitan France, legal date 15 June 2024, supplied resources of €4,000 and zero rent. It also supplies ordinary housing, sole tenancy, zero solidarity rent reduction and no AAH/AEEH beneficiary. Zero rent deliberately isolates the reading difference; this is a technical probe, not a realistic aid claim.
The pinned parameters used in this probe are P0 = €37.91, Tp = 0.0283, R0 = €5,186, L = €0 and C = €58.08.
| Selected reading | Personal contribution Pp | Formula amount Af |
|---|---|---|
PpPlancherFinal — keep a final floor at P0 | €37.91 | €20.17 |
PpLitteral — apply the formula without that final floor | €4.3462 | €53.7338 |
| No reading selected | INTERPRETATION_REQUIRED | INTERPRETATION_REQUIRED |
Both readings feed the same participation_personnelle relation. The same AideFormule rule then uses Af = L + C − Pp. These are exact formula amounts in the probe; neither is presented as the final payable benefit. The model leaves the choice explicit rather than selecting a reading for you.
This is the native unfold response for aide_formule, rendered as a tree from the published fr.apl@0.1.0 world. Each rule exposes its premises, strength and source anchors. The two contribution producers are both visible: ParticipationPersonnelle and ParticipationPersonnelleLitterale.
*No case, legal date or reading is selected. This shows the model's available rules, not which rules applied to a particular answer. The depth-limit markers come from the engine. Repeated article locators are grouped visually; the JSON retains every dated source anchor.*
Full native JSON · Native text and labels · Reproduce these trees
Follow the map in the actual model:
| Step | Inspect |
|---|---|
| Source references and captured publications | 01-sources.law — CCH_D823_17, CCH_D823_16 and their dated versions |
| Selection and literal branch | 24-lecture-pp.law — SensMinimumPp, ParticipationPersonnelleLitterale |
| Final-floor branch and downstream formula | 02-calcul-locatif.law — ParticipationPersonnelle, AideFormule |
| Both readings and the missing-selection check | finish-lecture-pp.lawtest — the seven scenarios run in the Quick start |
The same view for droit_ouvert shows a defeasible opening rule alongside its exception rules (defeater). Expanding surface_insuffisante exposes its own producers and an exception to that condition. fact, derived, judgment and test are distinct kinds of premise in the native response.
*This is a map of declared rule structure across the published world, not an eligibility finding for a person. No case, date or reading is selected.*
Full native JSON · Native text and labels · Declared exception scenarios
Published text → executable rules → dated case facts → answer and evidence.
A canon is a package containing a legal model, its source references and checks. A scenario supplies facts, dates and any selected interpretation, then states the expected answer. A pinned source is a captured publication identified by its provenance and a content hash, so the model's input can be checked later.
The rules are data in .law files, executed by law. This repository carries no separate implementation of the benefit formulas in application code. Models have individual scope and date boundaries; read a package's source and scenarios before applying its answers to a different case.
| This snapshot | Recorded value and evidence |
|---|---|
| Subject | French benefit models, including housing, family, disability, care and income support; each package has its own scope |
| Canon export | 12 October 2026 · public source revision f2efcc6 |
| Source packages and scenarios | 21 packages · 1,985 declared scenarios · packages.json |
| Model semantics | law.core/0.2.11 · fr.apl/law.lock |
| CLI for the Quick start | Released law 0.2.2; expected report: 7 passed, 0 failed |
| Registry publications | 22 packages including the dependency closure · reproducibility guide |
The names below identify the subject of each model, not a claim of complete coverage of that benefit. The version and scenario inventory records the exported package versions and dependency counts.
| Subject | Model |
|---|---|
| Housing aid (APL / AL) | fr.apl |
| Housing-aid payment stage | fr.apl.versement |
| Income used for housing aid | fr.tax.income_for_apl |
| Subject | Model |
|---|
| Family allowances (AF) | [`fr.
Only the beginning is shown; read the rest in the repo