Skip to main content
Glama

North Macedonia Legal Research MCP Server (mk-legal-mcp)

Model Context Protocol (MCP) server providing direct, read-only access to North Macedonia (MK) legislation, multi-tier judicial decisions (First Instance, Regional/Cantonal/Appellate, and Supreme/Constitutional courts), and statutory citation verification for Claude Desktop, Cursor, and Antigravity.


Quick Desktop Setup (No Command Line Required)

This package includes a graphical installer for legal practitioners who prefer not to use terminal commands or edit JSON configuration files manually.

  1. Download: Click <> Code at the top right of this repository, select Download ZIP, and extract the folder to your computer.

  2. Run the Setup Utility:

    • Windows: Double-click Click_Here_To_Install_Windows.bat

    • macOS: Double-click Click_Here_To_Install_Mac.command

  3. Connect: Click Install & Connect Automatically in the setup window and restart Claude Desktop.

System Integrity Note: The setup utility operates strictly in read-only mode with respect to your personal files and documents. It installs an isolated Python environment inside the extracted folder and registers the server entry in your AI client configuration.


Related MCP server: Bulgaria Legal Research MCP Server

Multi-Tier Judicial Hierarchy & Official Sources

This server indexes and queries decisions across the full judicial hierarchy of North Macedonia, allowing practitioners to filter research by procedural stage:

Judicial Tier

Covered Courts & Tribunals

Tier 1 — First Instance

Osnovni sudovi (27 Basic Courts including Osnoven građanski sud Skopje & Osnoven krivičen sud Skopje)

Tier 2 — Regional / Cantonal / Appellate

4 Apelacioni sudovi (Skopje, Bitola, Gostivar, Štip), Upravni sud & Viš upraven sud

Tier 3 — Supreme & Constitutional

Vrhoven sud na Republika Severna Makedonija (vsrm.mk) & Ustaven sud na RSM (ustavensud.mk)

  • National Legislation Registry: Služben vesnik na RSM (slvesnik.com.mk) & Akademika / Pravda Legislation (https://www.slvesnik.com.mk)

  • Multi-Tier Case Law Database: Nacionalen portal na sudski odluki - Sud.mk (All Basic, Appellate, Administrative & Supreme Courts) (http://www.sud.mk)

  • Supported Citation Format Example: Рев1.бр.123/2023 or Службен весник на РСМ бр. 20/24

Indexed Court & Regional Sub-Portals

Sub-Portal Identifier (sub_court)

Official Endpoint / Registry

sud_mk_all_tiers

http://www.sud.mk

vrhoven_sud

http://www.vsrm.mk

apelacionen_skopje

http://www.asskopje.mk

apelacionen_bitola

http://www.asbitola.mk

apelacionen_stip

http://www.asstip.mk

apelacionen_gostivar

http://www.asgostivar.mk


Available MCP Tools

Tool

Description

search_legislation

Searches enacted statutes, codes, decrees, and official gazette publications in North Macedonia.

search_case_law

Searches national jurisprudence and European/ECLI-linked judgments for North Macedonia.

search_tiered_court_decisions

Filters case law specifically by judicial instance (first_instance, appellate_regional, supreme_constitutional) or regional/cantonal court key (sub_court).

list_court_hierarchy

Returns the complete 3-tier court structure and registered sub-portal endpoints for North Macedonia.

get_legal_document_markdown

Retrieves full statutory or judicial texts and converts them into clean Markdown.

verify_citation

Validates statutory and case law citations against official registries.


{
  "mcpServers": {
    "mk-legal-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jurisatlas/mk-legal-mcp",
        "mk-legal-mcp"
      ]
    }
  }
}

Available Tools

6 tools
list_court_hierarchyList Court HierarchyA

Return the complete step-by-step multi-tier judicial hierarchy for North Macedonia (MK): Tier 1 (First Instance / Trial / Municipal / District Courts), Tier 2 (Regional / Cantonal / County / Appellate Courts), Tier 3 (Supreme / Cassation / Constitutional Courts), and all official court sub-portals.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden; it discloses the jurisdictional scope (MK only) and the tier contents, which is real behavioral context. However, it says nothing about whether the hierarchy is static or reflects per-jurisdiction variation, nor about caching or freshness, which matters for a reference-data tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no preamble or filler; the tier enumeration and synonym list earn their place by making the return contents predictable. It is long but dense, with only mild redundancy from stacking alternative court-name synonyms.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format needn't be explained, and with no parameters the surface area to document is small. The one residual gap is that MK-only scope is asserted without guidance on behavior for other jurisdictions, but otherwise the definition covers what an agent needs to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is fully specified (additionalProperties: false), so there is no parameter meaning for the description to add. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and a concrete resource ('complete step-by-step multi-tier judicial hierarchy for North Macedonia (MK)'), then enumerates exactly what is inside each tier. An agent can distinguish it from search_tiered_court_decisions because this returns the taxonomy itself rather than decisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the read-only, zero-parameter nature makes it obviously a reference/lookup call, but the description never says when to reach for this versus search_tiered_court_decisions or search_case_law. No exclusions or prerequisites are stated, so the agent must infer that this is the setup step before tiered searching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_case_lawSearch Case LawB

Search North Macedonia (MK) court decisions and binding precedents via Sud.mk National Court Decisions Portal (sud.mk), Vrhoven sud (vsrm.mk) & Ustaven sud (ustavensud.mk) (Supported courts: Врховен суд на РСМ (Supreme Court), Уставен суд на РСМ (Constitutional Court), Апелациони судови, Управен суд).

NameRequiredDescriptionDefault
courtNoOptional court filter (Врховен суд на РСМ (Supreme Court), Уставен суд на РСМ (Constitutional Court), Апелациони судови, Управен суд).
limitNoMaximum number of judgments to return.
queryYesLegal issue, keywords, party name, or ECLI/case number.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the data sources, that results include binding precedents, and which courts are covered, which is genuine behavioral context. It says nothing about ranking, full-text versus snippet results, coverage gaps, or rate limits that would help an agent predict output quality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler prose, but the court list is repeated verbatim from the schema and the nested parentheses make the sentence dense and hard to parse. The redundant court enumeration does not earn its place twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the source/court scope is adequately covered. What is missing is disambiguation from the near-identical sibling search_tiered_court_decisions, which is the main thing an agent needs to route correctly among five legal sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are documented in the schema, setting the baseline at 3. The description restates the supported court values already present in the court parameter description and adds no query syntax or matching behavior beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Search ... court decisions and binding precedents') and names the concrete portals (sud.mk, vsrm.mk, ustavensud.mk) plus the courts covered. It does not, however, distinguish this tool from the close sibling search_tiered_court_decisions, so an agent cannot resolve the overlap from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this search versus search_tiered_court_decisions, get_legal_document_markdown, or verify_citation. The list of supported courts is scope information, not usage guidance, and no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_legislationSearch LegislationB

Search North Macedonia (MK) national legislation (statutes, acts, codes, regulations) via Služben vesnik na RSM (slvesnik.com.mk) & Akademika / Pravda Legislation and European/International legal registries.

NameRequiredDescriptionDefault
yearNoOptional enactment year filter.
limitNoMaximum number of results to return.
queryYesKeywords or statute title/number to search in North Macedonia legislation.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden, yet it discloses no operational traits beyond naming the sources. It is unclear whether results are aggregated across the three named registries, how results are ranked or deduplicated, how the year filter interacts with search terms, or whether there are rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and jurisdiction first, which is efficient. The trailing list of domain names and registries is somewhat dense and adds breadth at the cost of readability, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the three simple parameters are fully documented in the schema. However, for a search tool spanning multiple distinct registries, the missing explanation of how sources are combined and what coverage to expect leaves a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description adds no extra meaning about the query, year, or limit parameters. It does not explain, for example, whether 'year' matches enactment date strictly or whether query accepts statute numbers as the schema hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search ... national legislation') and enumerates the document types covered (statutes, acts, codes, regulations), which makes the scope concrete. It does not explicitly contrast itself with sibling tools such as search_case_law, so an agent must infer that this tool covers statutes rather than court decisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the resource type: an agent can infer it should call this when looking for statutes instead of case law. There is no explicit when-to-use, when-not-to-use, or statement about how it relates to search_case_law or verify_citation, and no prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tiered_court_decisionsSearch Tiered Court DecisionsA

Search court decisions in North Macedonia (MK) filtered by specific judicial tier or regional/cantonal/appellate court. Supports Tier 1 (first_instance), Tier 2 (appellate_regional — including Cantonal/Regional/County/Circuit courts), and Tier 3 (supreme_constitutional), or a specific sub-portal key from list_court_hierarchy.

NameRequiredDescriptionDefault
tierNoJudicial stage: 'first_instance', 'appellate_regional' (Cantonal/Regional/Circuit/Appellate), 'supreme_constitutional', or 'all'.appellate_regional
limitNoMaximum number of decisions to return.
queryYesLegal issue, statute article, case number, or keywords.
sub_courtNoOptional specific court/canton/region key (e.g. 'kanton_sarajevo', 'kanton_tuzla', 'kanton_mostar', 'okruzni_banja_luka', etc.).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It discloses the jurisdiction and the tier vocabulary but says nothing about result ordering/ranking, whether tier and sub_court interact or one overrides the other, or what happens when a tier yields no matches; the presence of an output schema offsets the omission of return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense, front-loaded sentences; scope and jurisdiction come first, then the tier vocabulary. No filler, though the parenthetical court-name list is slightly verbose where a pointer to the tier documentation would suffice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only four parameters, full schema coverage, and an output schema in place, the description covers what an agent needs to construct a call correctly, including where sub_court values come from. The remaining gap is competitive positioning against the near-identical search_case_law sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by mapping domain vocabulary to raw enum values (Tier 1 = first_instance, Tier 2 = appellate_regional covering Cantonal/Regional/County/Circuit, Tier 3 = supreme_constitutional) and by directing the agent to list_court_hierarchy for valid sub_court keys. It does not explain the precedence between tier and sub_court.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (search) plus resource (court decisions), jurisdiction (North Macedonia/MK), and the distinguishing axis (judicial tier / sub-portal court). However, the sibling set contains search_case_law, and the description never explains how this tool differs from it, so an agent cannot fully disambiguate from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage via the tier enumeration and points the agent to list_court_hierarchy as the source of sub_court keys, which is genuinely actionable. It stops short of explicit when-to-use/when-not guidance, particularly against search_case_law and search_legislation, and gives no guidance on choosing between tier and sub_court.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_citationVerify CitationA

No-Hallucination Citation Verifier for North Macedonia (MK). Validates format and live existence of legal citations (e.g., 'Рев1.бр.123/2023 or Службен весник на РСМ бр. 20/24') against official North Macedonia and ECLI/ELI registries to prevent AI-hallucinated citations.

NameRequiredDescriptionDefault
citationYesCase citation, ECLI, or statute reference to verify (e.g., 'Рев1.бр.123/2023 or Службен весник на РСМ бр. 20/24').

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that checks are against live external registries ('live existence'), hinting at remote lookups, but says nothing about failure semantics (does an unverifiable citation return a flag or an error?), latency, or rate limits — meaningful gaps for a network-dependent tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence delivers the core claim and scope immediately with no filler. The marketing-style label ('No-Hallucination Citation Verifier') and the closing 'prevent AI-hallucinated citations' clause are mildly redundant with the preceding text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and there is only one simple parameter. The description covers scope, targets, and example formats; the remaining gap is what a negative verification result looks like at the tool level, which the output schema likely covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single required parameter and 100% schema description coverage, the schema already defines the argument; the description's added value is confirming that ECLI/ELI identifiers and statute gazette references are in scope, aligning with the schema examples. It does not add format tolerance rules (whitespace, transliteration, abbreviations) beyond what the schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (validates) and resource (legal citations), names the exact registry targets (North Macedonia official registries and ECLI/ELI), and gives concrete citation format examples. It is clearly distinguishable from the sibling search_* tools, which retrieve documents rather than verify a given citation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intent ('prevent AI-hallucinated citations') implies the use case — verifying a citation you already hold — but the description never states when to prefer it over search_legislation or search_case_law, nor any exclusions or prerequisites. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 6 tool updatesv1.1.0
    • First observedget_legal_document_markdown
    • First observedlist_court_hierarchy
    • First observedsearch_case_law
    • First observedsearch_legislation
    • First observedsearch_tiered_court_decisions
    • First observedverify_citation

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clearly distinct purposes: legislation search, case-law search, document retrieval, court hierarchy, tiered case search, and citation verification. The main overlap is between search_case_law and search_tiered_court_decisions, but the latter is explicitly scoped to tier/regional filtering, so an agent can usually distinguish them.

Naming Consistency5/5

All tool names use consistent snake_case with a clear verb-first pattern: search_*, get_*, list_*, and verify_*. The one longer name, get_legal_document_markdown, still follows the same convention and remains readable.

Tool Count5/5

Six tools is well-scoped for a legal research server, with each tool covering a distinct part of the workflow. There is no obvious bloat or missing core operation at this count.

Completeness4/5

The surface covers legislation search, case-law search, full-document retrieval, court hierarchy, tiered court search, and citation verification, which is strong lifecycle coverage for legal research. Minor gaps might include direct citation-to-document resolution or richer filtering, but agents can work around these with the existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables read-only search and retrieval of Albanian legislation, multi-tier court decisions, and full legal texts, plus verification of statutory and case-law citations against official registries.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only search and retrieval of Croatian legislation, multi-tier court decisions, and statutory or case-law citation verification through official legal registries.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only search and retrieval of Serbian legislation, multi-tier court decisions, and full legal texts as Markdown, plus validation of statutory and case-law citations against official registries.
    MIT