← Server directory
MCP

OpenLegal4Everyone MCP

An MCP server for searching and reading Govs' legal sources, checking citations, and comparing revisions and supplied texts.

Installation & configuration

Service and availability

OpenLegal4Everyone MCP is the MCP interface of openlegal4everyone.stream. Its Korean LAW OPEN DATA adapter covers national statutes, administrative rules, local ordinances, treaties, court precedents, Constitutional Court decisions, legal interpretations, and administrative appeals. These are implemented dataset adapters; they do not establish which records a hosted corpus currently contains. The service provides legal information rather than advice about a particular case.

Status checked on 2026-10-02 (UTC): an operator-host inspection found the server and collection scheduler unready (Ready 0/1, CrashLoopBackOff). The public endpoint was not called during this documentation check. The instructions below describe the configured connection and implemented tools; current public availability, successful upstream collection, and complete corpus coverage remain unverified. A successful client connection alone does not establish any of them.

Connect

Use a client that supports remote MCP over Streamable HTTP. The configured HTTPS endpoint is:

https://openlegal4everyone.mcp.publicdata.stream/mcp

The documented server design uses anonymous access, with no user account, API token, or OAuth sign-in. You do not need to install the backend or obtain LAW OPEN DATA provider credentials to configure a client connection.

For Codex, merge the TOML example in the Client configuration section below into ~/.codex/config.toml. Preserve existing settings and avoid adding the same server table twice. Start a new Codex session, then use /mcp to inspect the active server. codex mcp list lists configured servers. See the official Codex MCP guide.

For Claude Code, merge the JSON example below into the mcpServers object in your project’s .mcp.json. Start Claude Code in that project, review its project-server approval prompt when shown, and use /mcp to inspect the connection. claude mcp get openlegal4everyone shows the configured server’s status. See the official Claude Code MCP guide.

Check the connection

  1. Confirm that your client reports the server as connected and exposes its tools.
  2. Ask the client to call server_info. It reports server identity, supported protocols, license, and the corresponding-source URL; it does not retrieve legal documents.
  3. Inspect the available tools before trying the workflows below. Corpus and text-comparison tools are optional server features; a missing tool may indicate deployment configuration or a different server version.
  4. When legal tools are available, read an identified document and its provenance to check retrieval separately. Report empty, unavailable, or incomplete results as returned rather than treating the connection check as a retrieval success.

Features and example questions

The following tools are implemented in the reference project. Use the connected server’s tool list to determine which are enabled.

TaskToolsWhat to expect
Find a law or phraselaw.resolve_name, database.query, database.rgResolve Korean names and abbreviations, or search retained text.
Read source textdatabase.get, database.get_metadata, law.articleRead a document, article, chapter, or annex with source and freshness metadata.
Check citations and referencescitation.verify, precedent.citing, article.impactCheck retained citations, find citing decisions, and inspect article references.
Inspect revisionsdatabase.history, database.diff, law.in_force_at, law.watch, law.lineageSelect or compare retained versions and inspect title changes or upcoming revisions.
Compare your own textstext.diffCompare two supplied drafts by lines and characters.
Request missing materialdatabase.object_status, database.request_collection, database.collection_statusInspect local state, explicitly request collection, and check the background request.

Example requests to your client:

  • “Read 민법 제750조 in Korean and include the source URL, revision, and last validation time.”
  • “List retained revisions of 근로기준법 and compare the two most recent available versions. Identify their publication and effective dates.”
  • “Check the law articles and case numbers cited in the text I provide. Separate verified citations from records the corpus has not observed.”
  • “Compare these two draft clauses and show every changed passage. Distinguish the exact text differences from any summary.”

These are workflow examples, not sample legal findings. English-language requests do not turn Korean source text into an official English translation.

Collection requests queue background work and do not immediately return legal text. Keep the returned request_id, check database.collection_status, and search again after completion. Completion does not guarantee the requested text was collected. Equivalent requests coalesce for 24 hours; avoid repeated requests in a loop. law.watch checks changes when called; scheduling and notifications belong to the client.

Check sources, dates, and coverage

Keep the official title, source URL, object identity, revision, and capture ID with each quotation. Include retrieved_at, validated_at, and freshness; translate or summarize only with a clear label. Provider text, extracted attachments, and OCR are separate evidence types. Disclose missing attachments or sparse annex text rather than reconstructing it.

Search results expose coverage, index lag, and collection notices. Zero hits with a continuation cursor require another page before concluding the search is empty. not_observed means this corpus has no observation; it does not mean the law or decision does not exist. none_found from precedent.citing does not establish that a precedent remains good law.

Use fresh_only: true when current text is required and report a freshness error instead of silently replacing it with stale text. Exact publication/effective-date selectors identify recorded dates. law.in_force_at selects from retained revisions on or before a date and reports the basis and inventory status; it does not decide which law applies to particular facts or resolve transitional rules.

Optional plugin setup

The separately defined OpenLegal plugin bundles the korean-law-research, legal-revision-history, and legal-text-comparison skills. Its manifests and skills have offline validation; live client connections, widgets, and public directory listings remain unverified in the reference documentation.

The repository documents these Claude Code commands:

/plugin marketplace add PublicData-stream/openlegal4everyoneMCP
/plugin install openlegal@openlegal4everyone

Choose either the plugin’s bundled connection or the manual connection above to avoid duplicate tool registrations.

For ChatGPT, enable developer mode in Settings → Security and login, then open ChatGPT Plugins, select the plus button, and enter the HTTPS endpoint above. Review the discovered tools after creating the connection. Availability depends on your account and workspace policy. This creates an MCP connection; it does not establish that the separately defined OpenLegal plugin is publicly listed or imports its bundled skills. Follow the official ChatGPT connection guide.

Supplied texts and temporary retention

The text-comparison implementation holds supplied text, patches, and results in application memory. Uploaded attachments expire ten minutes after the initial upload; comparisons and generated attachments expire ten minutes after publication. Reads do not extend those deadlines. Expiry prevents new reads, and periodic cleanup removes expired entries. An operation already using the text may retain it until the operation finishes.

Delete comparison results earlier with text.diff.delete and attachments with text.attachment.delete when finished. Comparison and attachment handles have independent lifetimes: deleting a comparison does not delete its patch attachment, and deleting an attachment does not delete the comparison. Keep handles private; anyone holding one may be able to read or delete its contents.

Memory storage, expiry, and deletion do not guarantee secure erasure of host memory, swap, or crash dumps, and do not remove text already returned to clients or retained in their history. See the Terms of Service and Privacy Policy for the public instance’s conditions and processing scope, including optional rate limiting and security records.

Troubleshooting

SymptomNext step
Connection fails or the server is unavailableCheck the exact HTTPS URL and /mcp path, client network access, and current service status. Configuration alone cannot resolve an unready backend.
Claude Code reports pending approvalOpen Claude Code in the project, review the server prompt, then check /mcp again.
A documented tool is missingInspect the tool list and server version; use only enabled tools.
not_observed, processing_pending, or collection_incompleteCheck database.object_status; request collection explicitly when available and track its status. Do not infer legal nonexistence.
freshness_unavailable or incomplete coverageReport the limitation, inspect source metadata and collection notices, and avoid a claim of current or complete results.
rate_limited or an expired cursor/handleRespect the returned retry guidance; restart expired search/read sessions or supply the text again rather than looping.

Reference documentation

The feature descriptions above use reference revision 2ce26a97b760c4073db46d0d538e0f829981da0d, not an assertion about the deployed version.

Client configuration

Codex

TOML
[mcp_servers.openlegal4everyone]
url = "https://openlegal4everyone.mcp.publicdata.stream/mcp"

Claude Code

JSON
{
  "mcpServers": {
    "openlegal4everyone": {
      "type": "http",
      "url": "https://openlegal4everyone.mcp.publicdata.stream/mcp"
    }
  }
}

ChatGPT plugin

The OpenLegal plugin combines an MCP connection with skills for Korean legal research, revision history, and text comparison. Its manifests and skills have been validated offline; live Claude and ChatGPT connections and public directory listings remain unverified. The optional setup steps are described above.

Plugin definition & documentation ↗