Skip to main content
Glama

legal-mcp-croatia

An MCP server that lets an AI assistant search the Croatian court noticeboard, e-Oglasna ploča sudova.

It is read-only, it stores nothing, and it logs nothing. There is no database, no account, and no service in the middle: the server runs on your machine, talks to a public government API, and returns the answer. Nothing about what you searched for leaves the process.

That is deliberate. Which companies or people a law firm looks up is the firm's client list, and it is not ours to hold.


What e-Oglasna is

The electronic noticeboard where Croatian courts publish notices they are legally required to make public — enforcement (ovrha), corporate and personal bankruptcy, land-registry proceedings, substitute service, and other court publications. Notices from FINA and from notaries appear on the same board.

Each notice carries the issuing court, the case number, publication and expiry dates, the parties named, and the scanned decision as PDF.

The API is genuinely open: no registration, no API key, no rate-limit documentation. The underlying data is published under the Croatian Otvorena dozvola (Open Licence).

It is a noticeboard, not a case-law database. There is no legislation and no judgments here — for those, see Narodne novine and the Supreme Court's case-law portal.


Related MCP server: Law7 MCP

Install

git clone https://github.com/AvoccadoTech/legal-mcp-croatia.git
cd legal-mcp-croatia
pip install -e .

Requires Python 3.11 or newer.

Run

The server speaks MCP over stdio. Register it with any MCP-capable client:

{
  "mcpServers": {
    "croatia-legal": {
      "command": "python",
      "args": ["-m", "croatia_legal_mcp"]
    }
  }
}

Optional: set EOGLASNA_DOWNLOAD_ROOT to choose where downloaded PDFs go. It defaults to ./eoglasna-downloads, and the server refuses to write outside it.


Tools

Tool

What it does

eoglasna_search_notices

Search by company name, personal name, case number or OIB, optionally within a publication date range

eoglasna_get_notice

One notice in full — every party, every attached document

eoglasna_download_notice_document

Save one attached PDF locally and return its path

eoglasna_list_courts

Every court and body publishing to the board, with codes

eoglasna_search_notices takes a source:

source

Endpoint

Use it for

courts (default)

/court-notice

Everything from courts, with court, case number and case type

all

/notice

Also FINA and notary notices, but without those three fields

company_bankruptcies

/court-notice/legal-person-bankruptcy

Corporate insolvency only — has a client's counterparty gone under?

personal_bankruptcies

/court-notice/natural-person-bankruptcy

Consumer insolvency only

The bankruptcy views are separate endpoints rather than a filter, because caseType is another parameter the API accepts and ignores.

company_bankruptcies names only legal persons, which makes it the one view safe to put on a screen in front of an audience.


One thing worth knowing before you build your own

The published OpenAPI document describes the search filter as an object, and the API accepts a JSON-encoded filter= parameter and then ignores it. You get HTTP 200, a well-formed page of results, and the entire ~900,000-notice corpus sorted newest-first — for every search term, including nonsense ones.

It looks like it is working. It is not. Spring binds the filter from flat query parameters:

GET /api/v1/court-notice?text=HEP&datePublishedFrom=2026-01-01&page=0

A monitoring tool built on the documented form would report a match for every term it was ever given. There is a regression test in tests/test_smoke.py guarding this.


Personal data

Notices name natural persons and include their OIB and, in the full record, their home address. This is a public register and republication is lawful, but it is still personal data under GDPR.

Two consequences the server enforces or flags:

  • Addresses appear only when you request one specific notice, never in bulk search output.

  • Every notice carries an expiry date. That is the date it comes off the board — the state has decided it should stop being public. If you keep a copy past that date, you are republishing something that was deliberately withdrawn. Build a retention rule.

The expiry date is not a procedural deadline and must never be presented as one. It says when the notice disappears, not when anyone has to do anything.


Not a substitute for a lawyer

This is a search tool over a public register. It does not check whether a notice was validly served, whether a deadline runs, or what any of it means. A qualified lawyer decides that.


Roadmap

  • Sudski registar (company register) — API exists, needs a free registration

  • Narodne novine (official gazette) — ELI metadata is open; full text is HTML/PDF and the reuse licence is unclear

Sister servers for other jurisdictions will follow the same shape: one repository per jurisdiction, tools named for the register they query.

Licence

Apache-2.0. Built by Avoccado Tech.

The code is free and always will be. If you would rather someone else kept it working when the state moves an endpoint — as the company register did this year, breaking every tutorial written about it — that is what we do for a living.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AvoccadoTech/legal-mcp-croatia'

If you have feedback or need assistance with the MCP directory API, please join our Discord server