{"_id":"@ansvar/belgian-law-mcp","_rev":"2-752ac09727ea16e7beaaad1fba7918c6","name":"@ansvar/belgian-law-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ansvar/belgian-law-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","ai","claude","be-law","belgium","legal","compliance","justel","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/belgian-law-mcp@1.0.0","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Belgium-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Belgium-law-mcp/issues"},"bin":{"belgium-law-mcp":"dist/index.js"},"dist":{"shasum":"776aab1563ef2ed961701bc8d1c6215728303efe","tarball":"https://registry.npmjs.org/@ansvar/belgian-law-mcp/-/belgian-law-mcp-1.0.0.tgz","fileCount":130,"integrity":"sha512-va72jUQsjpev9HfhEGYs5uv4xj2rEA+cCHkdfw27kMsaedj8ZvUP6DCC24at+7LqXdZwmJU4yObX/AT66Hnbzg==","signatures":[{"sig":"MEYCIQDDh+ntvz8ewvUaZ0iq8l4c1wuqMOSi4w3OJhEBahTwWgIhAMumj4+2am7RQe1QFP/Bt2pmBIAswJiY0g+AfssQfQ8Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135281105},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"76e7f471c4b52a5765c2faaf286977fda4431efe","mcpName":"eu.ansvar/belgian-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","ingest":"node --import tsx scripts/ingest.ts","build:db":"node --import tsx scripts/build-db.ts","validate":"npm test && npm run test:contract","test:watch":"vitest","postinstall":"test -d dist || npm run build || true","drift:detect":"node --import tsx scripts/drift-detect.ts","check-updates":"node --import tsx scripts/check-updates.ts","test:contract":"vitest run __tests__/contract/","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"repository":{"url":"git+https://github.com/Ansvar-Systems/Belgium-law-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Belgian Law MCP — French and Dutch legislation via Model Context Protocol","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^28.1.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@types/jsdom":"^27.0.0","@vercel/node":"^5.6.3","better-sqlite3":"^12.6.2","fast-xml-parser":"^5.3.5","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/belgian-law-mcp_1.0.0_1771573798099_0.41072780596797287","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/belgian-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"}},"time":{"created":"2026-02-20T07:49:57.974Z","modified":"2026-05-02T05:45:25.699Z","1.0.0":"2026-02-20T07:49:59.252Z"},"bugs":{"url":"https://github.com/Ansvar-Systems/Belgium-law-mcp/issues"},"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","homepage":"https://github.com/Ansvar-Systems/Belgium-law-mcp#readme","keywords":["mcp","model-context-protocol","ai","claude","be-law","belgium","legal","compliance","justel","ansvar"],"repository":{"url":"git+https://github.com/Ansvar-Systems/Belgium-law-mcp.git","type":"git"},"description":"Belgian Law MCP — French and Dutch legislation via Model Context Protocol","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"readme":"# Belgian Law MCP Server\n\nProduction-grade MCP server for Belgian legislation with a read-only SQLite backend, contract tests, drift detection anchors, and deployment automation.\n\n## What It Provides\n\n- Full-text legal search over Belgian provisions (`FTS5` + BM25 ranking)\n- Provision retrieval by statute and article reference\n- Citation parsing, formatting, and validation for Belgian citation forms\n- Currency checks (current + as-of-date support)\n- EU cross-reference tooling (basis, implementations, provision mapping, compliance checks)\n- Metadata/provenance introspection via `about`\n\n## Current Dataset (Bundled)\n\n- Legal documents: ~5,775\n- Legal provisions: ~142,743\n- Primary source: Justel\n- Jurisdiction: Belgium (FR/NL)\n\n## Quick Start\n\n### Local stdio\n\n```bash\nnpm ci\nnpm run build\nnpm start\n```\n\nOr run directly in development mode:\n\n```bash\nnpm run dev\n```\n\n### HTTP / Vercel\n\n- MCP endpoint: `/mcp`\n- Health endpoint: `/health`\n- Version endpoint: `/version`\n\n`vercel.json` rewrites:\n\n- `/mcp` -> `/api/mcp`\n- `/health` -> `/api/health`\n- `/version` -> `/api/health?version`\n\n## Available Tools\n\n- `search_legislation`\n- `get_provision`\n- `validate_citation`\n- `build_legal_stance`\n- `format_citation`\n- `check_currency`\n- `get_eu_basis`\n- `get_belgian_implementations`\n- `search_eu_implementations`\n- `get_provision_eu_basis`\n- `validate_eu_compliance`\n- `about`\n\n## Environment Variables\n\n- `BELGIAN_LAW_DB_PATH` - Optional override for database file path\n- `MAX_DB_AGE_DAYS` - Optional freshness threshold for `check-updates` (default `30`)\n- `UPDATE_CHECK_YEARS` - Optional number of years checked by `check-updates` (default `2`)\n\n## Build, Test, and Quality Gates\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Full test suite (unit + integration + contract)\n\n```bash\nnpm test\n```\n\n### Coverage\n\n```bash\nnpm run test:coverage\n```\n\n### Contract tests only\n\n```bash\nnpm run test:contract\n```\n\nNightly contract mode (enables network assertions):\n\n```bash\nCONTRACT_MODE=nightly npm run test:contract\n```\n\n## Golden Tests and Drift Detection\n\n### Contract fixture file\n\n- `fixtures/golden-tests.json`\n\n### Drift anchor file\n\n- `fixtures/golden-hashes.json`\n\n### Run drift detection\n\n```bash\nnpm run drift:detect\n```\n\nNotes:\n\n- Entries with `expected_sha256 = COMPUTE_ON_FIRST_RUN` are intentionally skipped.\n- Populate hashes before enforcing drift alerts in production.\n\n## Data Freshness and Auto-Updates\n\n### Check for source updates\n\n```bash\nnpm run check-updates\n```\n\nExit codes:\n\n- `0`: No updates detected\n- `1`: Updates detected\n- `2`: Source/check errors\n\n### Manual refresh flow\n\n```bash\nnpm run ingest -- --year-start 2025 --year-end 2026 --phase all --lang both\nnpm run build:db\nnpm test\n```\n\n## Deployment (Vercel)\n\n### Required secrets for GitHub Actions deployment workflow\n\n- `VERCEL_TOKEN`\n- `VERCEL_ORG_ID`\n- `VERCEL_PROJECT_ID`\n\n### Local Vercel CLI flow\n\n```bash\nnpx vercel pull --yes --environment=preview\nnpx vercel build\nnpx vercel deploy --prebuilt\n```\n\nProduction:\n\n```bash\nnpx vercel pull --yes --environment=production\nnpx vercel build --prod\nnpx vercel deploy --prebuilt --prod\n```\n\n## GitHub Automation Included\n\n- `CI` (`.github/workflows/ci.yml`)\n- `Drift Detection` (`.github/workflows/drift-detect.yml`)\n- `Daily Data Freshness Check + Optional Auto-Update PR` (`.github/workflows/check-updates.yml`)\n- `Vercel Deployment` (`.github/workflows/vercel-deploy.yml`)\n- `Publish Package` (`.github/workflows/publish.yml`)\n- `Dependabot` (`.github/dependabot.yml`)\n\n## Source Attribution and Legal Notice\n\n- Legal text is derived from Belgian Justel open data and related official legal sources.\n- This project does not provide legal advice.\n- For legal certainty, verify against official publications.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}