
Northern Mariana Code
io.github.pipeworx-iov0.1.0更新于 Oct 10, 2026
Commonwealth Code of the Northern Mariana Islands (CMC) — CNMI statutes by
概览
按引文或官方条款标题关键词检索北马里亚纳群岛联邦法典(CMC)条文。
- 功能
- 提供两个工具:nmi_statute(citation) 按引文返回北马里亚纳群岛联邦法典某一条的正文,并附官方标题行和所属编章信息;nmi_search(query, limit?) 在全部 10 编的官方条款标题行中做主题或关键词检索。每条法条响应都会给出 route(live 或 wayback)、data_as_of 日期,以及走回退路径时的过期警告。网关端点还会列出 Pipeworx 共享元工具,例如 ask_pipeworx、discover_tools 和 remember/recall。
- 适用场景
- 适合需要某条北马里亚纳群岛联邦法典条文原文,或在法典中快速做主题查找的场景,例如法律检索、引文核对或回答联邦法律相关问题。检索仅覆盖条款标题行,只在条文正文中出现而标题行未提及的主题无法被找到。
- 运行要求
- 托管端点初次调用无需账号、密钥或请求头,通过网关地址以 streamable HTTP 访问。另提供本地 stdio 方式,通过 npx 运行,需要 Node.js。获取条文文本需要能访问网关、北马里亚纳群岛官方法律网站或 Internet Archive。
安装
在 SourceWeft 中
- 打开 控制台中的 Northern Mariana Code,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"northern-mariana-code": {
"type": "http",
"url": "https://gateway.pipeworx.io/northern-mariana-code/mcp"
}
}
}README
@pipeworx/northern-mariana-code
Commonwealth Code of the Northern Mariana Islands (CNMI statutes) — section
text by citation (e.g. "6 CMC § 1101"), and topic/keyword search over
official catchlines. Fleet #2892, one of six jurisdictions (DC + five
territories) with no code pack as of 2026-10-09.
Part of Pipeworx — an MCP gateway connecting AI agents to 1763+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
Tools
nmi_statute(citation)— text of one Commonwealth Code section by citation (e.g."6 CMC 1101", murder;"1 CMC 101", defines "Northern Mariana Islands"), with the official catchline and title context. Tries the official site live first, falls back to an Internet Archive Wayback Machine capture of the SAME official PDF when the live site is unreachable (it has been, since around 2026-10 — see "The current outage" below). Every response carriesroute("live"or"wayback"),data_as_of, and astaleness_warningon the fallback route.nmi_search(query, limit?)— topic/keyword search over official section catchlines across all 10 titles (e.g."murder","tax"). Not full-text search — see "Known gaps".
Auth
Keyless.
Data sources
https://cnmilaw.org/pdf/cmc_section/T{title}/{section}.pdf— the CNMI Law Revision Commission's own per-section PDF (e.g. Title 6 § 1101 is.../T6/1101.pdf).nmi_statutefetches this live, per request, with an 8s timeout, and extracts the matching section's text.https://web.archive.org/web/{timestamp}if_/{that same PDF URL}— the Wayback Machine's own crawl of that identical official PDF, used only when the live fetch above fails. One request resolves to the nearest actual capture via Wayback's own redirect (/web/{today}if_/{url}302s to the closest real snapshot) — no separate CDX lookup per call; the CDX API rate-limits aggressively under repeated querying (measured directly while building this pack: the same query that succeeds once starts 503ing within a handful of calls).mcps/northern-mariana-code/scripts/bake-index.mjsfetches the title listing page (cnmilaw.org/cmc.php, or its most recent readable Wayback capture) once, offline, and bakes a citation+catchline index intosrc/nmi-index-data.tsfornmi_searchand fornmi_statute's "citation exists but is unreachable" vs. "no such citation" distinction — the full set of ~7,100 sections is too large to scan per search query.
The current outage — read this before assuming the live route is dead
cnmilaw.org is unreachable right now (verified live 2026-10-09), but this looks temporary, not a shutdown. Checked three ways:
- A plain residential HTTPS request times out / gets no response.
- A
wrangler dev --remoteWorker edge probe — i.e. not a geo-block — gets a Cloudflare522("origin unreachable") on bothcnmilaw.org/andcnmilaw.org/pdf/cmc_section/T6/1101.pdf. - The bare-HTTP vhost (no TLS) resolves to a different backend entirely: a Network Solutions registrar page reading "This domain has been temporarily disabled. If you own this domain, please log in to your account manager to re-enable the domain." — a registrar-level suspension (lapsed renewal, most likely), not a bot wall or a CAPTCHA.
The Wayback Machine's own crawler was still getting live 200 PDFs from
this exact path as recently as 2026-02-17 (confirmed via its CDX index),
so this is a recent lapse, not a long-dead site. nmi_statute tries
cnmilaw.org live first on every call (8s timeout) — if the registration
is restored, calls start routing "route": "live" again with no code
change needed. There was no need to build a baked copy of the statutory
text itself (unlike arkansas-code's 2012 PRO scan): the Wayback Machine
already holds its own crawl of the identical official PDFs, so falling back
to a live per-request fetch of that memento is still "calling", not
"copying", under root CLAUDE.md's proxy-vs-mirror rule.
Capabilities
- Citation lookup —
nmi_statute, live-first with a Wayback fallback. - Topic/keyword search —
nmi_search, over catchlines only. - Amendments/enactment history — embedded in the statutory text itself
(a
Source: PL ...line at the end of most sections) but not parsed into a separate field — CNMI PDFs do not carry a structured history node the way Arkansas's XML scan does. - Historical version (text as it read before a given amendment) — NOT AVAILABLE from any free source found.
Parsing note
Section PDFs are extracted with the shared extractPdfText() helper
(shared/src/pdf-text.ts) — the same one kentucky-code and
north-dakota-code use. The catchline index parses cmc.php's own anchor
text (an anchor tag linking to .../T6/1101.pdf with text "§ 1101. Murder."), stripping the
leading section number the href already carries.
Refresh path: node scripts/bake-index.mjs > src/nmi-index-data.ts —
tries cnmilaw.org live first, falls back to the most recent readable
Wayback capture of cmc.php automatically. Re-run occasionally to pick up
newly-enacted sections; nmi_statute itself never depends on this file
being current, since it always fetches statutory text live or from Wayback
per call.
Known gaps
nmi_searchmatches official catchlines only, not full statutory text — a topic discussed inside a section's body but absent from its catchline will not be found.- While cnmilaw.org is down, every
nmi_statutecall that succeeds does so via Wayback and carries whatever date that section happened to be last crawled — individual sections' snapshot dates vary (seen during testing: 2024-08-13 for one section, 2026-02-17 for another), not a single fixed cutoff the wayarkansas-code's 2012 scan is. Always checkdata_as_ofper response rather than assuming a pack-wide date. - A citation whose title/section both parse but that is in neither the live
site nor Wayback AND not in the baked index is reported as
citation_not_found; one that IS in the baked index but unreachable on both routes is reported as a loudupstream_downerror, never a falsefound: false.
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
What this endpoint actually serves
tools/list at https://gateway.pipeworx.io/northern-mariana-code/mcp returns the tools in the table
above plus the shared Pipeworx meta-tools — ask_pipeworx,
discover_tools, search_within, remember/recall and the rest of the
gateway-wide set. So the tool count you see is larger than this table: a
single-pack endpoint currently lists roughly 30 shared tools alongside the
pack's own. The connection's initialize response states its exact scope, and
is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a
scoped connection answer a question this pack does not cover — via
ask_pipeworx, which routes across the whole catalog — without you adding a
second MCP server. There is currently no way to mount a pack endpoint without
them; if the extra schemas cost you more context than the routing is worth,
connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
Both URLs reach the same gateway and the same 1763+ data sources. The
only difference is which pack's tools are listed directly; ask_pipeworx
reaches all of them from either one.
No MCP client? Call it over HTTP
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/nmi_statute. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
Standalone (no gateway account)
This package also runs as a local stdio MCP server — no Pipeworx account, no gateway round-trip:
Or run it directly to confirm it starts:
It speaks MCP over stdin/stdout and answers initialize/tools/list/tools/call
for only this pack's tools — none of the shared meta-tools the gateway
connection above adds. Same source, same tools, no ask_pipeworx routing.
Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
The gateway picks the right tool and fills the arguments automatically.
More
License
MIT
来源:README.md,提交 c7b5009
工具
0版本历史
1- v0.1.0最新Oct 10, 2026
