mcpField
A
Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur

Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur

ローカル
github.com法務・行政214 週間前に更新

Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur について

at-ris-mcpは、オーストリアの公式法律情報システムRIS向けのMCPサーバーとPythonクライアントライブラリを提供します。連邦・州法、裁判例などを扱い、条項単位の取得、過去時点の版、変更監視に対応します。

主な機能

  1. 01連邦法と州法の検索
  2. 02法令と裁判例の取得
  3. 03条項単位または過去時点の法令取得
  4. 04整形済みMarkdownまたは元の形式で文書を返却
  5. 05削除済み文書を含むRIS変更の監視
  6. 06独立したPythonクライアントライブラリ

活用シーン

  1. 01現行の連邦法統合版を検索
  2. 02特定条項または法令の過去版を取得
  3. 03オーストリア各裁判所の判決を検索
  4. 04RISの法律文書の変更を追跡

MCP 対応

FastMCPラッパーは、オーストリアの法律文書の検索・取得と変更監視を行う10個のツールを公開します。既定のstdioに加え、streamable HTTPとSSEにも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"paragraflabs-at-ris": {
"command": "uvx",
"args": [
"at-ris-mcp"
],
"env": {
"RIS_CACHE_DIR": "<RIS_CACHE_DIR>",
"RIS_AUDIT_DIR": "<RIS_AUDIT_DIR>",
"RIS_RATE_MS": "<RIS_RATE_MS>"
}
}
}
}
起動コマンドuvx at-ris-mcp
設定が必要な環境変数
RIS_CACHE_DIRDirectory for the SQLite response cache (default: ~/.cache/at-ris-mcp).
RIS_AUDIT_DIRIf set, append a JSONL audit line per tool call (no full text, no client data).
RIS_RATE_MSMinimum delay between requests in ms (RIS netiquette; default 1200).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiat-ris-mcp1.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

at-ris-mcp

CI PyPI Python License

オーストリア共和国の公式法令情報システムであるRIS(Rechtsinformationssystem des Bundes)向けの汎用 MCP サーバーと、スタンドアロンのPython クライアントライブラリです。RIS は連邦首相府(Bundeskanzleramt)が運営しています。

連邦法(Bundesrecht — 統合版法令 BrKons、官報、草案、政府法案を含む)、州法(9 つの連邦州の Landesrecht)、判例法(Judikatur — OGH、VfGH、VwGH、BVwG、LVwG など)、省令、地区および自治体の法令に加え、変更監視フィードにも、キー不要の OGD API https://data.bka.gv.at/ris/api/v2.6/ を通じてアクセスできます。

開発の背景

既存の RIS ツールと比べて、at-ris-mcp では以下が利用できます。

  • 統合版法令(BrKons)— 官報の改正法令だけでなく、現在有効な条文を取得できます。
  • 条項を指定したアクセス — 1 つの §/Artikel/Anlage(Abschnitt.*)を取得できます。
  • 過去の版 — 指定した日に有効だった法令を取得できます(Fassung.FassungVom)。
  • クリーンな Markdown — RIS の HTML(文書あたり約 40 KB の CSS 定型コード)から法令本文のみを抽出します。加工前のオリジナルを取得するには raw スイッチを使用します。

2 つのパッケージ、1 つのリポジトリ

  • ris_client — MCP に依存しないスタンドアロンライブラリです。直接インポートして使用できます。
  • ris_mcp — 10 個のツールを公開する、薄い FastMCP/stdio ラッパーです。独自のロジックは含みません。

インストール

pip install at-ris-mcp          # library only
pip install "at-ris-mcp[mcp]"   # + the MCP server (FastMCP)

MCP サーバーを実行する(stdio)

at-ris-mcp
# or
python -m ris_mcp
リモートトランスポート(HTTP/SSE)

ホスト型またはリモートのデプロイでは、stdio の代わりにストリーミング可能な HTTP または SSE でもサーバーに接続できます。

at-ris-mcp --transport http --host 0.0.0.0 --port 8000   # streamable HTTP
at-ris-mcp --transport sse  --port 9000                  # SSE
# or via environment:
RIS_MCP_TRANSPORT=http RIS_MCP_PORT=8000 at-ris-mcp

HTTP エンドポイントは、デフォルトで /mcp から提供されます(--path/RIS_MCP_PATH で変更できます)。トランスポートを指定しない場合は、引き続き stdio がデフォルトです。

ツール
ツール用途
ris_search_law連邦法を検索します(デフォルトは BrKons。BgblAuth、Begut、RegV なども指定できます)。条項と版で絞り込めます。
ris_get_law_text法令/条項の全文を取得します(markdown | html | xml | raw)。
ris_search_case判例法を検索します(デフォルトは Justiz。全裁判所に対応)。適用された norm で絞り込めます。
ris_get_case_text判決文の全文を取得します。
ris_search_state_law州法を検索します(9 つの連邦州。デフォルトは LrKons)。bundeslaender で州を選択します。
ris_search_miscSonstige(省令 Erlaesse、Avsv など)を検索します。
ris_search_district地区当局の告示(Bezirke/Bvb)を検索します。
ris_search_municipality自治体の法令(Gemeinden/Gemeinderecht Gr/GrA)を検索します。
ris_list_collections対応するエンドポイント/アプリケーションを確認します。
ris_list_changesOGD SOAP エンドポイント経由で、変更/早期警告フィード(RIS History)を取得します。削除済みの文書も含みます。

ライブラリの使用方法

import asyncio
from ris_client import RisClient, LawSearchRequest, TextFormat

async def main():
    async with RisClient() as c:
        res = await c.search_law(LawSearchRequest(suchworte="Datenschutzgesetz",
                                                  page_size="Ten"))
        hit = res.items[0]
        print(hit.human_readable_citation, hit.eli_uri)
        text = await c.get_text(hit.content_urls["html"], TextFormat.markdown)
        print(text.content[:500])

asyncio.run(main())

Configuration(環境変数)

VariableDefaultMeaning
RIS_BASE_URLhttps://data.bka.gv.at/ris/api/v2.6API のベース URL(バージョンの分離用)。
RIS_SOAP_URLhttps://data.bka.gv.at/ris/ogd/v2.6/OGD SOAP エンドポイント(ris_list_changes で使用)。
RIS_USER_AGENTat-ris-mcp/<version> (+…)説明的な UA(ネットエチケットに準拠)。
RIS_RATE_MS1200リクエスト間の最小待機時間(ms)。
RIS_TIMEOUT_S30HTTP タイムアウト。
RIS_MAX_RETRIES3429/5xx(503 を含む)発生時の再試行回数。
RIS_CACHE_DIR~/.cache/at-ris-mcpSQLite キャッシュの保存場所。
RIS_CACHE_ENABLEDtrueキャッシュの有効/無効を切り替えます。
RIS_AUDIT_DIR(unset)設定すると、呼び出しごとに JSONL 形式の監査行を追記します(全文やクライアントデータは含みません)。
RIS_MCP_TRANSPORTstdioサーバーのトランスポート:stdio | http | sse | streamable-http。
RIS_MCP_HOST127.0.0.1http/sse のバインド先ホスト。
RIS_MCP_PORT8000http/sse のバインド先ポート。
RIS_MCP_PATH(transport default)HTTP エンドポイントの URL パス。

ネットエチケットとレート制限

RIS OGD FAQ に従い、クライアントはページごとに 1~2 秒の待機を設けます。一括アクセスは営業時間外(18:00~06:00)または週末に行い、[email protected] に事前に通知してください。デフォルトで説明的な User-Agent が送信されます。

ライセンス

  • コード: Apache-2.0(LICENSE を参照)。

  • データ: 取得したドキュメントは、オーストリア共和国から CC BY 4.0 のもとで提供されています。すべてのツール応答に attribution フィールドが含まれます。

    出典:RIS – Rechtsinformationssystem des Bundes(data.bka.gv.at)、CC BY 4.0

  • 法的助言ではありません。 法的拘束力を持つのは、正式に公布された原文(Bundesgesetzblatt/Landesgesetzblatt authentisch)のみです。 統合版の法令およびその他のすべてのドキュメントは、情報提供のみを目的としています。この旨を示す legal_notice がすべての応答に含まれます。

対応範囲(v1.0)

対応対象:Bundesrecht(BrKons、BgblAuth、BgblPdf、BgblAlt、Begut、 RegV、Erv — 英語翻訳)、Judikatur(すべての裁判所)、History 変更フィード(削除済みドキュメントを含む ris_list_changes)、Landesrecht (9 つの連邦州:LrKons、LgblAuth、Lgbl、LgblNO、Vbl)、Sonstige (Erlaesse、Avsv、Avn、Spg、KmGer、Upts、Mrp、PruefGewO — アプリケーション固有の詳細フィルターあり)、Bezirke(Bvb)、Gemeinden(Gr、GrA)。

英語翻訳(Erv): applikation="Erv" を指定して ris_search_law から検索します。suchworte/titel は RIS の SearchTerms/Title パラメーターに自動的に対応付けられます。

州法に関する注意: 統合版の州法(LrKons)では、bundeslaender で州を選択してください(例:["Kaernten","Tirol"])。これは、API が要求するドット区切りの Bundesland.SucheIn<Land>=true フラグに対応付けられます(フラット形式は LrKons では無視されます)。

History に関する注意: 統合版の連邦法はアプリケーション名 Bundesnormen(BrKons ではありません)、統合版の州法は Landesnormen として監視されます。History クエリには、REST GET API では提供されていないため、OGD SOAP エンドポイントを使用します。

開発

pip install -e ".[dev,mcp]"
pytest                       # offline tests
RIS_SMOKE=1 pytest -m smoke  # live smoke tests against the real API

リリース

リリースは自動化されています。バージョンタグ(vX.Y.Z)をプッシュすると、GitHub Actions がディストリビューションをビルドし、Trusted Publishing / OIDC を使用して PyPI に公開し(API トークンは不要)、GitHub Release を作成して、新しいバージョンを MCP Registry に登録します。

# bump the version in pyproject.toml, src/ris_client/config.py and server.json,
# update CHANGELOG.md, then:
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z

公開せずにローカルでビルドするには:

python -m build              # sdist + wheel into dist/
python -m twine check dist/*

MCP Registry のエントリーは server.json (名前 io.github.paragraflabs/at-ris-mcp)で記述されており、対応する mcp-name: マーカーはこの README の冒頭付近に埋め込まれています。

コントリビューションとサポート

Issue とプルリクエストは https://github.com/paragraflabs/at-ris-mcp で歓迎しています。リリース履歴については CHANGELOG.md を参照してください。このプロジェクトはオーストリア共和国または Bundeskanzleramt とは提携関係になく、承認も受けていません。公開 RIS OGD インターフェース向けの独立したクライアントです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。