Puerto Rico Code について
政府公開の OGP コレクションからプエルトリコの法令を検索する MCP サーバーです。法務調査向けにスペイン語の公開原文を返し、検証済みの民法典・刑法典のタイトルに限って LPRA 引用に対応します。
主な機能
- 01引用または法令番号で条文を取得
- 02法令名やトピックを検索
- 03対応する 2 法典の条文を検索
- 04出典 PDF と改訂日の提示
活用シーン
- 01LPRA 引用からプエルトリコ法令を調べる
- 02スペイン語の法律トピックに合う法令を探す
- 03法令条文の公開本文を確認する
MCP 対応
Pipeworx または独立したローカル stdio MCP サーバーを通じて、法令の照会・検索ツールを MCP クライアントに公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://gateway.pipeworx.io/puerto-rico-code/mcpclaude mcp add --transport http pipeworx-io-puerto-rico-code https://gateway.pipeworx.io/puerto-rico-code/mcp{"mcpServers":{"pipeworx-io-puerto-rico-code":{"type":"http","url":"https://gateway.pipeworx.io/puerto-rico-code/mcp"}}}Cursor で開く{"servers":{"pipeworx-io-puerto-rico-code":{"type":"http","url":"https://gateway.pipeworx.io/puerto-rico-code/mcp"}}}VS Code で開く{"mcpServers":{"pipeworx-io-puerto-rico-code":{"type":"http","url":"https://gateway.pipeworx.io/puerto-rico-code/mcp"}}}{"mcpServers":{"pipeworx-io-puerto-rico-code":{"serverUrl":"https://gateway.pipeworx.io/puerto-rico-code/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
43| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | いいえ | question の別名。 |
| ask | string | いいえ | question の別名。 |
| text | string | いいえ | question の別名。 |
| input | string | いいえ | question の別名。 |
| packs | array | いいえ | 任意。ルーティング対象をこれらのパックスラッグに限定します(例:["sec-form-d","sec-13f"])。その場合、ルーターは該当パック内のツールのみを選択します。省略すると、デフォルトの全カタログへのルーティングになります。スラッグは list_packs / search_packs / https://pipeworx.io/directory から取得できます。リストにない、または不明なスラッグは無視され、_meta.pack_scope.ignored に記載されます。該当するスラッグが 1 つもない場合は、カタログ全体にルーティングし、_meta.pack_scope.full_catalog:true を設定します(空の回答にはなりません)。 |
| query | string | いいえ | question の別名。 |
| prompt | string | いいえ | question の別名。 |
| message | string | いいえ | question の別名。 |
| question | string | はい | 自然言語での質問またはリクエスト。query、q、prompt、text、input、ask、message をエイリアスとして使用できます。 |
詳細
@pipeworx/puerto-rico-code
プエルトリコの法令 — プエルトリコ議会の「leyes」(法律)を、引用またはトピックから検索できます。このパックで各法令との対応を確認できた2つの統合法典については、「33 LPRA 5001」のようなLPRA引用にも対応しています。 機械翻訳ではなく、公開されたスペイン語の原文を掲載しています。認証キーは不要です。
Pipeworx の一部です。AI エージェントを1819以上の稼働中のデータソースにつなぐMCPゲートウェイです。独立した非公式の連携機能であり、上流プロバイダーとの提携、推奨、公開関係はありません。
ツール
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?)— スペイン語のトピックやキーワードで検索します。2つの検索方式があります。2つの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」があり、その大半は複数の異なる法律をまとめています。**このパックがLPRA引用と条文を対応づけるのは、その法律自体のPDFを読んで個別に確認したtítulosのみです。**OGPが公開する各「según enmendada」の法律には、その法律の各条文にLPRA引用がインラインで注記されています(実際の掲載例:「Artículo 92. — Asesinato. (33 L.P.R.A. § 5141)」)。そのため、対応関係は出典から読み取っており、推測ではありません。現在対応している項目(src/index.tsのLPRA_CODES):
| LPRA título | Ley | Name |
|---|---|---|
| 31 | 55-2020 | Código Civil de Puerto Rico de 2020 |
| 33 | 146-2012 | Código Penal de Puerto Rico de 2012 |
それ以外のtítuloについては、どの法律が対象かを推測せず、pr_statuteはlpra_title_not_mappedを返し、対応済みのtítuloを示します。対象の法律番号が分かる場合は、代わりにpr_statuteにその番号を指定してください。たとえば、法律54-1989「Ley para la Prevención e Intervención con la Violencia Doméstica」を含む多くの法律にも同様のLPRA注記がありますが、1つのtítuloが複数の法律にまたがる可能性があり、このパックではそのtítuloの対象範囲全体を確認していないため、LPRA_CODESには含めていません。これらについては個別の法律を検索できます。
条番号は必ずしも単なる整数とは限りません。「2.1-A」「3.10-A」(法律54-1989)のような実在の条番号も、「92」(法律146-2012)のような番号とともに指定できます。pr_statuteはcitation引数の「Art.」形式で、どちらの形式も受け付けます。
2 回の REST リクエスト。どちらも認証トークン不要の匿名 SharePoint
_api/web/lists/getbytitle('PDF')/items?$filter=FileLeafRef eq '146-2012.pdf'により、基本法令番号(例:「146-2012」)から、メタデータ(Title、Number、Years、Tipo)と PDF のパスを 1 回のクエリで直接解決できます。OGP がどのトピックサブフォルダーに格納したかには左右されません。フォルダー構成は法令番号だけからは推測できないことが確認されています(146-2012はPDF/Justicia/146-2012/146-2012.pdfにあり、55-2020はトップレベルのPDF/55-2020.pdfにあります)。そのため、このフラットリストのフィルターをリゾルバーとして使い、パスを推測することはありません。一部の法令はPDF/2-ingles/またはPDF/ingles/に英訳も格納されていますが、対象外です。このパックは翻訳版を返しません。- 解決したパスに通常の GET リクエストを送信して PDF を取得し、
shared/src/pdf-text.tsでデコードして、条文ごとのセクションに分割します。
このリストでは FileSystemObjectType に対する $filter は拒否され、HTTP 500 が返ります(「Column 'FileSystemObjectType' does not exist」— 2026-10-09 に実環境で確認済み)。同じフィールドが有効な $select であるにもかかわらずです。OGP 独自のカテゴリーフォルダー(その 1 つは文字どおり「Municipios」という名前で、それ以外はタイトルの部分一致として表示されます)は、代わりに Tipo が null ではないことを条件として、クライアント側で除外されます。
ページフッターのノイズと、長い条文での重要性
すべての「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 セクションは、原文に 2 つの見出しがあります。セクションについての注記であり、実際の本文ではない「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 として配信されます(実環境で確認済み)。UTF-8 と決めつけず、レスポンスで宣言された文字セットに従ってデコードします。このファミリーの別のパックでは、リレー経由で実際には ISO-8859-1 が配信されていたにもかかわらず UTF-8 と仮定したため、「§」がすべて U+FFFD に置き換わったことがあります。
データソース
https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/_api/web/lists/getbytitle('PDF')/items— OGP の「Leyes de Referencia」PDF ドキュメントライブラリ(約 15,500 件の法令)に対する SharePoint REST です。$filter=FileLeafRef eq '<num>.pdf'で基本法令番号を解決し、$filter=substringof('<query>',Title)で法令タイトルを検索します。https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/...— 解決された法令ごとの PDF。テキストを抽出し、条文ごとに分割します。
本番 Cloudflare アカウント上で一時的な wrangler dev --remote Worker を使って確認したところ(2026-10-09)、bvirtualogp.pr.gov は Worker からの外部通信をブロックしませんでした。REST API と PDF の取得の両方で、直接の curl とバイト単位で同一のレスポンスが得られました。このパックファミリー内の他の oscn.net/le.utah.gov とは異なり、ここでは外部通信のリレーは不要です。
クイックスタート
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 を通じて回答できます。そのため、2 つ目の 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":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を実行します。
スタンドアロン(ゲートウェイアカウント不要)
このパッケージは、ローカルの 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。