mcpField
U
UK Break Clause Analyzer

UK Break Clause Analyzer

ローカル
github.com/Ankur-stockheads法務・行政018 週間前に更新

UK Break Clause Analyzer について

UK Break Clause Analyzer は、英国の商業用賃貸借契約でテナントが解約権を行使できるか、定義済みのチェックリストで確認する意思決定支援 MCP サーバーです。原文の引用箇所に根拠を置き、曖昧な場合は人による確認に回します。評価ハーネスを備えていますが、法律相談ではありません。

主な機能

  1. 01解約条項の4条件チェックリスト
  2. 02原文箇所に基づく根拠と引用
  3. 03曖昧なケースの人による確認
  4. 04決定論的な日付と判定の確認
  5. 05正確性とハルシネーション率の評価

活用シーン

  1. 01通知期限と送達条件の確認
  2. 02賃料滞納と明渡し要件の確認
  3. 03ラベル付きケースによる分析結果の比較

MCP 対応

`extract_break_clause`、`check_conditions`、`find_citation`、`assess_validity` の4つの MCP ツールを提供します。応答には意思決定支援の免責事項と人による確認の要件が含まれます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ankur-stockheads-rubo": {
"command": "uvx",
"args": [
"uk-break-clause-analyzer-mcp"
],
"env": {
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>"
}
}
}
}
起動コマンドuvx uk-break-clause-analyzer-mcp
設定が必要な環境変数
ANTHROPIC_API_KEYシークレットAnthropic API key for live LLM extraction/reasoning. Without it the server runs in a heuristic-only fallback mode.

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

パッケージ
pypiuk-break-clause-analyzer-mcp0.1.1

ツール

4

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

パラメーター型必須説明
lease_textstringはい

詳細

英国のブレーク条項アナライザー(MCP)

CI

英国の商業賃貸借契約におけるテナントのブレーク条項を実際に行使できるかを評価し、自身の測定済みハルシネーション率を公開する、自己評価型の MCP サーバーです。

⚖️ 意思決定支援のみを目的としており、法律上の助言ではありません。 合成データに対する、意図的に簡略化された非独自のルールセットに基づいています。実際の判断は、必ず資格を有する弁護士が確認してください。


200万ポンドの決定的な落とし穴

2012年、あるテナントが賃貸借契約を終了するために有効なブレーク通知を送達しました。しかし、ブレーク日までに、数週間前に支払期日を迎えていた四半期分の賃料を支払っていませんでした。ブレークは成立せず、テナントはその後何年にもわたり、賃貸借契約(および賃料)に拘束されました。騒ぎも悪意もなく、ただ一つの前提条件が満たされておらず、手遅れになるまで誰も気づかなかったのです。

ブレーク条項は、このように容赦がありません。テナントが実際に退去できるかどうかは、簡潔なチェックリスト——期限内に通知を送達したか、適切に通知を送達したか、賃料の滞納がないか、明渡しを完了したか——にかかっており、一つでも間違えれば重大な結果を招きます。これは LLM に任せたくなるような作業ですが、答えを自信満々に捏造しないと信頼できるのであれば、という話です。

このプロジェクトは、その信頼を獲得し、測定することを目指しています。 単なる賢いパーサーではありません。信頼性を確保するための仕組みです。すべての主張は、出典の原文に根拠がある場合にのみ提示され、実際に曖昧なケースは推測せず人間に回されます。そして、どの程度の頻度で誤った回答をするかを公開する評価機能も備えています。

特長

  • 根拠に基づく — 主張するすべての条件は、出典の原文からの引用で裏付けられます。テキストが見つからない場合は NOT_FOUND を返し、引用を捏造することはありません。決定論的なゲートが出典から該当箇所を切り出すため、ハルシネーションしたテキストを引用として返すことはできません。
  • 適切に調整されている — 賃貸借契約の内容だけでは判断できない点については、当てずっぽうで答えるのではなく、AMBIGUOUS — human verify を返します。正直に回答を差し控えることも、この機能の一つです。
  • 自己評価型 — pytest の評価ハーネスが、ラベル付けされた24件のケースに対して、抽出精度、引用の忠実性、ハルシネーション率、および確信度の調整を評価します。
  • 推論して検証する — LLM が行うのは候補の提案までです。決定論的なコードが判断します(すべての引用を根拠と照合し、日付を計算し、明渡しに関する法的テストを適用して、最終判定を集約します)。

主要な数値

評価の全容(4つすべての指標、モデルごとの比較、混同行列、検出されたハルシネーションの例)は report/report.md をご覧ください。

コミット済みのレポートはヒューリスティックなベースラインです(API キーなしで実行できます)。すでに、この仕組みの要点を示しています。根拠付けゲートにより、根拠のない(捏造された)ハルシネーションはゼロになります。一方、推論を行わないベースラインでは、実際に曖昧なケースでも、誤った根拠付けが発生し、回答を差し控えることはありません。この差を埋めることこそ、適切に調整された LLM に期待される役割です。

uv run python scripts/run_eval.py --record   # measure claude-haiku-4-5 vs claude-sonnet-4-6

仕組み

flowchart LR
    A["Lease + Background Facts"] --> T["MCP tools"]
    T --> L["LLM adapter<br/>extract + reason · temperature 0"]
    L -- "proposes verbatim quotes<br/>+ findings" --> G{"Grounding gate<br/>verbatim? else NOT_FOUND"}
    G -- "spans sliced from source" --> C["Deterministic core<br/>checklist · UK date math · VP legal test"]
    C --> R["Strict-precedence aggregate<br/>fail→INVALID · uncertain→AMBIGUOUS · else VALID"]
    R --> O["Assessment<br/>verdict + calibration + human-verify gates"]
    subgraph EVAL["Eval (the point)"]
      D["24 labelled cases"] --> H["harness"] --> M["4 metrics"] --> P["report.md + SVG"]
    end

信頼の境界は構造的なものです。決定論的な core/ パッケージは、物理的に llm/ パッケージをインポートできません(テストでこれを強制しています)。「LLM が提案し、決定論的なコードが判断する」という原則は、規律に頼るのではなく、コードベースの性質として実現されています。

4つの MCP ツール(それぞれが一つの処理を担当)
ツール処理内容
extract_break_clauseブレーク条項と、その条項を含む出典の原文を返します
check_conditions4つの条件をチェックします。各条件について、根拠を示しながら合格/不合格/不確実を返します
find_citation主張を裏付ける正確な原文、または NOT_FOUND を返します
assess_validity調整に関する注記と、必須の人間による確認ゲートを含む、統合的な判定を返します

クイックスタート(2分以内でクローンから実行まで)

# 1. Install uv (skip if you have it)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. Install deps (uv fetches its own Python 3.12)
uv sync

# 3. Run the test suite — proves the eval apparatus is correct
uv run pytest -q

# 4. Check the dataset (every gold span verbatim, every label coherent)
uv run python scripts/validate_dataset.py

# 5. Regenerate the eval report
uv run python scripts/run_eval.py        # heuristic baseline, no key needed

上記のいずれにも ANTHROPIC_API_KEY は不要です。評価はヒューリスティックなベースラインにフォールバックするため、完全に再現可能です。実際の Claude モデルを評価するには、キーを設定して --record を指定してください。

Anthropic API キー

このキーが必要なのは、LLM によるライブ抽出(eval の --record ステップとサーバーの実モード)のみです。それ以外はキーなしで実行できます。

  • 絶対にコミットしないでください。 .env は Git の追跡対象外で、カセットでは x-api-key ヘッダーがマスキングされます。
  • ローカルコマンドの場合、キーを環境変数としてエクスポートするか、.env ファイルを使用します。
    export ANTHROPIC_API_KEY=sk-ant-…           # option 1: shell
    # or
    cp .env.example .env && $EDITOR .env          # option 2: .env, then:
    uv run --env-file .env python scripts/run_eval.py --record
    
  • MCP クライアントの場合、サーバー設定の env ブロック(下記)に設定します。

MCP サーバーを実行する

# Inspect it interactively (the official MCP Inspector)
npx @modelcontextprotocol/inspector uv run break-clause-analyzer

Claude Desktop — claude_desktop_config.json に追加します(プロジェクトから実行できるよう、クローンの絶対パスを使用してください)。

{
  "mcpServers": {
    "break-clause-analyzer": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/rubo-mcp", "break-clause-analyzer"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-…" }
    }
  }
}

Claude Code — 次のコマンドを実行します。

claude mcp add break-clause-analyzer -e ANTHROPIC_API_KEY=sk-ant-… \
  -- uv run --directory /absolute/path/to/rubo-mcp break-clause-analyzer

キーがなくてもサーバーは起動して応答します。その場合はヒューリスティックなベースラインを使用し、その旨を伝えます。すべてのツールの応答には、意思決定支援に関する免責事項が含まれます。

再現可能な eval(カセット)

API では temperature=0 でも決定性が保証されないため、再現性は記録済みカセット(VCR.py)によって確保します。scripts/run_eval.py --record は、x-api-key ヘッダーをマスキングしたうえで、モデルごとにカセット一式を記録します。--record を付けずに再実行すると、キーなしで数秒以内にカセットが再生されます。詳細は eval/cassettes/README.md を参照してください。

構成

src/break_clause_analyzer/
  core/       # deterministic trust boundary (no network; cannot import llm/)
    grounding.py  dates.py  checklist.py  aggregate.py
  llm/        # the only network egress (Anthropic + heuristic fallback)
  pipeline.py # propose → gate → dispose orchestration
  server.py   # FastMCP server: the four tools
data/cases/   # 24 labelled synthetic case files (+ dataset README)
eval/         # harness, metrics, report generator, cassettes
docs/METHODOLOGY.md  # pre-registered metric definitions
report/       # generated eval report + SVG
.planning/    # the eval-first roadmap, requirements, and decision log

方法論と誠実さ

指標の定義は、モデルを実行する前に docs/METHODOLOGY.md で事前登録されるため、結果を良く見せるために後から主要な数値を定義することはできません。ハルシネーション率では、グラウンディングゲートによって捏造が自明にゼロになるため、捏造だけでなく、誤った根拠付けや過信も数えます。スコアラーは LLM の判定を使用せず、ゴールドオラクルおよび意図的に不具合を仕込んだシステムを用いて tests/test_harness.py で検証されています。

対象範囲(意図的に限定)

テナントのブレーク条項のみ · 先行条件は4つ · 合成データ/公開データのみ · 意思決定支援であり、法律上の助言ではありません。その他の賃貸借条項、貸主のブレーク条項、実際のクライアントデータ、本番用エンジンは、明示的に対象範囲外です。


信頼性エンジニアリングの成果物として構築されました。重要なのは eval です。

コメント

MCP は初めてですか?

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

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