Dayanak について
Dayanakは、トルコの法律調査と文書作成向けMCPサーバーです。公的な裁判例や法令を引用の検証を重視して検索します。ローカルのSQLiteコーパスと公式情報源へのライブ検索に対応し、基本ツールと拡張ツールを提供します。
主な機能
- 01トルコの裁判例と法令の検索
- 02ローカル全文検索とセマンティック検索
- 03公式法律情報源へのライブ検索
- 04引用確認と法律文書作成の支援
- 05文書のエクスポートと情報源の状態確認
活用シーン
- 01法律テーマに関する裁判例や法令の調査
- 02公式情報源に基づく法律文書の作成
- 03引用の検証と法令改正の追跡
MCP 対応
Dayanakは法律検索、文書取得、テーマ調査、エクスポートのツールをMCPクライアントに提供します。既定で11個の基本ツールが有効になり、拡張ツールはカテゴリ別に読み込めます。stdioとstreamable-httpに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| dil | any | いいえ | |
| page | integer | いいえ | |
| limit | integer | いいえ | |
| query | any | いいえ | |
| source | any | いいえ | |
| esas_no | any | いいえ | |
| sort_by | any | いいえ | |
| birimAdi | any | いいえ | |
| karar_no | any | いいえ | |
| court_types | any | いいえ | |
| include_raw | boolean | いいえ | |
| include_snippets | boolean | いいえ | |
| karar_tarihi_end | any | いいえ | |
| karar_tarihi_start | any | いいえ |
詳細
Dayanak
v2.0.1 — コア MCP ツール 11 個 + 拡張 MCP ツール 36 個(合計 47 個) · CLI コマンド 152 個 · テストファイル 80 個 · ソースモジュール 48 個
プロジェクトページ: avfatihsozer.com/projeler/dayanak · English: README.en.md
公式の一般公開されたトルコの法律情報源(判例および法令)を対象に、引用に安全な検索、調査、文書作成を行う MCP サーバーです。
このプロジェクトの旧名称は emsal-mcp です。バージョン 2.0.0 で Dayanak になりました。旧 emsal-mcp
パッケージは現在も dayanak をインストールし、旧 EMSAL_* 環境変数と ~/.emsal_mcp
データディレクトリも引き続き読み込まれます。
2 つの方法で動作します。
- ローカルコーパス — 1,110 万件の判決と最新法令すべてを 1 つの SQLite ファイルに格納し、FTS5 全文検索 + FAISS セマンティック検索に対応します。ネットワークは不要です。
- ライブソース — Bedesten/Yargıtay、AYM、Danıştay、Uyuşmazlık、Rekabet、 Sayıştay、GİB、mevzuat.gov.tr、Resmî Gazete、KVKK アダプター。
最優先事項
- 判決、メタデータ、日付、事件番号/判決番号、部、引用、法令条文を捏造しません。
full_text/html_markdownの内容がない文書は、引用やドラフトに使用しません。quoteUsableとdraftUsableは、全文/HTML マークダウンがある場合にのみtrueになります。- レート制限は意図的に厳しくしていません。単一ユーザー/単一コンピューターでの利用を想定しています。
コーパス
測定日:2026 年 9 月 16 日、ライブコーパス(cache.sqlite3、72 GB)。
| レイヤー | 測定値 |
|---|---|
| 判決 | 11.108.242 件(documents_v2)。基盤:HF hamzabagirsakci/turkish-court-decisions(11.045.085 件、CC0)、これに Bedesten の日次クロールを追加。 |
| 法令文書 | 14.298 件/現行バージョン 14.171 件:法律 916 件、KHK 63 件、CBK 33 件、規則 8.840 件(現行 8.830 件)、通達 4.446 件(現行 4.329 件) |
| 法令条文 | 303.454 条文、96.186 件の改正記録 |
| 判決セマンティックインデックス | 29.554.075 個のチャンクベクトル — intfloat/multilingual-e5-small(384 次元)、FAISS IVF16384,PQ64 + fp16 サイドカーによる再精緻化、nprobe=128、チャンク分割 v2 |
| 法令セマンティックインデックス | 423.920 個のチャンクベクトル(303.454 条文から生成)、同じモデルとインデックス方式 |
詳細と測定値:docs/BULK_INDEX.md。
インストール
クイックインストール(コーパスなし)
Dayanak は、1,100 万件の判決を含むローカルコーパスがなくても動作します。この場合、判決と
法令は公式ソース(Bedesten、mevzuat.gov.tr、AYM、Danıştay など)からライブで検索され、
判決の全文もライブで取得されます。ローカルコーパスのみを検索するツール(search_local_corpus、mevzuat_korpus_ara、mevzuat_madde_getir)
は空の結果を返し、ライブツールへ誘導します。Python 3.11 以降が必要です。
# Kurmadan doğrudan çalıştırmak için (uv gerekir)
uvx --from dayanak dayanak-server
# ya da kalıcı kurulum
pipx install dayanak
Claude Code に追加するには:
claude mcp add dayanak -- uvx --from dayanak dayanak-server
Claude Desktop または別の MCP クライアントで使用する場合の設定:
{
"mcpServers": {
"dayanak": {
"command": "uvx",
"args": ["--from", "dayanak", "dayanak-server"]
}
}
}
デフォルトのツールプロファイルは基本ツール 11 個です。すべてのツールを使用するには、DAYANAK_TOOL_PROFILE=full
環境変数を設定してください。取得した文書は ~/.dayanak/cache.sqlite3 に
キャッシュされます(DAYANAK_CACHE_PATH で変更できます)。
開発用インストール(コーパスあり)
# Windows
cd <repo-dizini>
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev,mcp,embeddings]"
# macOS / Linux
cd <repo-dizini>
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,mcp,embeddings]"
dayanak version
バッチ FAISS インデックスを使ったセマンティック検索を有効にするには、別途
pip install faiss-cpu が必要です。詳しいインストール方法:INSTALL.md。
実行
HTTP(streamable-http)サーバー
ライブ環境では、サーバーは scripts\mcp_http_sunucu.cmd で起動します。このスクリプトは
環境変数を内部で設定し、ログを
%LOCALAPPDATA%\dayanak\mcp_http.log に書き込みます。
.\scripts\mcp_http_sunucu.cmd
Windows では、スケジュールされたタスク EmsalMcpHttp が同じスクリプトをログオン時に
実行します。エンドポイント:http://<host>:<port>/mcp。
stdio サーバー
call .\scripts\dayanak-env.cmd
dayanak-server
環境変数
| 変数 | 用途 | 値の例 |
|---|---|---|
DAYANAK_CACHE_PATH | コーパスの SQLite ファイル | <veri-dizini>\cache.sqlite3 |
DAYANAK_BULK_VEC_DIR | fp16 ベクトルのサイドカー(refine 用) | <bench-dizini>\vec |
DAYANAK_EMBEDDING_PROVIDER | 埋め込みプロバイダー | fastembed-multilingual-e5 |
DAYANAK_EMBEDDING_CACHE_DIR | ONNX モデルのキャッシュ | <veri-dizini>\models\fastembed |
DAYANAK_MCP_TRANSPORT | stdio(デフォルト)または streamable-http | streamable-http |
DAYANAK_MCP_HOST / DAYANAK_MCP_PORT | HTTP リッスンアドレス | 127.0.0.1 / 8790 |
DAYANAK_TOOL_PROFILE | core(デフォルト)または full | core |
DAYANAK_TOOL_THREADS | 同期ツール用のスレッドプール(0 = 無効) | 6 |
DAYANAK_TOOL_TIMEOUT | ツールごとの秒単位の制限時間 | 180 |
単発の CLI 呼び出しでは、scripts\dayanak-env.cmd が同じ変数を設定します
(call .\scripts\dayanak-env.cmd && .venv\Scripts\dayanak ...)。
マシン固有の値(データディレクトリ、リッスンアドレス、バックアップ先)はリポジトリに
保存されません。scripts\yerel-ayar.ornek.cmd を scripts\yerel-ayar.cmd
という名前でコピーし、値を設定してください(.gitignore に含まれています)。dayanak-env.cmd、
crawl_incremental.ps1、Python スクリプト(scripts/_yollar.py)はこのファイルを
読み込みます。空欄のパスはすべて ~/.dayanak を基準に設定されます。
MCP ツール
デフォルトのプロファイルは core で、11 個のツールが登録されています。残りは稼働中のサーバーに
load_extended_tools を使ってカテゴリごとに追加されます。仕様:
docs/MCP_CONTRACTS.md。
Core(11):
| ツール | 機能 |
|---|---|
search_decisions | ライブソースでの判決検索(ルーティングを含む) |
get_document | 単一文書の取得 |
search_local_corpus | ローカルの 1,100 万件の判決コーパスで FTS5 + 意味検索 |
search_legislation | mevzuat.gov.tr での法令検索 |
get_legislation | 法令本文/条文の取得 |
mevzuat_korpus_ara | ローカル法令コーパスでの条文単位の検索 |
mevzuat_madde_getir | ローカルコーパスからの単一条文の取得 |
research_topic | トピック調査パッケージ(バンドル + 品質ダッシュボード) |
export_document | 文書のエクスポート |
load_extended_tools | 拡張カテゴリを実行中に読み込む |
health_check | ソース/ブレーカー/インデックス/スケジュール済みジョブのヘルスチェック |
Extended(36)、カテゴリ別:
| カテゴリ | ツール数 | ツール |
|---|---|---|
legislation | 1 | mevzuat_degisiklik_raporu |
drafting | 2 | citation_check, prepare_petition |
files | 1 | read_legal_file |
meta | 2 | list_sources, legal_research_guide |
health_admin | 4 | circuit_breaker_status, source_health, source_smoke, check_government_servers_health |
watch | 4 | watch_add, watch_list, watch_run, watch_remove |
privacy | 3 | privacy_scan, privacy_redact, privacy_audit |
chambers | 4 | chamber_overview, profile_chamber, chamber_timeline, find_similar_chambers |
indexing | 1 | index_status |
drafting_advanced | 10 | draft_document, export_bundle, inspect_petition_pack, build_multi_issue_pack, inspect_multi_issue_pack, list_petition_templates, get_petition_template, build_argument_chain, score_argument, get_argument_strength_report |
udf_admin | 4 | udf_toolkit_status, udf_authoring_instructions, pdf_toolkit_status, promote_pdf_to_full_text |
Core プロファイルの docstring の上限(20,000 文字)に達したため、
citation_check、prepare_petition、read_legal_file、list_sources、legal_research_guideは 2026 年 9 月 6 日に extended に移されました。load_extended_toolsで再び利用できます。
CLI の例
dayanak sources
dayanak search bedesten "muvazaa" --limit 5
dayanak get bedesten DOCUMENT_ID
dayanak semantic bulk-status
dayanak mevzuat korpus-ara "tahliye taahhüdü"
dayanak smoke --offline
コーパスのクロールとパネル
長時間にわたるコーパスのクロール(Bedestenから年ごとに判例をダウンロード)は、マスタースクリプトで実行し、 ブラウザーから進行状況を確認できます。
.\scripts\kur-otomatik-baslatma.ps1 # oturum açılışına ekler (yönetici gerekmez)
.\scripts\kur-otomatik-baslatma.ps1 -Durum # ne çalışıyor?
.\scripts\kur-otomatik-baslatma.ps1 -Kaldir # geri al
| 部分 | 内容 |
|---|---|
crawl_master.ps1 | 年ごとに順番にクロールします。単一インスタンスロック(mutex)を使用し、crawl_logs\crawl_state.json にチェックポイントを記録します。PCの電源が切れた場合も、中断した年とページから再開できます。 |
scripts\panel.py | http://127.0.0.1:8799 — クロールのライブ状況、年ごとの目標、ライブラリの内訳、速度と推定値を表示します。追加の依存関係はありません。 |
| スケジュールされたタスク | EmsalCrawlMaster(ログオン時+1分後)、EmsalPanel(ログオン時+20秒後)。 |
注記:
- レート制限は
DAYANAK_RATE_LIMIT_MAX=12です。計測では、12の場合は429エラーが発生せず(約2,800件/時)、15の場合は429エラーのクールダウンループに入り、速度がゼロになります。 - パネルは
cache.sqlite3の年ごとの件数を集計しません。年を1つクエリするだけでテーブル全体のスキャンが発生し、約60秒かかるためです。件数は~/.dayanak/panel_stats.sqlite3に増分で保持され(新しいrowidのみを対象)、1日1回、全件集計を行います。 - 年ごとの目標はBedestenの
totalフィールドから取得します(crawl_logs\hedefler.json)。推定値ではありません。
運用
スケジュールされたジョブ(Windowsタスクスケジューラ、コーパスサーバー):
| タスク | 時刻 | スクリプト | 内容 |
|---|---|---|---|
EmsalMcpHttp | ログオン時 | scripts\mcp_http_sunucu.cmd | MCP サーバーを公開します |
EmsalCrawlDaily | 毎日04:30 | scripts\crawl_incremental.ps1 | 判例を増分クロールします |
EmsalMevzuatWeekly | 日曜日03:00 | scripts\mevzuat_weekly.cmd | 法令を更新します(+後処理 mevzuat_semantic.cmd) |
EmsalMonthlyMerge | 毎月1日02:00 | scripts\monthly_merge.cmd | 差分ベクトルを一括FAISSインデックスに追加します |
health_check ツールは、これらのジョブの最終実行結果を scheduled_jobs ブロックで報告します。schtasks は呼び出さず、各ジョブが独自のログファイルに書き込む終了マーカーとファイルのタイムスタンプを読み取ります。ジョブが遅延している場合、または rc != 0 で終了した場合、overall は "degraded" を返します(src/dayanak/ops_status.py)。
同じ出力の tool_runtime ブロックには、スレッドプールとタイムアウトのカウンターが表示されます。runaway > 0 の場合は、サーバーを再起動してください。
ドキュメント
| ドキュメント | 内容 |
|---|---|
docs/BULK_INDEX.md | コーパスの一括セットアップ、FAISSインデックス構造、chunking v2、計測結果、注意点 |
docs/MCP_CONTRACTS.md | MCP ツールの契約、プロファイル、カテゴリ |
docs/COOKBOOK.md | コピーして実行できるワークフローのレシピ |
docs/JSON_CONTRACTS.md | 一般的なAPI関数のJSON出力契約 |
docs/ERROR_CATALOG.md | エラーコードと推奨される対応 |
docs/INDEX.md | すべてのドキュメントの索引 |
CHANGELOG.md | 変更履歴 |
テスト
.venv\Scripts\python.exe -X utf8 -m pytest tests -q
ruff check src tests scripts
ライブソースにアクセスするテストは、デフォルトではスキップされます。有効にするには
DAYANAK_LIVE_TESTS=1 を設定してください。
ライセンス
GNU Affero一般公衆利用許諾契約書バージョン3(AGPL-3.0-only)に基づいてライセンスされています。全文は
LICENSE ファイルに記載されています。ソフトウェアを変更し、ネットワーク経由で他者にサービスとして
提供する場合は、変更したソースコードも同じライセンスでそのユーザーに提供する必要があります。セキュリティ上の脆弱性の報告方法は
SECURITY.md ファイルに記載されています。
著作権 © 2026 Alpaslan Fatih Sözer
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。