Skip to main content
Glama
mcp-sejm-proces

mcp-sejm-proces

by pwasniowski

mcp-sejm-proces

MCP server dla polskiego procesu legislacyjnego (druki sejmowe + historia procesu) przez oficjalne, bezpłatne API Sejmu RP (api.sejm.gov.pl). Zero kluczy API.

Autor: Piotr Waśniowski, Legal Link.

Domyka trójkę z Twoim mcp-isap (ustawy, Dz.U./M.P.) i mcp-eu-sparql/mcp-saos/mcp-nsa (orzecznictwo) — ten sam kontrakt structuredContent.citations, ten sam wzorzec kodów błędów, ten sam drift test.

Tools

  • search_prints(title, term?, limit?) — szuka druków po fragmencie tytułu. API Sejmu nie filtruje po swojej stronie — ten tool ściąga pełną listę druków danej kadencji (~1.7 MB, kilka tysięcy pozycji) i filtruje lokalnie. Wynik cache'owany 10 minut.

  • get_print(nr, term?) — metadane druku: tytuł, daty, załączniki PDF, numer procesu.

  • get_process(nr, term?) — serce serwera: pełna historia procesu legislacyjnego — etapy (czytania, prace komisji, głosowania), czy przyjęty, link do RCL, i ELI wynikowego aktu jeśli proces zakończył się publikacją.

Domyślna kadencja: 10 (aktualna od 13.11.2023) — sprawdź, czy to się nie zmieniło, jeśli uruchamiasz ten serwer po kolejnych wyborach.

Related MCP server: mcp-isap

Domykanie pętli z mcp-isap

get_process zwraca ELI (np. "DU/2024/1635"), gdy proces zakończył się publikacją aktu. To ten sam identyfikator, który przyjmuje mcp-isap.get_act / get_act_text — droga "druk → proces → aktualny tekst ustawy" jest teraz w pełni przejezdna między tymi dwoma serwerami.

Ważne pułapki (potwierdzone empirycznie, 2026-08-05)

  • Nie każdy druk ma własny proces. HTTP 404 na get_process dla realnie istniejącego druku jest normalne (np. pisma dodatkowe, część raportów) — nie jest to błąd serwera. Sprawdzone na żywo: druk 200 i 400 (kadencja 10) nie mają procesu, druk 300 ma proces, ale passed: false i brak ELI.

  • passed: false nie znaczy "odrzucony przez Sejm". Dla dokumentów typu "informacja rządowa" czy "lista kandydatów" to pole bywa false, bo takie dokumenty nie "przechodzą" w sensie ustawodawczym — to nie jest głosowanie, które przegrało.

  • Numer druku z sufiksem to inny dokument. "23-A" (pismo dodatkowe do druku 23) ≠ "23" — potwierdzone na żywym API (term9/prints/23-A zwraca inny tytuł).

Build + run

npm install
npm run build
npm start                 # stdio transport

npm run drift              # offline - spójność INSTRUCTIONS/TOOLS/ErrorCode
npm run test:offline       # offline - walidacja, formatowanie, fixtures z żywych odpowiedzi
npm run smoke               # LIVE - api.sejm.gov.pl (brak udokumentowanego dziennego limitu)

Konfiguracja Claude Desktop

{
  "mcpServers": {
    "sejm-proces": {
      "command": "node",
      "args": ["<ścieżka>/mcp-sejm-proces/dist/index.js"]
    }
  }
}

License

MIT.

Available Tools

3 tools
get_printA
Read-onlyIdempotent

Szczegóły druku sejmowego po numerze: tytuł, daty, załączniki (PDF), i numer powiązanego procesu legislacyjnego (jeśli druk taki proces zainicjował - nie każdy druk ma własny proces, np. pisma dodatkowe do innego druku). Bledy: missing_arg, invalid_term, invalid_print_number, not_found, upstream_error.

Inputs: nr (required), term.

get_processA
Read-onlyIdempotent

Pełna historia procesu legislacyjnego dla danego druku: etapy (czytania, prace komisji, głosowania), czy został przyjęty, link do RCL, i ELI wynikowego aktu jeśli proces zakończył się publikacją (Dz.U. lub M.P.). NIE każdy druk ma proces - dokumenty typu 'informacja rządowa' czy 'lista kandydatów' zwykle nie mają ELI i passed bywa false bez żadnej wady - to nie znaczy 'odrzucony', tylko 'nie podlega przyjęciu w sensie ustawodawczym'. Dla aktualnego statusu obowiązywania wynikowego aktu użyj mcp-isap.get_act z ELI z tej odpowiedzi. Bledy: missing_arg, invalid_term, invalid_print_number, not_found, upstream_error.

Inputs: nr (required), term.

search_printsA
Read-onlyIdempotent

Szuka druków sejmowych po fragmencie tytułu (case-insensitive, polskie znaki). API Sejmu nie filtruje po swojej stronie - ten tool ściąga pełną listę druków danej kadencji (ok. 1.7MB, kilka tysięcy pozycji) i filtruje lokalnie, więc pierwsze wywołanie w sesji jest wolniejsze niż kolejne (cache 10 min). Bledy: missing_arg, invalid_term, upstream_error.

Inputs: title (required), term, limit.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a distinct purpose: search_prints finds prints by title fragment, get_print fetches detailed metadata for a specific print, and get_process retrieves the full legislative history. There is no overlap in their core functions, and the descriptions clearly differentiate them.

    Naming Consistency5/5

    All tool names follow the verb_noun pattern with snake_case: search_prints, get_print, get_process. This is fully consistent and predictable.

    Tool Count5/5

    Three tools is a well-scoped set for a focused server about Polish Sejm legislative processes. Each tool serves a necessary step in the workflow: search, retrieve, and process history, without unnecessary bloat.

    Completeness5/5

    The tool set covers the core read-only lifecycle: finding a print, getting its details, and accessing its legislative process. It appropriately references another server for act status, indicating a deliberate scope. There are no obvious dead ends for the intended domain.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Enables AI-powered legal research and analysis of Polish legal acts from the Sejm API. Provides comprehensive search, document retrieval, metadata analysis, and content access for legal documents from Dziennik Ustaw and Monitor Polski.
      13
      23
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI assistants to query official Polish Sejm data and the ELI legal acts database for deputies, clubs, committees, votes, interpellations, bills, proceedings, transcripts, and legal acts, with source links.
      29
      51 npm
      2
      Apache 2.0
    • A
      license
      A
      quality
      C
      maintenance
      Enables searching Polish Constitutional Tribunal judgments and rulings (with facet filters and sorting) and fetching the full HTML text of a given judgment directly from trybunal.gov.pl, without authentication.
      3
      Apache 2.0