mcpField
P
Puerto Rico Code

Puerto Rico Code

远程服务
pipeworx.io法律与政务12 周前更新

关于 Puerto Rico Code

用于在政府发布的 OGP 馆藏中检索波多黎各法令的 MCP 服务,面向法律研究。它返回原文西班牙语文本,且仅为已核实的民法典和刑法典标题提供 LPRA 引文映射。

主要功能

  1. 01按引文或法案编号获取法条
  2. 02搜索法案标题和主题
  3. 03搜索两部已映射法典的条文
  4. 04提供来源 PDF 链接和修订日期

适用场景

  1. 01按 LPRA 引文查找波多黎各法令
  2. 02查找符合西班牙语法律主题的法案
  3. 03查阅法条的已发布文本

MCP 相关

通过 Pipeworx 或独立本地 stdio MCP 服务,向 MCP 客户端提供法令查询和搜索工具。

配置

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

服务地址https://gateway.pipeworx.io/puerto-rico-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 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

43
参数类型必填说明
qstring否question 的别名。
askstring否question 的别名。
textstring否question 的别名。
inputstring否question 的别名。
packsarray否可选。将路由限制为这些包的 slug(例如 ["sec-form-d","sec-13f"]),路由器随后只会从这些包中的工具进行选择。省略则使用默认的完整目录路由。Slug 可从 list_packs / search_packs / https://pipeworx.io/directory 获取;未列出或未知的 slug 会被忽略,并在 _meta.pack_scope.ignored 中列出。如果没有任何 slug 能匹配问题,则会在整个目录中路由,并设置 _meta.pack_scope.full_catalog:true(绝不会返回空答案)。
querystring否question 的别名。
promptstring否question 的别名。
messagestring否question 的别名。
questionstring是用自然语言表达的问题或请求。支持 query、q、prompt、text、input、ask、message 作为别名。

详细介绍

@pipeworx/puerto-rico-code

波多黎各法规——波多黎各立法机关制定的「leyes」(法律),可按引文和主题查询;对于本工具包已核实能明确对应到单一法律的两部汇编法典,也支持类似「33 LPRA 5001」的 LPRA 引文。 文本为发布时的西班牙语原文,绝非机器翻译。无需密钥。

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

工具

  • pr_statute(citation) — 按引文获取波多黎各法规条文/章节的全文。接受 LPRA 引文(「33 LPRA 5001」是《刑法典》第 1 条;「31 LPRA 5311」是《民法典》第 1 条),也接受单独的法律编号(「55-2020」),或带条文号的法律编号(「146-2012 Art. 92」、「146-2012 Art. 93」)。不带条文号的法律编号会返回法律级元数据(标题、年份、「tipo」、URL),而不是法规文本。返回标题、发布时的完整西班牙语原文,以及来源 PDF URL 和 data_as_of。
  • pr_search(query, limit?) — 按西班牙语主题/关键词搜索。分两层:对两部映射到 LPRA 的法典条文正文进行真正的全文搜索(result_type: "lpra_section" — 返回正文中实际匹配的结果及其 LPRA 引文);以及对 OGP 完整的约 15,500 部法律目录进行标题/条文标题搜索(result_type: "act"),用于其他所有内容。

身份验证

无需密钥。

本工具包涵盖的内容,以及明确不涵盖的内容

商业销售的汇编版 Leyes de Puerto Rico Anotadas (LPRA)(Westlaw/Lexis)并非免费,本工具包不会涉及。免费且由政府发布的内容是 Oficina de Gerencia y Presupuesto(OGP)的「Biblioteca Virtual — Leyes de Referencia」(bvirtualogp.pr.gov),这是一个无需登录即可访问的公开 SharePoint 2013 网站,提供约 15,500 部法律的 PDF;每部法律要么是「Ley según enmendada」(OGP 自行汇编、纳入所有修订并持续更新的文本),要么是「Ley original」(对于 OGP 尚未汇编的法律,提供颁布时的原文)。

LPRA 大约有 35 个「títulos」,其中大多数汇集了多部不同的法律。本工具包只有在逐一查阅某部法律自己的 PDF 并核实后,才会将 LPRA 引文映射到该条文的文本——OGP 发布的每部「según enmendada」法律都会在其各自条文中以内联形式标注 LPRA 引文(已实时确认,例如「Artículo 92. — Asesinato. (33 L.P.R.A. § 5141)」),因此映射直接取自来源,绝非猜测。目前已映射的内容(src/index.ts 中的 LPRA_CODES):

LPRA 标题法律名称
3155-2020Código Civil de Puerto Rico de 2020
33146-2012Código Penal de Puerto Rico de 2012

对于所有其他标题,pr_statute 会返回 lpra_title_not_mapped,并列出已映射的标题,而不会猜测哪些法律涵盖该标题——如果知道具体法律编号,请改用该编号调用 pr_statute(许多法律,包括 Ley 54-1989「Ley para la Prevención e Intervención con la Violencia Doméstica」,都带有相同的内联 LPRA 注释,但未列入 LPRA_CODES,因为一个标题可能涵盖多部法律,且本工具包尚未核实该标题涵盖范围的全部内容——对于这些法律,仅提供单部法律查询)。

条文编号不一定是纯整数——「2.1-A」、「3.10-A」都是实际存在的编号(Ley 54-1989),也有「92」这样的普通编号(Ley 146-2012);pr_statute 接受 citation 参数中「Art.」格式的这两种形式。

两次 REST 请求,SharePoint 均允许匿名访问,无需身份验证令牌

  1. _api/web/lists/getbytitle('PDF')/items?$filter=FileLeafRef eq '146-2012.pdf' 可通过一个查询,将简单法案编号(例如「146-2012」)直接解析为其元数据(Title、Number、Years、Tipo)和 PDF 路径,无论 OGP 将其归档在哪个主题子文件夹中。已确认无法仅凭法案编号推导文件夹结构(146-2012 位于 PDF/Justicia/146-2012/146-2012.pdf,55-2020 则位于顶层 PDF/55-2020.pdf),因此这里使用平面列表筛选器进行解析,而非猜测路径。少数法案还附有英文译本,存放在 PDF/2-ingles/ 或 PDF/ingles/ 中;这些译本已排除,此工具包绝不会返回译本。
  2. 对解析出的路径执行普通 GET 请求即可获取 PDF,再通过 shared/src/pdf-text.ts 解码,并切分为各条条文。

此列表不接受对 FileSystemObjectType 使用 $filter,会返回 HTTP 500(「Column 'FileSystemObjectType' does not exist」——已于 2026-10-09 实时确认),尽管同一字段可用于 $select。OGP 自己的类别文件夹(其中一个的标题正是「Municipios」,否则会作为仅匹配标题子字符串的结果出现)改为在客户端筛除,方法是要求 Tipo 非空。

页脚噪声,以及它对长条文的影响

每份「según enmendada」PDF 都会在逐页文本流中插入重复页脚:引用法案标题的横幅后紧接着「Rev. <date> www.ogp.pr.gov ... Página N de M」。已实时确认:剥除前,《刑法典》的 125 页 PDF 中有 126 处此类内容,剥除后剩下 2 处(都不在任何条文正文中——一处是第 1 条之前的封面横幅,另一处是最后一条之后的「核验最新修订版」通知)。若保留这些噪声,文本跨页的条文中就会出现被插断的句子;src/index.ts 中的 stripPageFooters 会在切分前将其移除。带引号的标题及其「[Ley ..., según ...]」括号内容有时位于同一行,有时会被换行拆开(按颁布日期而非「N-YYYY」简写引用法案时,例如 Ley 54-1989 的「...Doméstica”\n[Ley 54 de 15 de agosto de 1989, según\n...」);剥除逻辑对这两种情况都能处理。

「Nota」注释

少数 LPRA 条文在源文件中包含两个标题:先是关于该条文的「nota」(注释,而非条文的实际内容),紧接着才是正文。例如,Ley 54-1989 中先有「Artículo 1.1 ... (8 L.P.R.A. § 601 nota)」,紧接着是「Artículo 1.2 ... (8 L.P.R.A. § 601)」。按 LPRA 条文编号解析时,如果同一编号有多个标题,解析器会优先选择非「nota」标题。

字符编码

SharePoint REST JSON 的响应类型为 application/json;odata=verbose;charset=utf-8(已实时确认),解码时会使用响应中声明的字符集,而非自行假定。此系列中的另一个工具包曾因经过的中继实际提供 ISO-8859-1,却假定使用 UTF-8,导致所有「§」都变成 U+FFFD。

数据源

  • https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/_api/web/lists/getbytitle('PDF')/items — 通过 SharePoint REST 访问 OGP「Leyes de Referencia」PDF 文档库(约 15,500 部法案)。$filter=FileLeafRef eq '<num>.pdf' 用于解析简单法案编号;$filter=substringof('<query>',Title) 用于按法案标题搜索。
  • https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/... — 已解析出的 PDF,每部法案对应一份;提取文本后按条文切分。

已通过 prod Cloudflare 账户中的临时 wrangler dev --remote Worker 确认(2026-10-09):bvirtualogp.pr.gov 不会阻止 Worker 出站请求;REST API 和 PDF 获取的响应都与直接 curl 返回的字节完全一致。与此系列工具包中其他位置的 oscn.net/le.utah.gov 不同,这里无需使用出站中继。

快速开始

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

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

https://gateway.pipeworx.io/puerto-rico-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/pr_statute \
  -H 'Content-Type: application/json' \
  -d '{"citation":"33 LPRA 5001"}'

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

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

此软件包也可以作为本地 stdio MCP 服务运行,无需 Pipeworx 账户,也无需通过网关中转:

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

或者直接运行,以确认它能够启动:

npx -y @pipeworx/mcp-puerto-rico-code

它通过 stdin/stdout 使用 MCP 通信,并针对仅此工具包的工具响应 initialize/tools/list/tools/call——不包含上文网关连接所添加的共享元工具。来源相同,工具相同,但不支持 ask_pipeworx 路由。

使用 ask_pipeworx

你也可以用日常语言提问,而不是直接调用工具——此方式既适用于上面的工具包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Puerto Rico Code data" })

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

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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