Skip to main content
Glama

mcp-eu-sparql

Installation (one command)

Published on npm + the MCP Registry (io.github.matematicsolutions/mcp-eu-sparql). Run without cloning:

npx -y @matematicsolutions/mcp-eu-sparql

MCP client configuration (stdio):

{ "mcpServers": { "mcp-eu-sparql": { "command": "npx", "args": ["-y", "@matematicsolutions/mcp-eu-sparql"] } } }

(Building from source - below.)

MCP License: MIT Node

MCP server for EU law and CJEU case law via the Publications Office SPARQL endpoint (Cellar / EUR-Lex), plus national data-protection authority decisions via GDPRhub.

CJEU corpus in Cellar (SPARQL COUNT, 2026-07-08): 34,261 judgments (JUDG), 8,362 orders (ORDER), 14,480 Advocate-General opinions (OPIN_AG) - 57,103 judgments and opinions in total, each with CELEX + ECLI.

Related MCP server: cellar-wrapper

Tools

  • search_by_celex(celex, lang?) - act or judgment by CELEX number (e.g. 32016R0679 = GDPR, 62018CJ0311 = Schrems II).

  • search_by_date_range(date_from, date_to, document_type?, lang?, limit?)

    • acts within a date range, optionally narrowed to a type (REG / DIR / DEC / RECO / OPIN).

  • search_cjeu(query?, date_from?, date_to?, document_type?, lang?, limit?) - judgments (JUDG), orders (ORDER) and Advocate-General opinions (OPIN_AG) of the Court of Justice of the EU; optional keyword in the title (parties to the case, case number, keywords of the judgment).

  • search_cjeu_by_ecli(ecli, lang?) - CJEU judgment by ECLI identifier (e.g. ECLI:EU:C:2020:559 = Schrems II).

  • search_gdprhub(query, limit?) - full-text search in GDPRhub (the noyb project wiki): decisions of national data-protection authorities across the EU + commentary on GDPR articles. Content license: CC BY-NC-SA 4.0 - flagged in the license field of every citation.

Every response includes structuredContent.citations with the fields title, url, celex?, ecli?, publication_date?, document_type?, snippet?, license? - Patron reads this field and renders it in the UI panel as the "EU legal acts (EUR-Lex / CJEU)" section.

Stack

  • Node 18+

  • @modelcontextprotocol/sdk

  • Stdio transport (like mcp-saos)

  • Backend: HTTP POST to https://publications.europa.eu/webapi/rdf/sparql with format=application/sparql-results+json; GET to https://gdprhub.eu/api.php (MediaWiki API)

Build + run

npm install
npm run build
node dist/index.js   # starts the server on stdio

Wiring into Patron

In patron/backend/mcp-servers.json:

[
  {
    "name": "saos",
    "transport": "stdio",
    "command": "node",
    "args": ["C:/Users/<YOUR-USER>/mcp-saos/dist/index.js"]
  },
  {
    "name": "eu-sparql",
    "transport": "stdio",
    "command": "node",
    "args": ["C:/Users/<YOUR-USER>/mcp-eu-sparql/dist/index.js"]
  }
]

Tests

npm run drift          # offline: INSTRUCTIONS consistent with TOOLS and ErrorCode
npm run test:offline   # offline: query builders + parsers on fixtures (no network)
npm run smoke          # live: all 5 tools against Cellar + GDPRhub

License

MIT.

Part of MateMatic

This connector queries its source live. It is one of the Polish and EU source connectors bundled in PATRON and works with any MCP client.

mcp-saos, mcp-nsa, mcp-isap, mcp-krs and mcp-eu-sparql share one structuredContent.citations contract: each tool returns an array of {title, url, snippet?, ...metadata} that legal agents can render directly in their citation panel.

See matematicsolutions/.github for the full org profile.

Available Tools

3 tools
search_by_celexA
Read-onlyIdempotent

Znajdz akt prawny UE po numerze CELEX. Numer CELEX jest unikalny i identyfikuje akt niezaleznie od jezyka. Przyklady: 32016R0679 (RODO), 31995L0046 (uchylony dyrektywa o ochronie danych), 62022CJ0252 (orzeczenie CJEU). Zwraca tytul w wybranym jezyku + EUR-Lex URL.

Inputs: celex (required), lang.

search_by_date_rangeA
Read-onlyIdempotent

Znajdz akty prawne UE z zakresu dat (po dacie dokumentu). Opcjonalnie filtruj po typie (REG=rozporzadzenie, DIR=dyrektywa, DEC=decyzja, RECO=zalecenie, OPIN=opinia). Maks. 50 wynikow na zapytanie. Uzyteczne do przegladu aktow z konkretnego okresu legislacyjnego.

Inputs: date_from (required), date_to (required), document_type, lang, +1 more.

search_cjeuA
Read-onlyIdempotent

Wyszukaj orzeczenia Trybunalu Sprawiedliwosci UE (CJEU) - wyroki (JUDG) i postanowienia (ORDER). Opcjonalnie zawez do zakresu dat. Zwraca CELEX (np. 62022CJ0252), date wydania, tytul (jezyk wg lang) i EUR-Lex URL.

Inputs: date_from, date_to, lang, limit.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool targets a distinct search dimension: CELEX number, date range with type filter, and CJEU rulings. There is no overlap in functionality.

    Naming Consistency4/5

    Two tools follow 'search_by_<criterion>' pattern, while the third uses 'search_cjeu', which is slightly inconsistent but still clear and predictable.

    Tool Count4/5

    Three tools cover the core search needs for EU law (specific ID, date range, case law), though a keyword search tool could be added for completeness.

    Completeness3/5

    The set covers specific ID lookup, date-based filtering, and case law search, but lacks a general free-text keyword search, which is a notable gap for a legal research server.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers