
Egov Law Mcp
io.github.SHAYOUWORLDPublished by GitHub account SHAYOUWORLDv0.1.1Updated Oct 24, 2026
Search Japanese laws via e-Gov Law Search and fetch article text with source attribution.
Overview
Local MCP server that lets an assistant search Japanese laws and fetch article text from the e-Gov Law API, with source citations.
- What you can do
- Search current Japanese laws by title, abbreviation, law number or law ID, with optional category filter.
- Retrieve a specific article or paragraph of a law by law ID, law number or revision ID.
- Fetch a law's basic metadata and a plain-text preview.
- Find likely related enforcement orders and regulations for a base law name.
- Pin results to a date or exact law revision, and return law name, ID, revision, retrieval time and e-Gov URL with every result.
- When to use it
- Useful when an assistant needs to answer questions about Japanese statutes and cite the official text, or when you want to check a law as it stood on a specific date. It is a reference tool for research and drafting, not a substitute for legal advice.
- Requirements
- Node.js 20 or later, run locally over stdio (for example via npx). Network access to laws.e-gov.go.jp. No account, API key or environment variable is required; optional EGOV_LAW_MCP_INTERVAL_MS and EGOV_LAW_MCP_TIMEOUT_MS tune pacing and timeout.
Installation
In SourceWeft
- Open Egov Law Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@codeagentjp/egov-law-mcp
Local stdio MCP server for searching Japanese laws and retrieving article text from e-Gov Law Search through the e-Gov Law API Version 2.
This server does not call an LLM. It only returns source-backed law data and e-Gov URLs so your MCP client (Claude Desktop, Claude Code, Cursor, or any other agent) can cite the original source.
Design choices were informed by reading Digital Agency's open-sourced Lawsy-Custom-BQ (released 2026-04-24 as part of the Gennai government AI OSS release). See the design notes at codeagent.jp.
Why another e-Gov MCP
There is an existing egov-law-mcp on npm by another author. This package differs in four ways:
find_related_laws— looks up enforcement orders (施行令) and regulations (施行規則) for a given base law name or abbreviation. Lawsy-Custom-BQ has the same step server-side; useful because definitions and delegated rules often live outside the parent act.- Source attribution baked into every tool result — every response includes the law name, law ID, article number, the law revision ID (版), the retrieval time, and the canonical e-Gov URL, so the calling LLM cannot drop the citation.
- Point-in-time retrieval — every tool accepts
asof(YYYY-MM-DD), so you can pin the same version of a law that a benchmark or an earlier answer used. - Single-file
.mjs, no build step —bin/egov-law-mcp.mjsruns directly under Node 20+. Easier to audit, smaller install.
Status
MVP. The API surface is intentionally small:
search_laws— search current Japanese laws by title, abbreviation, law number, or law ID.get_article— retrieve a specific article (or paragraph) from a law by law ID, law number, or law revision ID.get_law— retrieve basic metadata and a text preview for a law.find_related_laws— find likely related enforcement orders and regulations.
All four accept an optional asof. Since v0.2.0 every request goes to Law API v2 (/api/2/laws and /api/2/law_data/{id}); nothing calls the v1 endpoints any more. See Compatibility with v0.1.x.
Requirements
- Node.js 20 or later
- Network access to
https://laws.e-gov.go.jp
Install
From npm:
From source for development:
Tools
search_laws
Searches laws that are not repealed (repeal_status=None) with one laws request. Keywords that look like a law ID (322AC0000000049) go to law_id, keywords that look like a law number (平成十五年法律第五十七号, …第五十七号) go to law_num, and everything else goes to law_title, which e-Gov matches against both the title and its abbreviations (個人情報保護法 finds 個人情報の保護に関する法律). With several space-separated words, the longest goes to e-Gov and the rest are checked locally. Up to 500 matches are ranked locally; truncated: true means e-Gov had more and the keyword should be narrowed.
category maps to law_type: acts = Constitution, Act; orders = CabinetOrder, ImperialOrder; rules = MinisterialOrdinance, Rule; all = no filter.
get_article
Retrieves an article from the main provision (本則) with law_data?elm=MainProvision-Article_N[-Paragraph_M]. Provide either lawId or lawNum. article accepts 32, 32_2, 32の2, 第32条の2, or 第三十二条の二; paragraph accepts 2 or 第二項.
To pin an exact version, pass a law revision ID as lawId (for example 322AC0000000049_20260717_508AC0000000060); e-Gov then ignores asof. e-Gov accepts asof from 2017-04-01 onward.
get_law
Retrieves basic metadata and a plain text preview of a law.
find_related_laws
Searches for laws whose names or abbreviations look related to a base law name, including enforcement orders and regulations. It sends one laws?law_title= request with the name minus a trailing 法律 / 法 (and minus 施行令 / 施行規則, so a regulation also finds its parent act).
What the results contain
get_article and get_law return lawId, lawNum, lawTitle, lawRevisionId, and asof, plus a source object:
url opens the current version on e-Gov Law Search. apiUrl reproduces the exact request, and lawRevisionId identifies the version that was returned. search_laws and find_related_laws return source with apiUrl, asof, and retrievedAt at the top level, and each result carries lawRevisionId, abbreviations, and the e-Gov URL.
Compatibility with v0.1.x
v0.1.x called Law API v1 (/api/1/lawlists, /api/1/lawdata, /api/1/articles), which has no point-in-time parameter. v0.2.0 moves every tool to v2. The decision record is docs/adr/0001-law-api-v2-migration.md.
Unchanged:
- Tool names, required inputs (
keyword,article,lawName, andlawIdorlawNum), and every existing input name. - Every existing output field name (
lawId,lawName,lawNo,promulgationDate,score,relationScore,url,text,preview,truncated,source.url,source.apiUrl,source.attribution,source.retrievedAt, …).
Added:
asofinput on all four tools.- Output fields such as
lawTitle,lawRevisionId,abbreviations,lawType,articleTitle,articleCaption,elm,matchedCount, andsource.lawRevisionId/source.asof/source.processing.
Changed:
promulgationDateis nowYYYY-MM-DD(v2 format) instead ofyyyyMMdd.search_lawsno longer downloads the whole law list once per process. Each search is onelawsrequest filtered by e-Gov, so abbreviations now match and results can differ from v0.1.x.cacheFetchedAtis kept and now holds the time that request's data was retrieved.find_related_lawsonly finds laws that share the base name's stem; v0.1.x could also list unrelated laws whose short names happened to appear inside the base name.get_articlecalled withlawNumnow also returnslawId(v1 left it empty).paragraphis checked as a number, and article numbers are converted forelm.- Errors from e-Gov include its code, for example
e-Gov API returned HTTP 400 (400021: 要素(elm)に合致する要素が法令本文に存在しません。). - Requests to e-Gov are paced (see below).
Request pacing and cache
- At most one request goes to
laws.e-gov.go.jpat a time, even when a client calls several tools at once or sends a JSON-RPC batch. - Each request starts at least 1 second after the previous one finished. Set
EGOV_LAW_MCP_INTERVAL_MSto wait longer; values below1000are ignored. - Identical requests within 5 minutes are answered from an in-process cache (or share the request already in flight) and do not reach e-Gov. Cached answers keep their original
retrievedAt. EGOV_LAW_MCP_TIMEOUT_MS(default15000) sets the per-request timeout. It starts when the request is sent, not while it waits for its turn.
The pacing applies within one server process; if you run several copies, keep their combined traffic modest.
Data Source and Attribution
This package uses the e-Gov Law API Version 2:
- e-Gov Law Search: https://laws.e-gov.go.jp/
- Law API Version 2 (Swagger UI): https://laws.e-gov.go.jp/api/2/swagger-ui
- Law API Version 2 OpenAPI definition (version 2.1.139 when checked on 2026-10-29): https://laws.e-gov.go.jp/api/2/swagger-ui/lawapi-v2.yaml
- e-Gov terms: https://laws.e-gov.go.jp/terms/
- MCP stdio transport: https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
The law body is requested as law XML (law_full_text_format=xml, Base64 inside the JSON response) because the OpenAPI definition marks the JSON form of the body as a trial format that may change.
Tool results include source attribution. When you publish or redistribute output based on this package, include an appropriate e-Gov source attribution, and say that the text was converted from law XML to plain text (source.processing).
Suggested attribution:
出典: e-Gov法令検索(https://laws.e-gov.go.jp/)
Safety Notes
- This package is a law reference tool, not legal advice. Verify important legal conclusions against the official e-Gov page and, where necessary, consult a qualified professional.
- It does not execute shell commands.
- It writes JSON-RPC messages only to stdout and logs only to stderr.
- It fetches only
https://laws.e-gov.go.jp/api/2/lawsandhttps://laws.e-gov.go.jp/api/2/law_data/{id}, and refuses redirects.
Development checks
Tests launch the stdio server with fetch replaced by local Law API v2 fixtures. They cover each tool's request parameters and output fields, asof and law revision IDs, input validation, e-Gov error codes, request pacing, and the cache. Fixture sources are in test/fixtures/README.md.
Related
- Design notes: 源内OSSのLawsy実装をMCP化するなら、どこを残してどこを捨てるか (codeagent.jp)
- Background on Gennai OSS release: 源内OSS公開の背景 (codeagent.jp)
- Setup guides (Japanese): Claude Code / Codex CLI / Troubleshooting
- e-Gov Law API v2 guide (Japanese): codeagent.jp/guides/egov-law-api/
- Law API v1 → v2 migration guide (Japanese): codeagent.jp/posts/egov-law-api-v1-to-v2-migration/
- Other Japanese public-data APIs and MCP servers: codeagent.jp/guides/public-data-api/
- Reference implementation we learned from: digital-go-jp/genai-ai-api/google-cloud/lawsy-custom-bq
License
MIT © codeagent.jp
Source: README.md at commit ab38c36
Tools
0Version history
1- v0.1.1LatestSep 24, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts