feat: production MCP server with Israeli legislation (multi-source)
Complete production implementation with shell+adapter architecture, 13 MCP tools, SQLite FTS5 search, and multi-source ingestion pipeline. Ingestion fetches from UCI mirror, UNODC SHERLOC PDFs, and Knesset mobile PDFs (135 provisions, 33 definitions). 3 acts with full text, 7 acts metadata-only due to gov.il/nevo.co.il access restrictions. Knesset OData API used for metadata enrichment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
81
package.json
81
package.json
@@ -3,16 +3,21 @@
|
||||
"version": "1.0.0",
|
||||
"mcpName": "eu.ansvar/israel-law-mcp",
|
||||
"description": "Israel law database covering Privacy Protection Law, Data Security Regulations, Computer Law, Companies Law, Electronic Signature Law, and Credit Data Law with full-text search",
|
||||
"author": "Ansvar Systems <hello@ansvar.eu>",
|
||||
"author": "Ansvar Systems AB <hello@ansvar.ai>",
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Ansvar-Systems/israel-law-mcp.git"
|
||||
"url": "git+https://github.com/Ansvar-Systems/israel-law-mcp.git"
|
||||
},
|
||||
"homepage": "https://ansvar.eu",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Ansvar-Systems/israel-law-mcp/issues"
|
||||
},
|
||||
"homepage": "https://github.com/Ansvar-Systems/israel-law-mcp#readme",
|
||||
"keywords": [
|
||||
"mcp",
|
||||
"model-context-protocol",
|
||||
"ai",
|
||||
"claude",
|
||||
"israel-law",
|
||||
"privacy-protection",
|
||||
"data-security",
|
||||
@@ -20,57 +25,57 @@
|
||||
"companies-law",
|
||||
"electronic-signature",
|
||||
"credit-data",
|
||||
"legislation",
|
||||
"legal",
|
||||
"compliance",
|
||||
"cybersecurity",
|
||||
"knesset",
|
||||
"ansvar"
|
||||
],
|
||||
"type": "module",
|
||||
"main": "dist/server.js",
|
||||
"main": "dist/index.js",
|
||||
"bin": {
|
||||
"israel-law-mcp": "dist/server.js"
|
||||
"israel-law-mcp": "dist/index.js"
|
||||
},
|
||||
"files": [
|
||||
"dist/",
|
||||
"data/database-free.db",
|
||||
"sources.yml",
|
||||
"fixtures/",
|
||||
"LICENSE",
|
||||
"README.md"
|
||||
"dist",
|
||||
"data/database.db",
|
||||
"server.json"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"build:db": "node --import tsx scripts/build-db.ts",
|
||||
"dev": "node --import tsx src/index.ts",
|
||||
"start": "node dist/index.js",
|
||||
"test": "vitest run",
|
||||
"test:contract": "vitest run __tests__/contract/",
|
||||
"test:watch": "vitest",
|
||||
"lint": "eslint src/",
|
||||
"start": "node dist/server.js",
|
||||
"start:stdio": "node dist/server.js --stdio",
|
||||
"health": "curl -s http://localhost:3000/health | jq .",
|
||||
"build:db": "tsx scripts/build-db.ts",
|
||||
"build:db:free": "tsx scripts/build-db-free.ts",
|
||||
"ingest": "tsx scripts/ingest.ts",
|
||||
"drift:detect": "tsx scripts/drift-detect.ts",
|
||||
"check:freshness": "tsx scripts/check-freshness.ts",
|
||||
"validate": "npm run lint && npm run test && npm run test:contract"
|
||||
"test:coverage": "vitest run --coverage",
|
||||
"ingest": "node --import tsx scripts/ingest.ts",
|
||||
"test:contract": "vitest run __tests__/contract/",
|
||||
"drift:detect": "node --import tsx scripts/drift-detect.ts",
|
||||
"validate": "npm run lint && npm test && npm run test:contract",
|
||||
"lint": "tsc --noEmit",
|
||||
"prepublishOnly": "npm run build",
|
||||
"postinstall": "test -d dist || npm run build || true"
|
||||
},
|
||||
"dependencies": {
|
||||
"@modelcontextprotocol/sdk": "^1.12.0",
|
||||
"node-sqlite3-wasm": "^0.8.0",
|
||||
"zod": "^3.23.0"
|
||||
"@ansvar/mcp-sqlite": "^1.0.3",
|
||||
"@modelcontextprotocol/sdk": "^1.25.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.0.0",
|
||||
"eslint": "^9.0.0",
|
||||
"prettier": "^3.4.0",
|
||||
"tsx": "^4.19.0",
|
||||
"typescript": "^5.7.0",
|
||||
"vitest": "^3.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||
"@typescript-eslint/parser": "^8.0.0"
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
"@types/node": "^22.15.29",
|
||||
"@vercel/node": "^5.6.4",
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"tsx": "^4.21.0",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
"node": ">=18"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"overrides": {
|
||||
"path-to-regexp": "^8.0.0",
|
||||
"undici": "^7.0.0",
|
||||
"ajv": "^8.18.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user