mcpField
E
Emsal

Emsal

ローカル
avfatihsozer.com法務・行政35 日前に更新

Emsal について

Dayanak(旧称 Emsal)は、公開された公式判決や法令を検索するトルコ法務リサーチ向けの MCP サーバーです。SQLite と FAISS によるローカルコーパスと公式情報源へのライブ検索を備え、全文がある文書だけを引用・草案に使います。

主な機能

  1. 01公式判決・法令のライブ検索
  2. 02ローカル全文・セマンティック検索
  3. 03テーマ調査と文書エクスポート
  4. 04引用確認と法的文書の作成
  5. 05プライバシースキャンとマスキング

活用シーン

  1. 01トルコの判決や法令の検索
  2. 02ローカルコーパスでの法務調査
  3. 03引用確認と法的文書の準備

MCP 対応

MCP サーバーとして、判決・法令検索、文書取得、調査、エクスポートなどのツールをクライアントに公開します。stdio または streamable HTTP で動作します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"afsozer-emsal": {
"command": "uvx",
"args": [
"emsal-mcp"
]
}
}
}
起動コマンドuvx emsal-mcp

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

パッケージ
pypiemsal-mcp1.1.1

ツール

11

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
dilanyいいえ
pageintegerいいえ
limitintegerいいえ
queryanyいいえ
sourceanyいいえ
esas_noanyいいえ
sort_byanyいいえ
birimAdianyいいえ
karar_noanyいいえ
court_typesanyいいえ
include_rawbooleanいいえ
include_snippetsbooleanいいえ
karar_tarihi_endanyいいえ
karar_tarihi_startanyいいえ

詳細

Dayanak

v2.0.1 — コア MCP ツール 11 個 + 拡張 MCP ツール 36 個(合計 47 個) · CLI コマンド 152 個 · テストファイル 80 個 · ソースモジュール 48 個

CI DOI

プロジェクトページ: 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_DIRfp16 ベクトルのサイドカー(refine 用)<bench-dizini>\vec
DAYANAK_EMBEDDING_PROVIDER埋め込みプロバイダーfastembed-multilingual-e5
DAYANAK_EMBEDDING_CACHE_DIRONNX モデルのキャッシュ<veri-dizini>\models\fastembed
DAYANAK_MCP_TRANSPORTstdio(デフォルト)または streamable-httpstreamable-http
DAYANAK_MCP_HOST / DAYANAK_MCP_PORTHTTP リッスンアドレス127.0.0.1 / 8790
DAYANAK_TOOL_PROFILEcore(デフォルト)または fullcore
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_legislationmevzuat.gov.tr での法令検索
get_legislation法令本文/条文の取得
mevzuat_korpus_araローカル法令コーパスでの条文単位の検索
mevzuat_madde_getirローカルコーパスからの単一条文の取得
research_topicトピック調査パッケージ(バンドル + 品質ダッシュボード)
export_document文書のエクスポート
load_extended_tools拡張カテゴリを実行中に読み込む
health_checkソース/ブレーカー/インデックス/スケジュール済みジョブのヘルスチェック

Extended(36)、カテゴリ別:

カテゴリツール数ツール
legislation1mevzuat_degisiklik_raporu
drafting2citation_check, prepare_petition
files1read_legal_file
meta2list_sources, legal_research_guide
health_admin4circuit_breaker_status, source_health, source_smoke, check_government_servers_health
watch4watch_add, watch_list, watch_run, watch_remove
privacy3privacy_scan, privacy_redact, privacy_audit
chambers4chamber_overview, profile_chamber, chamber_timeline, find_similar_chambers
indexing1index_status
drafting_advanced10draft_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_admin4udf_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.pyhttp://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.cmdMCP サーバーを公開します
EmsalCrawlDaily毎日04:30scripts\crawl_incremental.ps1判例を増分クロールします
EmsalMevzuatWeekly日曜日03:00scripts\mevzuat_weekly.cmd法令を更新します(+後処理 mevzuat_semantic.cmd)
EmsalMonthlyMerge毎月1日02:00scripts\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.mdMCP ツールの契約、プロファイル、カテゴリ
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

コメント

MCP は初めてですか?

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

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