LegalMike

LMCP MCP Server

MCP server for Dutch & European legal search — 14 sources, citation-verified answers

Connect to LegalMike's MCP Server

LegalMike's Model Context Protocol (MCP) server gives your AI assistant access to Dutch and European legal sources. Ask a legal question and receive a grounded, citation-backed answer in seconds.

You can connect LegalMike to Claude on Claude.ai, the Claude desktop app, and Claude Code.

Claude.ai

  1. Go to SettingsConnectorsAdd Custom Connector
  2. Enter a name (e.g. "LegalMike") and the server URL: loading...
  3. Click Add — a browser window opens for you to log in with your LegalMike account
  4. In a conversation, click +Connectors and enable LegalMike

Available on Free (1 integration), Pro, Max, Team, and Enterprise plans. See the Anthropic documentation for more details.

Claude Code

Run this command to add the server:

claude mcp add --transport http lmcp loading...

Add to .vscode/mcp.json in your project:

loading...

Then open Copilot Chat in Agent mode. Copilot will prompt you to authenticate with your LegalMike account via OAuth.

If OAuth isn't available, pass an API key in the Authorization header as a Bearer token.

You can add MCP apps to ChatGPT if you have a Pro, Plus, Team, Enterprise, or Edu account.

  1. Go to SettingsApps & ConnectorsAdvanced settings and enable Developer mode
  2. Go back to Apps & Connectors and click Create
  3. Enter a name (e.g. "LegalMike") and the server URL: loading...
  4. Select "OAuth" as the connection mechanism and click Create
  5. In a new conversation, click +More and select LegalMike

See the OpenAI documentation for more details.

Work in progress. Contact info@legalmike.ai for early access.

MCP clients with OAuth support

Use server URL loading... with "OAuth" as the connection mechanism. Your client handles the authorization flow automatically.

loading...

API key (system-to-system)

For backend services, automated pipelines, or clients that don't support OAuth, pass an API key as a Bearer token in the Authorization header. No OAuth flow or client registration is needed.

{
  "mcpServers": {
    "lmcp": {
      "url": "loading...",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

API tokens are issued per organization with a configurable expiry. Contact info@legalmike.ai to request one for your organization.

Important: LMCP provides legal information, not legal advice. Answers are grounded in authoritative sources but should be verified by a qualified legal professional. LegalMike does not store your questions or use them for training. By using the MCP server you agree to our terms of use.

Request Pipeline

Each ask call passes through six stages before returning a response.

1
Understand One LLM pass that classifies intent (legal_question, follow_up, possibly_legal, meta_question, off_topic), the task type (onderzoek, opzoeken, samenvatten, vergelijken, casusbegeleiding, schrijven), and the research depth (direct, kort_aanbod, diepgaand — overridable via the length parameter). It also detects language (27 supported), checks completeness, flags legal misconceptions, and marks whether the answer needs current information. Non-Dutch questions are translated to Dutch for retrieval. Skipped entirely when smart_intake=false.
2
Web context Only when the intake flagged the question as time-sensitive (a running bill, a “current” figure, a year-stamped amount): fetches a short block of up-to-date context via web search. Optional and non-authoritative — legal conclusions still come from the curated sources. Skipped otherwise.
3
Orchestrate Splits the question into sub-questions and routes each to one or more of the 14 search tools based on legal domain.
4
Retrieve Runs routed searches in parallel (max 8 concurrent). Each tool performs query expansion, then hybrid retrieval (semantic + BM25) against its source. Returns ranked text chunks with metadata.
5
Synthesize Validates that at least one source returned chunks (evidence gate), then generates the answer. Its shape follows the research depth: direct gives a concise, free-form answer; kort_aanbod adds a short judgment on whether deeper research is worthwhile; diepgaand produces the full structured analysis. Every legal claim must cite a source identifier (ECLI, CELEX, BWB, etc.) with a link to the original document.
6
Grade Cross-references ECLI/CELEX numbers in the answer against retrieved chunks. Hallucinated citations trigger low confidence. Returns a confidence level (high / medium / low) via SSE notification: CONFIDENCE:{level}|{cited}/{provided}|{utilization}%.

Server Behavior

Research depth The answer adapts to the question: a short direct answer, a short answer plus a judgment on whether deeper research is worthwhile, or a full in-depth analysis. The server infers the level, or you can set it explicitly with the length parameter (short / medium / long).
Task type The intake recognises what kind of task is asked — analysis, looking up a provision verbatim, summarising, comparing, case guidance, or drafting — and shapes the answer format accordingly.
Current information Questions that hinge on up-to-date facts (running bills, year-stamped amounts, “current” figures) trigger a web-context lookup that supplements the curated legal sources. Legal conclusions remain grounded in the curated corpus.
Language handling Input in 27 languages is accepted. Questions are translated to Dutch before retrieval. Answers are always in Dutch. A disclaimer in the original language is prepended for non-Dutch input.
Incomplete questions If the question is too vague to search (no identifiable legal domain), the server returns a clarifying question instead of an answer. Location-dependent questions (local law) require a postcode or gemeente.
Follow-up detection When conversation_history is provided, the server detects follow-up questions and reconstructs the full context from prior turns. Topic switches are treated as new questions.
Citation verification ECLI and CELEX identifiers in the answer are cross-referenced against the actual retrieved documents. Unverifiable citations result in low confidence.
Progress notifications The server sends SSE progress updates during processing (e.g. "Zoeken in jurisprudentie..."). Long synthesis runs include periodic heartbeat messages.
Meta questions Questions about LegalMike itself (sources, pricing, privacy) are answered directly with product information and live dataset statistics, without running the full retrieval pipeline.

Authentication

LMCP requires authentication for all tool calls. Two methods are supported.

Method For How
OAuth 2.1 Individual users with a LegalMike account Your AI client handles the flow automatically (Authorization Code + PKCE). No keys to manage.
API Key (Bearer Token) System-to-system integrations, backend services LegalMike generates a long-lived token for your organization. Pass it as a Bearer token in the Authorization header. Contact info@legalmike.ai to request one.

Using an API key

Pass the token as a Bearer token in the Authorization header. No OAuth flow or client registration is needed.

curl -X POST https://mcp.legalmike.ai/mcp \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-app","version":"1.0"}},"id":1}'

Contact info@legalmike.ai to request an API key for your organization.

Client compatibility

Client OAuth 2.1 API Key
ChatGPT supported
Claude supported
Microsoft 365 Copilot supported supported
GitHub Copilot supported supported
Custom backend / API supported

Available Tools

LegalMike's MCP server provides tools to search Dutch and European legal sources and synthesize grounded answers. Your AI assistant can call these tools directly — every claim in the response is backed by a citation to the original source. You don't need to learn the tools yourself; your AI client discovers and invokes them automatically based on your questions.

Selecting specific sources. By default ask searches all sources. To restrict it, pass the restrict_to_sources parameter with one or more source ids (see the ask tool schema below for the full list and what each covers):
{"name": "ask", "arguments": {
  "question": "Wat is de Haviltex-norm?",
  "restrict_to_sources": ["caselaw_nl", "legislation_nl"]
}}
Unknown ids are ignored; selection stays within the sources your profile allows.

Smart intake behavior: With smart_intake=true (the default), restrict_to_sources is a voorkeur (preference) — the server may also search other sources when omitting them would hurt answer quality. When it does, the answer includes a footnote listing the added sources and a sources_added_beyond_request field in the response. With smart_intake=false, restrict_to_sources becomes a strikt (strict) filter — only the listed sources are searched.

Loading tools...

Legal Sources

Every answer is grounded in text chunks retrieved from these authoritative sources. Citations link directly to the original documents on their official platforms.

Jurisprudentie caselaw_nl Dutch case law from all courts — Hoge Raad, Gerechtshoven, Rechtbanken (ECLI, via rechtspraak.nl)
Wetgeving legislation_nl Dutch legislation, AMvBs, ministerial regulations (BWB, via wetten.overheid.nl)
Tuchtrecht disciplinary_law_nl Disciplinary law — medical, legal, notary, accounting (tuchtrecht.nl)
Lokale regelgeving local_law_nl Municipal & provincial rules, spatial filtering by postcode or gemeente (CVDR)
EU-wetgeving eurlex EU directives, regulations, decisions (CELEX, via EUR-Lex)
EU-rechtspraak eurlex Court of Justice & General Court judgments (CELEX, via EUR-Lex)
EHRM echr_eu European Court of Human Rights cases and practice guides (HUDOC)
Geschilbeslechting adr_decisions_nl ADR decisions: Kifid, SKGZ, Geschillencommissie Bouw (RAB)
Open-access literatuur open_access_literature_nl Open-access scholarly articles, legal research, and doctrine
Parlementaire stukken parliamentary_nl Kamerstukken, Memorie van Toelichting & legislative history
Tuchtraad Verzekeraars tuchtraad_verzekeraars_nl Insurance industry disciplinary board decisions
Commissie van Toezicht cvt_nl Detention oversight committee decisions on prisoner complaints
Raad voor Strafrechtstoepassing rsj_nl Appeals on detention, TBS, and youth protection decisions
Huurcommissie huurcommissie_nl Dutch rent tribunal decisions on residential lease disputes
Onderwijsgeschillen onderwijsgeschillen Education sector dispute resolution and arbitration decisions

FAQ

What is MCP?

The Model Context Protocol is an open standard for connecting AI clients to external tools and data. LMCP implements Streamable HTTP transport with SSE for progress notifications.

What transport does the server use?

Streamable HTTP. The endpoint is /mcp. The server returns a session ID on initialization. Progress updates and confidence scores are sent as SSE notifications during tool execution.

What does the confidence notification mean?

After each answer, the server sends CONFIDENCE:{level}|{cited}/{provided}|{utilization}%. level is high, medium, or low. cited/provided shows how many source chunks were referenced vs. retrieved. utilization% is the ratio. Low confidence typically means a hallucinated citation was detected.

How is conversation context handled?

Pass conversation_history (array of {role, content} objects) to enable follow-up detection and context reconstruction. The server detects topic switches and treats them as new questions automatically.

Does the server store questions or answers?

No. Questions and answers are not persisted and are not used for model training.

Health check endpoint?

GET /status returns {"status": "ok", "server": "LMCP"}.