lagen-nu-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lagen-nu-mcpVad säger 8 kap. 2 § socialtjänstlagen?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
lagen-nu-mcp
MCP-server och cache-pipeline för svensk lagtext, rättsfall och förarbeten från lagen.nu.
Data hämtas från lagen.nus publika Atom-feeds, cachas i Supabase Postgres (schema lagen_nu) och läses bara från cachen av MCP-verktygen. Ingen live-skrapning per query.
Skrapning av lagen.nu är juridiskt/avtalsmässigt godkänd. Tjänsten är ideell och volontärdriven — vi håller en identifierande User-Agent och max ~1 req/s.
Status
Fas | Innehåll | Läge |
1 | Feed-poller → | v1, den här koden |
2 | Fetcher + schema (dokument + SFS-versioner) | v1. |
3 | Svensk | Kolumn + GIN i schemat. Paragrafindex fylls av fetchern. |
4 | MCP-verktyg (search/get SFS, rättsfall, förarbeten) | Inte påbörjad |
5 | Paragraf-diff mellan | Efter MVP |
6 | Semantisk sökning ( | Avvaktande — se nedan |
Related MCP server: se-eli-mcp
Fas 1 — poller
Cron (t.ex. varje timme):
Hämtar kategorifeeds (
sfs,dv,forarbeten,myndfs,myndprax,keyword).Parsar varje entry:
<id>+<updated>.Jämför mot
lagen_nu.feed_state.last_seen_entry_updated.Skriver nya/ändrade dokument-URL:er till
lagen_nu.pending_fetch(upsert på URL).Loggar
new/seenper feed.
Första körningen enqueuar allt på den aktuella feedsidan (lagen.nu paginerar äldre poster via prev-archive på äldre Ferenda-feeds). Arkiv-backfill är inte med i Fas 1.
Varför 6 feeds, inte ~66?
sitenews listar många Atom-URL:er. Flera är filter på samma dataset plus en överordnad “alla”-feed. Default LAGEN_NU_FEED_MODE=roots pollar de sex dataset-feederna. all upptäcker varje feed.atom på sitenews (utom sitenews själv).
Schema
Eget schema lagen_nu i samma Supabase-projekt som Socialism. Poller/fetcher kör med service-role. RLS avstängt i v1.
pending_fetch fanns i Fas 1-beskrivningen men inte i Fas 2-DDL:n — den är tillagd i sql/001_schema.sql.
psql "$DATABASE_URL" -f sql/001_schema.sqlKöra pollern
python3 -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
cp .env.example .env # fyll i DATABASE_URL
python -m lagen_nu_mcp poll
python -m lagen_nu_mcp poll --store memory
python -m lagen_nu_mcp fetch --limit 20Fetchern tömmer pending_fetch, hämtar varje URL med Accept: application/json först (lagen.nu svarar idag med HTML) och sparar body + paragrafer. För SFS roteras document_versions när Ändring införd t.o.m. ändrats; den gamla raden får konsolidering_url.
Cron-exempel:
12 * * * * cd /opt/lagen-nu-mcp && .venv/bin/python -m lagen_nu_mcp pollIdentitet mot lagen.nu
User-Agent: lagen-nu-mcp/0.1 (+https://github.com/kajmund/lagen-nu-mcp; erik@devbrains.se)
LAGEN_NU_MIN_INTERVAL_SECONDS=1.0Tester
pip install -e '.[dev]'
pytestKända begränsningar (ej blockerande)
Helt upphävda lagar försvinner från lagen.nu. Historik finns bara för det vi själva hann arkivera.
Community-kommentarer (CC-BY-SA) saknar feed-signal. Utelämnas i v1.
Endast vägledande rättsfall (inte tings-/förvaltningsrätt). Kompletterande källa vid behov: Domstolsverket / offentligmcp.se.
MCP-verktygen (Fas 4) läser enbart cachen, aldrig live mot lagen.nu.
Fas 4-verktyg (plan)
search_law(query)— fritext motsearch_vector, SFS-nr + paragrafget_sfs(sfs_nr, paragraf?)— aktuell lagtext, ankareP9/P26aget_law_history(sfs_nr)— ändringspunkter urdocument_versionsget_law_version(sfs_nr, amending_sfs)— historisk lydelsesearch_case_law(query)/get_case(ref, domstol)— AD/HFD/MD/MIÖD/MÖD/NJA/PMÖD/RÅ/RH/RKget_forarbete(id)— prop/SOU/Ds/dirdiff_law_versions(sfs_nr, from_sfs, to_sfs)— Fas 5, efter MVP
Fas 6 — semantisk sökning (avvaktande, ej blockerande)
Bygg inte detta nu.
pgvectori samma Supabase-projekt är kandidaten för embeddingbaserad paragrafsökning, men bara om/när Fas 3-tsvectorinte räcker.Supabase Vector Buckets (S3, public alpha) utvärderas först efter att funktionen lämnat alpha.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP for CanLII: Canadian case law and legislation metadata (federal, provincial, territorial).
Svensk MCP-server för sökning och analys av ARN-beslut och konsumenttvister.
- LegalizeOAuthdev.legalize
Official MCP connector for Legalize: read and search its whole open corpus, at any point in time.
Riksdagen (Swedish Parliament) open data MCP.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables querying Swedish statutes, provisions, case law, preparatory works, and EU law cross-references from any MCP-compatible client.1922 npm1Apache 2.0
- AlicenseAqualityAmaintenanceEnables AI agents to search and retrieve consolidated Swedish statutes (SFS) from the Riksdagen open data API, with verifiable citations and persistent identifiers.465 PyPIApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to query and retrieve real-time open data, documents, protocols, and records from the Swedish Parliament (Riksdag) and Government Offices through 32 specialized MCP tools.31MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible AI clients to research official Turkish legal sources locally by searching judicial decisions, legislation, and Constitutional Court decisions, and by retrieving legal documents, individual articles, and legislation structures.MIT