mcpField
N
Northern Mariana Code

Northern Mariana Code

远程服务
pipeworx.io法律与政务01 天前更新

关于 Northern Mariana Code

面向法律从业者、研究人员和开发者的北马里亚纳群岛 Commonwealth Code 查询 MCP 服务。支持按引文获取条文,并按官方标题搜索;实时站点不可用时会尝试使用 Internet Archive 的官方 PDF 快照。

主要功能

  1. 01按引文获取条文文本
  2. 02按官方标题检索主题
  3. 03实时站点优先并回退至 Wayback
  4. 04显示数据日期及回退提示

适用场景

  1. 01核查特定 CMC 条文
  2. 02按主题查找群岛法规
  3. 03检查条文来自实时站点还是存档

MCP 相关

提供 `nmi_statute` 和 `nmi_search` 工具,供 MCP 客户端按引文查询及按官方标题搜索。可通过 Pipeworx 网关连接,也可作为本地 stdio MCP 服务运行。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/northern-mariana-code/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/northern-mariana-code

北马里亚纳群岛联邦法典(CNMI 法规)——按引文获取条文文本(例如 "6 CMC § 1101"),并根据官方条文标题进行主题/关键词搜索。截至 2026-10-09,Fleet #2892 是尚无法规包的六个司法辖区之一(DC 加五个领地)。

属于 Pipeworx 的一部分——一个将 AI Agent 连接到 1819+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也非其发布。

工具

  • nmi_statute(citation) — 按引文获取一条北马里亚纳群岛联邦法典条文的文本(例如 "6 CMC 1101",谋杀;"1 CMC 101",定义了“北马里亚纳群岛”),并附上官方条文标题和标题上下文。优先实时访问官方网站;如果无法访问实时网站,则回退到 Internet Archive Wayback Machine 对同一份官方 PDF 的存档(自 2026-10 左右起网站一直无法访问——见下文“当前服务中断”)。每条响应都会包含 route("live" 或 "wayback")、data_as_of,并在回退路线中包含 staleness_warning。
  • nmi_search(query, limit?) — 根据所有 10 个标题中的官方条文标题进行主题/关键词搜索(例如 "murder"、"tax")。不是全文搜索——见“已知缺口”。

身份验证

无需密钥。

数据源

  • https://cnmilaw.org/pdf/cmc_section/T{title}/{section}.pdf — CNMI 法律修订委员会自行提供的逐条 PDF(例如,第 6 标题第 1101 条位于 .../T6/1101.pdf)。nmi_statute 会按请求实时获取该文件,超时时间为 8s,并提取对应条文的文本。
  • https://web.archive.org/web/{timestamp}if_/{that same PDF URL} — Wayback Machine 对同一份官方 PDF 的存档,仅在上述实时获取失败时使用。单次请求会通过 Wayback 自己的重定向定位到最近的实际存档(/web/{today}if_/{url} 会重定向 302 到最接近的真实快照)——每次调用无需单独查询 CDX;CDX API 在重复查询时会严格限流(构建此包时直接测得:同一查询成功一次后,再调用几次就开始返回 503)。
  • mcps/northern-mariana-code/scripts/bake-index.mjs 会离线获取一次标题目录页面(cnmilaw.org/cmc.php,或 Wayback 上最近可读取的存档),并将引文和条文标题索引写入 src/nmi-index-data.ts,供 nmi_search 使用,也用于让 nmi_statute 区分“引文存在但无法访问”和“没有此引文”——约 7,100 条法规的完整集合规模过大,无法针对每次搜索查询逐条扫描。

当前中断情况——在认定实时路由已失效前,请先阅读

cnmilaw.org 目前无法访问(已于 2026-10-09 实时验证),但这看起来是暂时故障,并非已关闭。 已通过三种方式检查:

  1. 普通的家庭网络 HTTPS 请求超时/没有响应。
  2. wrangler dev --remote Worker 边缘探测——也就是说,并非地理位置封锁——访问 cnmilaw.org/ 和 cnmilaw.org/pdf/cmc_section/T6/1101.pdf 均收到 Cloudflare 522(“源站无法访问”)。
  3. 裸 HTTP 虚拟主机(无 TLS)解析到完全不同的后端:一个 Network Solutions 注册商页面,显示 "This domain has been temporarily disabled. If you own this domain, please log in to your account manager to re-enable the domain."——这是注册商层面的暂停(最有可能是续费逾期),不是机器人拦截页或 CAPTCHA。

Wayback Machine 自己的爬虫直到 2026-02-17 还在从这个确切路径获取实时 200 PDF(已通过其 CDX 索引确认),因此这是近期中断,并非早已失效的网站。nmi_statute 每次调用都会优先尝试访问 cnmilaw.org 实时站点(超时为 8s)——如果域名注册恢复,调用就会自动再次以 "route": "live" 路由,无需修改代码。没有必要预先制作法条文本副本(与 arkansas-code 的 2012 PRO 扫描件不同):Wayback Machine 已保存了对相同官方 PDF 的爬取副本,因此按请求实时回退并获取该存档仍属于 root CLAUDE.md 中代理与镜像规则所说的“调用”,而非“复制”。

功能

  • 引文查询——nmi_statute,优先访问实时站点,失败时回退到 Wayback。
  • 主题/关键词搜索——nmi_search,仅搜索条文标题。
  • 修正/制定历史——嵌入法条文本本身(大多数章节末尾都有一行 Source: PL ...),但未解析为单独字段——CNMI PDF 不像 Arkansas 的 XML 扫描件那样带有结构化的历史记录节点。
  • 历史版本(某项修正案之前的文本)——所有已找到的免费来源均不提供。

解析说明

章节 PDF 使用共享的 extractPdfText() 辅助函数(shared/src/pdf-text.ts)提取——kentucky-code 和 north-dakota-code 也使用同一函数。条文标题索引会解析 cmc.php 自带的锚点文本(指向 .../T6/1101.pdf 的锚点标签,文本为 "§ 1101. Murder."),并去掉 href 中已有的条文编号。

刷新方式: node scripts/bake-index.mjs > src/nmi-index-data.ts——优先尝试访问 cnmilaw.org 实时站点,失败时自动回退到最新的可读 cmc.php Wayback 存档。请偶尔重新运行,以获取新颁布的条文;nmi_statute 本身不会依赖此文件是否为最新,因为它每次都会实时获取法条文本,或从 Wayback 获取。

已知限制

  • nmi_search 仅匹配官方条文标题,不搜索完整法条文本——如果某个主题只在条文正文中讨论、未出现在标题中,就无法找到。
  • cnmilaw.org 停机期间,每个成功的 nmi_statute 调用都会通过 Wayback 完成,并使用相应条文最后一次被爬取时的日期——不同条文的快照日期各不相同(测试时看到的日期分别为一个条文的 2024-08-13 和另一个条文的 2026-02-17),并非像 arkansas-code 的 2012 扫描件那样有一个固定截止日期。请始终检查每次响应中的 data_as_of,不要假定整个数据包使用同一日期。
  • 如果引文中的标题和条文编号都能解析,但该条文既不在实时站点或 Wayback 中,也不在预制索引中,则会报告 citation_not_found;如果条文确实存在于预制索引中,但通过两种路由都无法访问,则会明确报告 upstream_down 错误,绝不会错误地返回 found: false。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "northern-mariana-code": {
      "url": "https://gateway.pipeworx.io/northern-mariana-code/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/northern-mariana-code/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、discover_tools、search_within、remember/recall 和其他网关级工具。因此,你看到的工具数量会多于表格中的数量:目前,单个工具包端点除了列出该工具包自身的工具,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,是当天情况的权威依据。

这是有意设计的,并非意外的多路复用。元工具可以让限定范围的连接回答此工具包未涵盖的问题——通过 ask_pipeworx 跨整个目录路由——无需再添加第二个 MCP 服务。目前无法挂载不含这些元工具的工具包端点;如果额外的架构信息占用的上下文比路由带来的价值更多,请连接一次完整网关,而不是连接多个工具包端点。

你也可以连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不只是此工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和相同的 1819+ 个数据源。唯一的区别是直接列出哪个工具包的工具;通过任一端点,ask_pipeworx 都能访问所有工具包。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/nmi_statute \
  -H 'Content-Type: application/json' \
  -d '{"citation":"6 CMC 1101"}'

首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/nmi_statute。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。

独立运行(无需网关账户)

此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关往返:

{
  "mcpServers": {
    "northern-mariana-code": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-northern-mariana-code"]
    }
  }
}

或者直接运行以确认它能正常启动:

npx -y @pipeworx/mcp-northern-mariana-code

它通过 stdin/stdout 使用 MCP,并对 initialize/tools/list/tools/call 作出响应,但仅限此工具包的工具——不包含上方网关连接所提供的任何共享元工具。代码源相同,工具相同,但没有 ask_pipeworx 路由。

使用 ask_pipeworx

你可以用通俗易懂的语言提问,而不是直接调用工具——此功能在上方的工具包端点和完整网关上都可用:

ask_pipeworx({ question: "your question about Northern Mariana Code data" })

网关会选择合适的工具并自动填入参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。