{"_id":"@ansvar/spanish-law-mcp","_rev":"3-134ec8dd1074c7812666aab66ca084d6","name":"@ansvar/spanish-law-mcp","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.1":{"name":"@ansvar/spanish-law-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","spanish-law","lopdgdd","rgpd","gdpr","aepd","data-protection","cybercrime","codigo-penal","ens","lssi","nis2","legislation","legal","compliance","boe","ansvar"],"author":{"name":"Ansvar Systems","email":"hello@ansvar.eu"},"license":"Apache-2.0","_id":"@ansvar/spanish-law-mcp@1.0.1","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://ansvar.eu","bugs":{"url":"https://github.com/Ansvar-Systems/spanish-law-mcp/issues"},"bin":{"spanish-law-mcp":"dist/index.js"},"dist":{"shasum":"9b584a5a705b9fa995a15305cc8d5aac8259463c","tarball":"https://registry.npmjs.org/@ansvar/spanish-law-mcp/-/spanish-law-mcp-1.0.1.tgz","fileCount":117,"integrity":"sha512-gmg7xf++GlE9ZYwQ30PWfWaF8Hey1jLPGN1j9F+tgIQMxtxs/Abm0GmW5GE9sAo4IDiPievT8adI+b9Krc1xMw==","signatures":[{"sig":"MEUCIQCHaFrnsYJ+S3Cmd3mfcOLnuajFXmnRq9KkSBE3p+2DpAIgWLOzuU3MY+Mh2lrivQxC4JIK+7GJhanpWVfaUwQQXvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansvar%2fspanish-law-mcp@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6421437},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"556bfc7724faf17b7bbbf269331ad0987237bf55","mcpName":"eu.ansvar/spanish-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","lint":"tsc --noEmit","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 run lint && 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","test:contract":"vitest run __tests__/contract/","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"overrides":{"ajv":"^8.18.0","undici":"^7.0.0","path-to-regexp":"^8.0.0"},"repository":{"url":"git+https://github.com/Ansvar-Systems/spanish-law-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Spanish law database covering data protection (LOPDGDD), national security framework (ENS), cybercrime (Codigo Penal), e-commerce (LSSI), company law, and NIS2 transposition with Spanish full-text search","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":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.15.29","@vercel/node":"^5.6.4","better-sqlite3":"^12.6.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/spanish-law-mcp_1.0.1_1771782020995_0.36086255591121863","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/spanish-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"},"2.1.0":{"name":"@ansvar/spanish-law-mcp","version":"2.1.0","keywords":["mcp","model-context-protocol","spanish-law","lopdgdd","rgpd","gdpr","aepd","data-protection","cybercrime","codigo-penal","ens","lssi","nis2","legislation","legal","compliance","boe","ansvar"],"author":{"name":"Ansvar Systems","email":"hello@ansvar.eu"},"license":"Apache-2.0","_id":"@ansvar/spanish-law-mcp@2.1.0","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://ansvar.eu","bugs":{"url":"https://github.com/Ansvar-Systems/spanish-law-mcp/issues"},"bin":{"spanish-law-mcp":"dist/index.js"},"dist":{"shasum":"d33eb82ea6f11bb6f3193a4458064837d70f87a8","tarball":"https://registry.npmjs.org/@ansvar/spanish-law-mcp/-/spanish-law-mcp-2.1.0.tgz","fileCount":128,"integrity":"sha512-O+K7DHwX2A/kghi06IJ5J8mADDsrZiXrVSeXzHOnggwTP46IBwQFKc+du4HKXJNgsfOBMabxFeLOSHNEwFvxcg==","signatures":[{"sig":"MEQCIA09NcnOJ4GWuG1f125fSdD7HReyf6oKbGLiJfzP8+N9AiB8ShFcFq+ZtD/raMsjc4hzkcGfIEVvi6qaSaHVhUvnzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297867},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"b2ae353494ee942598395cd84fcd4bf328430549","mcpName":"eu.ansvar/spanish-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","start":"node dist/index.js","census":"node --import tsx scripts/census.ts","ingest":"node --import tsx scripts/ingest.ts","build:db":"node --import tsx scripts/build-db.ts","validate":"npm run lint && 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"},"overrides":{"ajv":"^8.18.0","undici":"^7.0.0","path-to-regexp":"^8.0.0"},"repository":{"url":"git+https://github.com/Ansvar-Systems/spanish-law-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Complete Spanish law database — 12,191 consolidated statutes (300K+ provisions) from BOE covering all national and regional legislation with Spanish full-text search","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.15.29","@vercel/node":"^5.6.4","better-sqlite3":"^12.6.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/spanish-law-mcp_2.1.0_1772183808105_0.24354183586816402","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/spanish-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"}},"time":{"created":"2026-02-22T17:40:20.915Z","modified":"2026-05-02T05:49:04.288Z","1.0.1":"2026-02-22T17:40:21.245Z","2.1.0":"2026-02-27T09:16:48.278Z"},"bugs":{"url":"https://github.com/Ansvar-Systems/spanish-law-mcp/issues"},"author":{"name":"Ansvar Systems","email":"hello@ansvar.eu"},"license":"Apache-2.0","homepage":"https://ansvar.eu","keywords":["mcp","model-context-protocol","spanish-law","lopdgdd","rgpd","gdpr","aepd","data-protection","cybercrime","codigo-penal","ens","lssi","nis2","legislation","legal","compliance","boe","ansvar"],"repository":{"url":"git+https://github.com/Ansvar-Systems/spanish-law-mcp.git","type":"git"},"description":"Complete Spanish law database — 12,191 consolidated statutes (300K+ provisions) from BOE covering all national and regional legislation with Spanish full-text search","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"readme":"# Spanish Law MCP Server\n\n**The BOE alternative for the AI age.**\n\n[![npm](https://img.shields.io/npm/v/@ansvar/spanish-law-mcp)](https://www.npmjs.com/package/@ansvar/spanish-law-mcp)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)\n[![CI](https://github.com/Ansvar-Systems/spanish-law-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Ansvar-Systems/spanish-law-mcp/actions/workflows/ci.yml)\n[![MCP Registry](https://img.shields.io/badge/MCP-Registry-green)](https://registry.modelcontextprotocol.io/)\n[![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/Ansvar-Systems/spanish-law-mcp)](https://securityscorecards.dev/viewer/?uri=github.com/Ansvar-Systems/spanish-law-mcp)\n[![Database](https://img.shields.io/badge/database-pre--built-green)]()\n[![Provisions](https://img.shields.io/badge/provisions-300%2C548-blue)]()\n\nQuery **12,191 Spanish laws** -- from the LOPDGDD and Codigo Penal to the Ley de Sociedades de Capital, LSSI, and more -- directly from Claude, Cursor, or any MCP-compatible client.\n\nIf you're building legal tech, compliance tools, or doing Spanish legal research, this is your verified reference database.\n\nBuilt by [Ansvar Systems](https://ansvar.eu) -- Stockholm, Sweden\n\n---\n\n## Why This Exists\n\nSpanish legal research is scattered across the BOE (Boletin Oficial del Estado), Noticias Juridicas, and commercial platforms like vLex. Whether you're:\n- A **lawyer** validating citations in a brief or contract under Spanish law\n- A **compliance officer** checking LOPDGDD digital rights provisions or ENS security requirements\n- A **legal tech developer** building tools on Spanish legislation\n- A **researcher** tracing legislative history across leyes organicas and reales decretos\n\n...you shouldn't need dozens of browser tabs and manual PDF cross-referencing. Ask Claude. Get the exact provision. With context.\n\nThis MCP server makes Spanish law **searchable, cross-referenceable, and AI-readable**.\n\n---\n\n## Example Queries\n\nOnce connected, just ask naturally:\n\n- *\"Que dice la LOPDGDD sobre el consentimiento?\"*\n- *\"Buscar disposiciones sobre proteccion de datos en la legislacion espanola\"*\n- *\"What does the ENS say about security categories?\"*\n- *\"Find cybercrime provisions in the Codigo Penal (Art. 197)\"*\n- *\"Is the Ley de Sociedades de Capital still in force?\"*\n- *\"What EU directives does the LOPDGDD implement?\"*\n- *\"Validate this legal citation\"*\n- *\"Build a legal stance on AEPD enforcement powers\"*\n\n---\n\n## Deployment Tier\n\n**MEDIUM** -- dual tier, free database bundled in npm package.\n\n| Tier | Platform | Database | Content |\n|------|----------|----------|---------|\n| **Free** | Vercel (Hobby) / npm (stdio) | Core legislation (~120-200 MB) | Key laws (LOPDGDD, ENS, Codigo Penal cybercrime, LSSI, Ley de Sociedades de Capital, NIS2 transposition), FTS search, EU cross-references |\n| **Professional** | Azure Container Apps / Docker / Local | Full database (~700 MB - 1.1 GB) | + All leyes organicas and ordinarias, AEPD decisions and guidance, Tribunal Supremo/Constitucional summaries, reales decretos, autonomous community cross-references |\n\nThe full database is larger due to the comprehensive scope of Spanish legislation and the extensive body of AEPD enforcement decisions. The free tier contains all key data protection, cybersecurity, cybercrime, e-commerce, and company law legislation from BOE.\n\n---\n\n## Data Sources\n\n| Source | Authority | Method | Update Frequency | License | Coverage |\n|--------|-----------|--------|-----------------|---------|----------|\n| [BOE](https://www.boe.es) | Agencia Estatal Boletin Oficial del Estado | XML Download / API | Daily | Government Open Data (Ley 37/2007) | All national legislation, codes, reales decretos, and official publications |\n\n> Full provenance metadata: [`sources.yml`](./sources.yml)\n\n---\n\n## Quick Start\n\n### Use Remotely (No Install Needed)\n\n> Connect directly to the hosted version -- zero dependencies, nothing to install.\n\n**Endpoint:** `https://spanish-law-mcp.vercel.app/mcp`\n\n| Client | How to Connect |\n|--------|---------------|\n| **Claude.ai** | Settings > Connectors > Add Integration > paste URL |\n| **Claude Code** | `claude mcp add spanish-law --transport http https://spanish-law-mcp.vercel.app/mcp` |\n| **Claude Desktop** | Add to config (see below) |\n| **GitHub Copilot** | Add to VS Code settings (see below) |\n\n**Claude Desktop** -- add to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"spanish-law\": {\n      \"type\": \"url\",\n      \"url\": \"https://spanish-law-mcp.vercel.app/mcp\"\n    }\n  }\n}\n```\n\n**GitHub Copilot** -- add to VS Code `settings.json`:\n\n```json\n{\n  \"github.copilot.chat.mcp.servers\": {\n    \"spanish-law\": {\n      \"type\": \"http\",\n      \"url\": \"https://spanish-law-mcp.vercel.app/mcp\"\n    }\n  }\n}\n```\n\n### Use Locally (npm)\n\n```bash\nnpx @ansvar/spanish-law-mcp\n```\n\n**Claude Desktop** -- add to `claude_desktop_config.json`:\n\n**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"spanish-law\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ansvar/spanish-law-mcp\"]\n    }\n  }\n}\n```\n\n**Cursor / VS Code:**\n\n```json\n{\n  \"mcp.servers\": {\n    \"spanish-law\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ansvar/spanish-law-mcp\"]\n    }\n  }\n}\n```\n\n---\n\n## Tools\n\n| Tool | Description | Free Tier | Professional |\n|------|-------------|-----------|-------------|\n| `get_provision` | Retrieve a specific article from a Spanish law or code | Yes | Yes |\n| `search_legislation` | Full-text search across all Spanish legislation (Spanish) | Yes | Yes |\n| `list_laws` | List all available laws with metadata | Yes | Yes |\n| `get_law_structure` | Get table of contents / structure of a law or code | Yes | Yes |\n| `get_provision_eu_basis` | Cross-reference Spanish law to EU directives/regulations | Yes | Yes |\n| `search_reales_decretos` | Search reales decretos and regulatory instruments | No (upgrade) | Yes |\n| `get_aepd_guidance` | Retrieve AEPD decisions and guidance | No (upgrade) | Yes |\n\n---\n\n## Key Legislation Covered\n\n| Law | Identifier | Domain | Key Topics |\n|-----|-----------|--------|------------|\n| **LOPDGDD** | Ley Organica 3/2018 | Data Protection | Personal data processing, digital rights, AEPD oversight, consent, GDPR implementation, international transfers |\n| **ENS** | Real Decreto 311/2022 | Cybersecurity | National security framework for public sector, security categories, CCN-CERT, mandatory controls, certification |\n| **NIS2 Transposition** | Ley 2024-xxx | Cybersecurity | Essential/important entity obligations, incident reporting, supply chain security |\n| **Codigo Penal (cybercrime)** | Art. 197 ff. | Cybercrime | Discovery and disclosure of secrets, unauthorized access, data interception, system interference |\n| **Ley de Sociedades de Capital** | Real Decreto Legislativo 1/2010 | Company Law | SA and SL companies, corporate governance, directors' duties, capital requirements |\n| **LSSI** | Ley 34/2002 | e-Commerce | Information society services, hosting provider liability, electronic contracts, commercial communications |\n\n---\n\n## Database Estimates\n\n| Component | Free Tier | Full (Professional) |\n|-----------|-----------|---------------------|\n| Core codes and key laws | ~80-140 MB | ~80-140 MB |\n| All leyes and reales decretos | -- | ~400-600 MB |\n| AEPD decisions and guidance | -- | ~100-200 MB |\n| Case law summaries | -- | ~80-150 MB |\n| Cross-references and metadata | ~5 MB | ~15 MB |\n| **Total** | **~120-200 MB** | **~700 MB - 1.1 GB** |\n\n**Delivery strategy:** Free-tier DB bundled in npm package (Strategy A -- fits within Vercel 250 MB function limit). If final size exceeds 250 MB after ingestion, switch to Strategy B (runtime download from GitHub Releases).\n\n---\n\n## Regulatory Context\n\n- **Supervisory Authority:** AEPD (Agencia Espanola de Proteccion de Datos) -- issues massive fines, among the highest in the EU (EUR 8.15M to CaixaBank, EUR 6M to BBVA)\n- **LOPDGDD** is a Ley Organica (requiring absolute majority in Congress), giving it enhanced constitutional status above ordinary laws\n- **ENS** (Esquema Nacional de Seguridad) is Spain's comprehensive national security framework for the public sector, updated in 2022 with new security controls and certification requirements\n- **CCN-CERT** (Centro Criptologico Nacional) handles public sector cybersecurity incidents under the ENS framework\n- **INCIBE-CERT** handles private sector and citizen cybersecurity incidents\n- Spain has **17 Autonomous Communities** with their own legislative powers; BOE covers national legislation\n- **Four co-official languages:** Castilian (es), Catalan (ca), Basque (eu), Galician (gl)\n- Spain is an EU founding member and GDPR/RGPD compliance is a core regulatory requirement\n\n---\n\n## Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/Ansvar-Systems/spanish-law-mcp.git\ncd spanish-law-mcp\n\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Run tests\nnpm test\n\n# Run contract tests\nnpm run test:contract\n\n# Build database (requires raw data in data/ directory)\nnpm run build:db\n\n# Build free-tier database\nnpm run build:db:free\n\n# Run drift detection\nnpm run drift:detect\n\n# Full validation\nnpm run validate\n```\n\n---\n\n## Architecture\n\n```\nspanish-law-mcp/\n├── .github/\n│   ├── workflows/\n│   │   ├── ci.yml                    # Test + lint + security scan\n│   │   ├── publish.yml               # npm publish on version tags\n│   │   ├── check-source-updates.yml  # Data freshness monitoring\n│   │   └── drift-detect.yml          # Upstream drift detection\n│   ├── SECURITY.md\n│   ├── SECURITY-SETUP.md\n│   └── ISSUE_TEMPLATE/\n│       └── data-error.md\n├── data/\n│   └── .gitkeep\n├── fixtures/\n│   ├── golden-tests.json             # 12 contract tests\n│   ├── golden-hashes.json            # 6 drift detection anchors\n│   └── README.md\n├── scripts/\n│   ├── build-db.ts\n│   ├── build-db-free.ts\n│   ├── download-free-db.sh\n│   ├── ingest.ts\n│   ├── drift-detect.ts\n│   └── check-source-updates.ts\n├── src/\n│   ├── server.ts\n│   ├── db.ts\n│   └── tools/\n│       ├── get-provision.ts\n│       ├── search-legislation.ts\n│       ├── list-laws.ts\n│       ├── get-law-structure.ts\n│       ├── get-provision-eu-basis.ts\n│       ├── search-reales-decretos.ts\n│       └── get-aepd-guidance.ts\n├── __tests__/\n│   ├── unit/\n│   ├── contract/\n│   │   └── golden.test.ts\n│   └── integration/\n├── sources.yml\n├── server.json\n├── package.json\n├── tsconfig.json\n├── vercel.json\n├── CHANGELOG.md\n├── LICENSE\n└── README.md\n```\n\n---\n\n## Notes on Spanish Data Protection Landscape\n\n**LOPDGDD** (Ley Organica 3/2018) has several distinctive features:\n\n- **Ley Organica status** -- constitutional-grade legislation requiring absolute majority to amend\n- **Digital rights** title (Title X) -- unique among EU member states, guaranteeing rights such as digital disconnection at work, digital education, and digital testament\n- **Age of digital consent** set at 14 (lowest in the EU, vs. GDPR default of 16)\n- **AEPD** is one of the most active and aggressive DPAs in Europe with significant fine history\n\n**ENS** (Esquema Nacional de Seguridad) is comprehensive:\n- Mandatory for all public sector entities and their supply chain\n- Three security categories (BASIC, MEDIUM, HIGH) with increasing requirements\n- **CCN-STIC** guidelines provide detailed technical implementation guidance\n- ENS certification is increasingly required for government IT contracts\n\nSpain is the **EU's fourth largest economy** and the distinctive combination of LOPDGDD digital rights provisions with ENS security requirements creates a unique compliance landscape.\n\n---\n\n## Related Documents\n\n- [MCP Quality Standard](../../mcp-quality-standard.md) -- quality requirements for all Ansvar MCPs\n- [MCP Infrastructure Blueprint](../../mcp-infrastructure-blueprint.md) -- infrastructure implementation templates\n- [MCP Deployment Tiers](../../mcp-deployment-tiers.md) -- free vs. professional tier strategy\n- [MCP Server Registry](../../mcp-server-registry.md) -- operational registry of all MCPs\n- [MCP Remote Access](../../mcp-remote-access.md) -- public Vercel endpoint URLs\n\n---\n\n## Security\n\nReport vulnerabilities to **security@ansvar.eu** (48-hour acknowledgment SLA).\n\nSee [SECURITY.md](.github/SECURITY.md) for full disclosure policy.\n\n---\n\n**Maintained by:** Ansvar Systems Engineering\n**Contact:** hello@ansvar.eu\n","readmeFilename":"README.md"}