{
  "markdown": "# mcp-eu-sparql\n\n## Installation (one command)\n\nPublished on npm + the MCP Registry (`io.github.matematicsolutions/mcp-eu-sparql`). Run without cloning:\n\n```bash\nnpx -y @matematicsolutions/mcp-eu-sparql\n```\n\nMCP client configuration (stdio):\n\n```json\n{ \"mcpServers\": { \"mcp-eu-sparql\": { \"command\": \"npx\", \"args\": [\"-y\", \"@matematicsolutions/mcp-eu-sparql\"] } } }\n```\n\n(Building from source - below.)\n\n[![MCP](https://img.shields.io/badge/MCP-Server-blue)](https://modelcontextprotocol.io) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Node](https://img.shields.io/badge/Node-18%2B-brightgreen)](https://nodejs.org)\n\nMCP server for EU law and CJEU case law via the Publications Office SPARQL\nendpoint (Cellar / EUR-Lex), plus national data-protection authority decisions via GDPRhub.\n\nCJEU corpus in Cellar (SPARQL COUNT, 2026-07-08): **34,261 judgments (JUDG),\n8,362 orders (ORDER), 14,480 Advocate-General opinions (OPIN_AG)** -\n57,103 judgments and opinions in total, each with CELEX + ECLI.\n\n## Tools\n\n- **`search_by_celex(celex, lang?)`** - act or judgment by CELEX number\n  (e.g. `32016R0679` = GDPR, `62018CJ0311` = Schrems II).\n- **`search_by_date_range(date_from, date_to, document_type?, lang?, limit?)`**\n  - acts within a date range, optionally narrowed to a type (REG / DIR / DEC / RECO / OPIN).\n- **`search_cjeu(query?, date_from?, date_to?, document_type?, lang?, limit?)`** -\n  judgments (JUDG), orders (ORDER) and Advocate-General opinions (OPIN_AG)\n  of the Court of Justice of the EU; optional keyword in the title (parties to the case,\n  case number, keywords of the judgment).\n- **`search_cjeu_by_ecli(ecli, lang?)`** - CJEU judgment by ECLI\n  identifier (e.g. `ECLI:EU:C:2020:559` = Schrems II).\n- **`search_gdprhub(query, limit?)`** - full-text search in\n  [GDPRhub](https://gdprhub.eu) (the noyb project wiki): decisions of national\n  data-protection authorities across the EU + commentary on GDPR articles. **Content license:\n  CC BY-NC-SA 4.0** - flagged in the `license` field of every citation.\n\nEvery response includes `structuredContent.citations` with the fields `title`, `url`,\n`celex?`, `ecli?`, `publication_date?`, `document_type?`, `snippet?`, `license?` -\nPatron reads this field and renders it in the UI panel as the \"EU legal acts (EUR-Lex / CJEU)\" section.\n\n## Stack\n\n- Node 18+\n- `@modelcontextprotocol/sdk`\n- Stdio transport (like `mcp-saos`)\n- Backend: HTTP POST to `https://publications.europa.eu/webapi/rdf/sparql`\n  with `format=application/sparql-results+json`; GET to `https://gdprhub.eu/api.php`\n  (MediaWiki API)\n\n## Build + run\n\n```bash\nnpm install\nnpm run build\nnode dist/index.js   # starts the server on stdio\n```\n\n## Wiring into Patron\n\nIn `patron/backend/mcp-servers.json`:\n\n```json\n[\n  {\n    \"name\": \"saos\",\n    \"transport\": \"stdio\",\n    \"command\": \"node\",\n    \"args\": [\"C:/Users/<YOUR-USER>/mcp-saos/dist/index.js\"]\n  },\n  {\n    \"name\": \"eu-sparql\",\n    \"transport\": \"stdio\",\n    \"command\": \"node\",\n    \"args\": [\"C:/Users/<YOUR-USER>/mcp-eu-sparql/dist/index.js\"]\n  }\n]\n```\n\n## Tests\n\n```bash\nnpm run drift          # offline: INSTRUCTIONS consistent with TOOLS and ErrorCode\nnpm run test:offline   # offline: query builders + parsers on fixtures (no network)\nnpm run smoke          # live: all 5 tools against Cellar + GDPRhub\n```\n\n## License\n\nMIT.\n\n## Part of the MateMatic legal stack\n\nThis server is one of five MCP connectors covering Polish jurisdiction +\nEU law, used by [Patron](https://github.com/matematicsolutions/patron)\n(AGPL-3.0) and any other MCP-aware legal AI agent.\n\n- **mcp-eu-sparql** (this repo) - EU law + CJEU (EUR-Lex / Cellar)\n- [mcp-saos](https://github.com/matematicsolutions/mcp-saos) - common courts, SN, TK, KIO\n- [mcp-nsa](https://github.com/matematicsolutions/mcp-nsa) - NSA + 16 WSA administrative courts\n- [mcp-isap](https://github.com/matematicsolutions/mcp-isap) - Polish legislation (Dz.U. + M.P.)\n- [mcp-krs](https://github.com/matematicsolutions/mcp-krs) - Polish company registry (KRS)\n\n\nAll five MCP servers share the same `structuredContent.citations`\ncontract: each tool returns an array of `{title, url, snippet?, ...metadata}`\nthat legal agents can render directly in their citation panel.\n\nSee [matematicsolutions/.github](https://github.com/matematicsolutions)\nfor the full org profile.\n",
  "bytes": 4331,
  "sha": "9a677c02f4b87bca60a32a90596626b3f7b5471f38c3694a2da0944935c537dc",
  "repo_slug": "matematicsolutions/mcp-eu-sparql",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_matematicsolutions_mcp_eu_spar_bc2024ff/readme"
}