Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur について
at-ris-mcpは、オーストリアの公式法律情報システムRIS向けのMCPサーバーとPythonクライアントライブラリを提供します。連邦・州法、裁判例などを扱い、条項単位の取得、過去時点の版、変更監視に対応します。
主な機能
- 01連邦法と州法の検索
- 02法令と裁判例の取得
- 03条項単位または過去時点の法令取得
- 04整形済みMarkdownまたは元の形式で文書を返却
- 05削除済み文書を含むRIS変更の監視
- 06独立したPythonクライアントライブラリ
活用シーン
- 01現行の連邦法統合版を検索
- 02特定条項または法令の過去版を取得
- 03オーストリア各裁判所の判決を検索
- 04RISの法律文書の変更を追跡
MCP 対応
FastMCPラッパーは、オーストリアの法律文書の検索・取得と変更監視を行う10個のツールを公開します。既定のstdioに加え、streamable HTTPとSSEにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx at-ris-mcpRIS_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
at-ris-mcp
オーストリア共和国の公式法令情報システムである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_misc | Sonstige(省令 Erlaesse、Avsv など)を検索します。 |
ris_search_district | 地区当局の告示(Bezirke/Bvb)を検索します。 |
ris_search_municipality | 自治体の法令(Gemeinden/Gemeinderecht Gr/GrA)を検索します。 |
ris_list_collections | 対応するエンドポイント/アプリケーションを確認します。 |
ris_list_changes | OGD 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(環境変数)
| Variable | Default | Meaning |
|---|---|---|
RIS_BASE_URL | https://data.bka.gv.at/ris/api/v2.6 | API のベース URL(バージョンの分離用)。 |
RIS_SOAP_URL | https://data.bka.gv.at/ris/ogd/v2.6/ | OGD SOAP エンドポイント(ris_list_changes で使用)。 |
RIS_USER_AGENT | at-ris-mcp/<version> (+…) | 説明的な UA(ネットエチケットに準拠)。 |
RIS_RATE_MS | 1200 | リクエスト間の最小待機時間(ms)。 |
RIS_TIMEOUT_S | 30 | HTTP タイムアウト。 |
RIS_MAX_RETRIES | 3 | 429/5xx(503 を含む)発生時の再試行回数。 |
RIS_CACHE_DIR | ~/.cache/at-ris-mcp | SQLite キャッシュの保存場所。 |
RIS_CACHE_ENABLED | true | キャッシュの有効/無効を切り替えます。 |
RIS_AUDIT_DIR | (unset) | 設定すると、呼び出しごとに JSONL 形式の監査行を追記します(全文やクライアントデータは含みません)。 |
RIS_MCP_TRANSPORT | stdio | サーバーのトランスポート:stdio | http | sse | streamable-http。 |
RIS_MCP_HOST | 127.0.0.1 | http/sse のバインド先ホスト。 |
RIS_MCP_PORT | 8000 | http/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 インターフェース向けの独立したクライアントです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。