{"_id":"@ansvar/luxembourg-law-mcp","_rev":"3-8ec3dca3ba7cbacc56d5db74ed668b5e","name":"@ansvar/luxembourg-law-mcp","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@ansvar/luxembourg-law-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","ai","claude","lu-law","luxembourg","legal","compliance","legilux","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/luxembourg-law-mcp@1.0.0","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp/issues"},"bin":{"luxembourg-law-mcp":"dist/index.js"},"dist":{"shasum":"3b0d4dcda78b9f1c6f6021f635e915cf8cb2d6de","tarball":"https://registry.npmjs.org/@ansvar/luxembourg-law-mcp/-/luxembourg-law-mcp-1.0.0.tgz","fileCount":115,"integrity":"sha512-IsvJxr/MCKxqEVoin/B49aHwBxWr/uy5JBehLVsuJ/pJtZ/7/zjOpOu0kvsvDn0BjijBIHMiXUO8eenx/RgecA==","signatures":[{"sig":"MEUCIQCtfilxBS1g3w5KYr5yv1ilqHX9bmblDjoCc7boyxog9AIgdf+lZ8gnBMtmZFbeod2lmiSBn5EHbLZITR/N/dov2o8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159019},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"12423e32cb3c343b991f5d7fc873409f0df57531","mcpName":"luxembourg-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/Luxembourg-law-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Luxembourg Law MCP — French 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","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@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/luxembourg-law-mcp_1.0.0_1771573803587_0.050988839999508206","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/luxembourg-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"},"1.0.3":{"name":"@ansvar/luxembourg-law-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","ai","claude","lu-law","luxembourg","legal","compliance","legilux","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/luxembourg-law-mcp@1.0.3","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp/issues"},"bin":{"luxembourg-law-mcp":"dist/index.js"},"dist":{"shasum":"cc8ae6b0593e3598d6401e5948bf8471a8986685","tarball":"https://registry.npmjs.org/@ansvar/luxembourg-law-mcp/-/luxembourg-law-mcp-1.0.3.tgz","fileCount":115,"integrity":"sha512-X75pCQJBvfNzZ2ZkhJXWrIFhsAOfO+cv5lOvCrczKbiAVwr6llUhfMcTBcTv7381WgiXbzwWnaUMjGPvmZylQQ==","signatures":[{"sig":"MEQCIDb22JCBkXkN11ei6htlAV8OUgYXHVLVNsmsOclPr1+sAiACGvWIMcTxyNDmXPDjdRqL3bhSrh9M8PwTI/C8jruEjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansvar%2fluxembourg-law-mcp@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159295},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"950e714367ef589ce17c0f69231f68906ad8689c","mcpName":"eu.ansvar/luxembourg-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/Luxembourg-law-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Luxembourg Law MCP — French legislation via Model Context Protocol","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@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/luxembourg-law-mcp_1.0.3_1771773783410_0.5401240271675147","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/luxembourg-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"}},"time":{"created":"2026-02-20T07:50:03.500Z","modified":"2026-05-02T05:47:41.582Z","1.0.0":"2026-02-20T07:50:03.722Z","1.0.3":"2026-02-22T15:23:03.573Z"},"bugs":{"url":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp/issues"},"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","homepage":"https://github.com/Ansvar-Systems/Luxembourg-law-mcp#readme","keywords":["mcp","model-context-protocol","ai","claude","lu-law","luxembourg","legal","compliance","legilux","ansvar"],"repository":{"url":"git+https://github.com/Ansvar-Systems/Luxembourg-law-mcp.git","type":"git"},"description":"Luxembourg Law MCP — French legislation via Model Context Protocol","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"readme":"# Luxembourg Law MCP\n\nProduction-grade Luxembourg legislation MCP server with:\n\n- `stdio` transport for local MCP clients.\n- Streamable HTTP transport for Vercel/serverless deployment.\n- Golden contract tests and nightly drift detection anchors.\n- Automated update checks against Legilux.\n\n## Requirements\n\n- Node.js `>=18`\n- npm\n\n## Install\n\n```bash\nnpm install\n```\n\n## Build And Run\n\n```bash\nnpm run build\nnpm start\n```\n\nDev mode:\n\n```bash\nnpm run dev\n```\n\n## Database\n\nBuild the SQLite database from `data/seed/*.json`:\n\n```bash\nnpm run build:db\n```\n\nIngest from Legilux:\n\n```bash\n# Full discovery + ingestion\nnpm run ingest\n\n# Only selected laws\nnpm run ingest -- --ids loi-1799-07-04-n1,loi-2002-08-02-n2\n\n# Overwrite existing seed files\nnpm run ingest -- --ids loi-1799-07-04-n1 --force\n```\n\nOverride DB path:\n\n```bash\nexport LUXEMBOURG_LAW_DB_PATH=/absolute/path/to/database.db\n```\n\n## Testing\n\nRun full test suite:\n\n```bash\nnpm test\n```\n\nRun golden contract tests:\n\n```bash\nnpm run test:contract\n```\n\nNightly-mode contract checks (includes network assertions):\n\n```bash\nCONTRACT_MODE=nightly npm run test:contract\n```\n\nCoverage:\n\n```bash\nnpm run test:coverage\n```\n\n## Drift Detection\n\nRun upstream drift checks for configured anchors:\n\n```bash\nnpm run drift:detect\n```\n\nAnchors are configured in `fixtures/golden-hashes.json`.\n\n## Update Checks\n\nCompare local data with Legilux:\n\n```bash\nnpm run check-updates\n```\n\nMachine-readable output:\n\n```bash\nnpm run check-updates -- --json --output update-summary.json\n```\n\n## Vercel Deployment\n\nAPI handlers:\n\n- `api/mcp.ts` for MCP streamable HTTP (`/mcp`)\n- `api/health.ts` for health/version (`/health`, `/version`)\n\n`vercel.json` config includes rewrites and packaged DB file.\n\n### GitHub Actions deployment workflow\n\nThe workflow `.github/workflows/vercel-deploy.yml` supports:\n\n- PR preview deploys\n- Production deploys on `main`\n\nRequired repository secrets:\n\n- `VERCEL_TOKEN`\n- `VERCEL_ORG_ID`\n- `VERCEL_PROJECT_ID`\n\n## GitHub Actions\n\n- `ci.yml`: build, tests, contract tests, coverage, typecheck.\n- `check-updates.yml`: daily freshness checks + issue management + optional auto-update.\n- `drift-detect.yml`: nightly drift checks with issue creation on mismatch.\n- `vercel-deploy.yml`: preview and production deployment to Vercel.\n\n## API Endpoints\n\n- `GET /health`: health payload\n- `GET /version`: version/capability payload\n- `POST /mcp`: streamable MCP endpoint\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}