ooligo
mcp-server

Triage Relativity review-set metadata from Claude via MCP

Difficulty
上級
Setup time
2-4 hours
For
legal-ops-manager
Legal Ops

Stack

Relativity のワークスペース、review set、保存済み検索のメタデータを Claude の会話内でツールとして公開する Model Context Protocol (MCP) サーバーです。legal-ops マネージャーや e-discovery エンジニアは、Relativity の UI を開いたりカスタムクエリを書いたりすることなく、Claude に対してアクティブなワークスペースの一覧取得、review set のドキュメント数の確認、保存済み検索の定義のサマリー取得を依頼できます。scaffold は apps/web/public/artifacts/mcp-server-relativity-ediscovery/ にあり、設計上は読み取り専用です。ドキュメント本文は取得されず、ドキュメントごとのコーディング決定も公開されず、書き込み操作は一切登録されていません。

使用するタイミング

チームが Relativity(RelativityOne クラウドまたはオンプレミスの Relativity Server)を使用しており、週に数回 Relativity の UI をナビゲートする必要がある繰り返しの運用上の質問を 3 つ以上挙げられる場合に、このサーバーを活用してください。典型的な例:「Alpha 案件の review set にはドキュメントが何件あり、何パーセントがレビュー済みか?」「現在アクティブなワークスペースはどれで、それぞれのドキュメント数は?」「Bravo 案件のワークスペースにある保存済み検索と、それぞれのオーナーを教えて」。これらの質問は運用上のナビゲーションであり、どれも 1 つのドキュメントを読んだり、1 つのコーディング決定を確認したりする必要はありません。まさに Claude との会話に圧縮しやすい種類の作業です。

経済的な論拠は具体的です。8〜12 件の案件を同時に管理する e-discovery チームは、毎週の相当な時間を Relativity からステータス数値を取得することに費やします。ワークスペースのダッシュボードを開き、案件ビューを切り替え、review set の進捗を確認し、次の production のために保存済み検索の定義を確認する、といった作業です。この規模のフルタイムの legal-ops マネージャーが費やす時間の保守的な見積もり(管理された調査ではなく作業の構造に基づく)は 1 日 45 分です。これらの検索を 30 秒の Claude との会話に圧縮すると、運用上のオーバーヘッドは 1 日 5 分未満になります。回収された時間は、実質的な調整作業に充てられます。外部弁護士へのレビュー進捗の報告、review set の割り当て調整、production スケジュールの準備などです。

このサーバーは新メンバーのオンボーディングにも役立ちます。新しいメンバーが案件チームに加わったとき、Claude にワークスペースの保存済み検索と review set の一覧を求める方が、Relativity の UI のウォークスルーをスケジュールするよりも速いです。案件のメタデータの全体像—ワークスペースが何件あるか、どのような review set が存在するか、主要な検索は何か—が Claude の会話ですぐにアクセスできるようになります。

使用しないタイミング

案件数が少ない場合—同時にアクティブな案件が約 4 件未満—または、チームの運用メタデータクエリが週に 15 件未満の場合はスキップしてください。セットアップコストには、Relativity 管理者による認証情報のプロビジョニング、社内弁護士による特権的立場のレビュー、サービスアカウントの影響範囲に関するセキュリティレビュー、サンドボックスから本番環境への検証サイクルが含まれます。このコストは低いクエリ量では回収できません。Relativity の UI を直接使用し、案件数やクエリ頻度が増加したときに再検討してください。

デプロイが、ケースデータの送信または処理方法を制限する保護命令の対象となっている場合はスキップしてください。Relativity のワークスペース名、案件の割り当て、review set 名自体が守秘義務の対象となる場合があります。これらのメタデータを Claude セッションを通じて送信する前に、担当弁護士に対して、デプロイが適用される保護命令および会社またはクライアントが採用しているデータ処理プロトコルと整合していることを確認してください。

Relativity インスタンスが Relativity Server 2022 より古い場合、またはテナントが REST API のベースパスを検証していない場合はスキップしてください。scaffold は RelativityOne(2024〜2025)向けに文書化された REST API の規則をターゲットにしています。古いオンプレミスバージョンのパスは異なります。検証されていないベースパスに対して実行すると、404 エラーまたは不正な形式のレスポンスが生成され、Claude 内では「データが見つかりません」として表示されます。これは MCP を介した法的ツールへの信頼を損なう典型的な障害モードです。最初の使用前に Relativity 管理者とパスを確認してください。

e-discovery メタデータへの Claude アクセスをカバーする AI ポリシーがまだない場合はスキップしてください。ポリシーは次の点を扱う必要があります:どの案件が対象か、誰が MCP 経由でクエリできるか、Claude セッションはどのように記録されるか。まずポリシーを確立してください。

セットアップ

詳細なセットアップは apps/web/public/artifacts/mcp-server-relativity-ediscovery/README.md に記載されています。概要:

  1. バンドルをプライベートリポジトリにクローンします。Python 3.11 以上の仮想環境内で pip install -e . を実行します。
  2. 認証情報をプロビジョニングします。本番環境では、Relativity で OAuth2 クライアントを作成します(Home → Authentication → OAuth2 Client Manager → New;Flow Grant Type:Client Credentials;Context User:サービスアカウント)。クライアント ID とクライアントシークレットをコピーします。開発専用の使用には Basic 認証(ユーザー名/パスワード)がサポートされていますが、共有環境には推奨しません。
  3. 環境変数を設定します:RELATIVITY_HOST(テナント URL、例:https://your-tenant.relativity.one)、RELATIVITY_AUTH_MODEoauth2 または basic)、および対応する認証情報変数。
  4. README の JSON スニペットを使用して Claude Desktop にサーバーを登録します。サーバーは relativity-ediscovery の下に 5 つのツールを登録します。
  5. サニティチェックを実行します:Claude にワークスペースの一覧を求めます。ドキュメントテキストなしにワークスペース名と ArtifactID が返されることを確認します。特定のワークスペースの保存済み検索を求めます。レスポンスに検索名とオーナーのみが含まれることを確認します。ドキュメントコンテンツが表示された場合は、アクセスを拡大する前に停止して調査してください。

サービスアカウントは、対象のワークスペースへの読み取りアクセス権が必要です。デプロイに必要な最小限の範囲でプロビジョニングしてください—インスタンス管理者としてではなく。

動作の詳細

scaffold は 5 つのツールを登録します。すべて読み取り専用です。

list_workspaces — Workspace Manager REST エンドポイント(GET /Relativity.Rest/api/relativity-environment/v1/workspace/)を呼び出し、アクセス可能なワークスペースの名前、ArtifactID、ステータス、案件割り当てをページネーションで返します。ArtifactID は、後続のすべてのツール呼び出しで特定のワークスペースへのクエリを絞り込むために使用するキーです。

get_workspace_summary — 単一ワークスペースの Workspace Manager サマリーヘルパー(/summary)を呼び出し、ドキュメント数と総ファイルサイズを返します。ここでの技術的な選択は、ワークスペースの完全な読み取りではなくサマリーエンドポイントを公開することです。サマリーエンドポイントは、legal-ops マネージャーが最も頻繁に求める 2 つの数値を返しますが、運用ステータスのクエリには無関係なワークスペース設定フィールドは返しません。

get_review_set_metadata — 特定の review set オブジェクトについて Object Manager(POST /Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{id}/object/read)をクエリします。Relativity の review set は Relativity Dynamic Objects(RDO)であり、その ArtifactTypeID は Review アプリケーションのインストール時に割り当てられ、インスタンス間で固定されていません(常にタイプ 10 のドキュメントとは異なります)。scaffold は最初の呼び出し時にオブジェクトタイプレジストリをクエリして ArtifactTypeID を解決し、セッション中にキャッシュします。ツールは review set レベルのメタデータ—名前、ステータス、ドキュメントの総数、レビュー済みドキュメント数、レビュアーの割り当て—を返し、ドキュメントごとのコーディング値は明示的に公開しません。レスポンスには、ドキュメントごとのコーディングデータが意図的に含まれていないことを Claude に通知する _note フィールドが含まれます。

get_saved_search_summary — Keyword Search Manager(POST /Relativity.Rest/api/Relativity.Services.Search.ISearchModule/Keyword Search Manager/ReadSingleAsync)を呼び出し、保存済み検索の定義 DTO を返します:名前、条件、フィールドリスト、オーナー。条件は、弁護士が保存済み検索が実際に何を検索するかを確認するために Claude セッションに返されます—production バッチの前に検索を使用する前の一般的な運用ニーズです。条件は絶対にログに書き込まれません(server.pylog_invocation() ヘルパーがそれらを省略します)。保存済み検索の条件は法的なレビュー戦略を明らかにする可能性があるためです。

list_saved_searches — Keyword Search Manager のクエリエンドポイントを呼び出し、ワークスペース内の保存済み検索のページネーションされたリストを返します。レスポンスは名前、ArtifactID、オーナー、変更日時のみに絞り込まれます。条件はリストレスポンスに含まれません(弁護士が明示的に要求するように、個別の get_saved_search_summary 呼び出しのみに含まれます)。

src/relativity_ediscovery_mcp/server.py のディスパッチには書き込み操作がゼロです。create_*update_*delete_*code_document、またはプロダクションのトリガールートは存在しません。追加には明示的なコード変更が必要です。

コストの実態

実際の 3 つのコスト項目:

Claude のサブスクリプション。 MCP が有効な Claude Desktop または Claude Code。Pro($20/ユーザー/月)または Team($25〜30/ユーザー/月)は、ほとんどの legal-ops チームのセットアップをカバーします。10 件のアクティブな案件にわたって週に 200 件の運用メタデータクエリを実行するチームはこれらのプランで十分です。非常に大量のデプロイ(例えば、毎時の自動案件ステータスレポート)は Max を正当化する場合があります。

サーバーホスティング。 セルフホスティングの Python プロセス。開発用にはユーザーごとにローカルで実行します。チームの共有使用には、会社の VPN 背後の小型の内部 VM(1 vCPU / 1 GB RAM は 1 日 200 コール未満で十分)がハイパースケーラーで月額 $5〜15 程度、または既存の社内インフラがあれば追加コストなしです。

Relativity REST API クォータ。 Relativity はテナントごとに REST クライアントのレート制限を設けており、インスタンスのバージョンとサブスクリプションレベルによって異なります。このサーバーが生成するパターン(大量のドキュメントエクスポートではなく、個別オブジェクトの読み取り)で週に 200 クエリを実行するチームは、デフォルトのクォータの範囲内に十分収まります。大規模インスタンスで毎時すべてのワークスペースをポーリングする自動化はレート制限に達します。README の TODO リストでは、指数バックオフを使ったリトライを本番環境前のタスクとして挙げています。

予算外のコスト項目は弁護士と管理者の時間です。本番環境へのデプロイ前に社内弁護士による特権的立場のレビューに 1〜3 時間、API パスの検証と適切なスコープでのサービスアカウントのプロビジョニングのために Relativity 管理者との作業に 1〜2 時間、そして Relativity が API サーフェスを変更する可能性のあるアップデートをリリースするたびの四半期ごとの定期レビューを計画してください。

障害モード

長いセッション中の認証トークンの期限切れ。 scaffold は起動時に 1 回だけ OAuth2 トークンを取得します。トークンは約 1 時間で期限切れになります。Claude セッションが 1 時間以上続き、会話の途中でトークンが期限切れになると、後続のツール呼び出しは 401 エラーを返し、Claude の会話には「Relativity がエラーを返しました」として表示されます。Guard:README の TODO #2 は、本番環境使用前の必須タスクとして OAuth2 トークンリフレッシュを挙げています。それまでは、1 時間未満のセッションの開発専用として扱ってください。

review set の ArtifactTypeID 解決の失敗。 review set は ArtifactTypeID が固定されていない RDO です。scaffold は最初の呼び出し時にオブジェクトタイプレジストリを名前でクエリして解決します。ターゲットワークスペースに Review アプリケーションがインストールされていない場合、またはテナントの設定でオブジェクトタイプ名が「Review Set」と異なる場合、検索は説明的なエラーで失敗します。Guard:server.pyresolve_review_set_artifact_type_id() 関数は検索したオブジェクトタイプを明示するクリアなエラーメッセージを生成するため、障害は診断可能です。本番環境へのデプロイ前に Relativity 管理者とオブジェクトタイプ名を確認してください。

保護命令下でのワークスペース名または案件名の開示。 Relativity のワークスペース名には通常、案件名が含まれます。それを Claude セッション経由で送信することは、ケースメタデータの送信を制限する保護命令の対象となる案件では守秘義務を伴う場合があります。Guard:アクティブな案件へのデプロイ前に、担当弁護士に対して、デプロイが適用される保護命令と整合していることを確認してください。これは技術的な保護手段のない唯一の障害モードです—法的レビューのステップが必要です。README はこれをセキュリティモデルのセクションで明示的に記載しています。

保存済み検索条件のログ記録。 サーバーの不注意な計装では、検索条件を含むクエリパラメータをログに記録し、レビュー戦略の発見可能な記録を作成してしまう可能性があります。Guard:server.pylog_invocation() ヘルパーはツール名と結果数のみを受け付けます。検索条件の文字列はロガーに渡されません。条件ログを復活させるには、特権ポリシーに対してレビューされたコード変更が必要です。

レスポンスフィールド名が Relativity のバージョンと異なる。 get_review_set_metadata のフィールド名("Total Documents""Reviewed Documents""Reviewers")は RelativityOne の一般的なフィールド命名規則に従っていますが、カスタマイズ可能であり、テナントによって異なる名前が使用されている場合があります。ツールが空のフィールド値を返す場合、フィールド名がテナントに対して正しくありません。Guard:ツールの出力を信頼する前に、Relativity 管理者のフィールド設定でフィールド名を検証してください。

代替手段との比較

Relativity のネイティブダッシュボードとウィジェット。 Relativity は各ワークスペース内に案件ステータスダッシュボードを提供しています。回答が Relativity 内に留まり、質問する人物が Relativity のログインを持っている場合はそちらを選択してください。Claude の会話が、メールのコンテキスト、案件管理メモ、外部弁護士とのコミュニケーション、または legal-ops スタック内の他のツールにも及ぶ場合は、この MCP サーバーを選択してください。つまり、価値が Relativity のナビゲーションではなく、複数のソースにわたる Claude の推論にある場合です。

Relativity REST API を直接使用したカスタムレポート。 どのエンジニアでも、Relativity の REST API をポーリングしてステータスレポートをメールや Slack で送信する Python スクリプトを書けます。このアプローチは固定フォーマットのスケジュールレポートには適しています。クエリがアドホックな場合—弁護士が事前に何を尋ねるか分からない場合、または質問が固定のレポートテンプレートではなく会話から生まれる場合—は MCP サーバーを選択してください。MCP アプローチはクエリの変動性を扱えますが、固定スクリプトは扱えません。

現状維持:弁護士と legal-ops スタッフが Relativity の UI をナビゲートする。 これが正直なベースラインです。MCP サーバーは、案件数とクエリ頻度がセットアップコストを回収するのに十分な場合にのみ勝ちます。アクティブな案件が約 4 件未満で、週の運用クエリが 15 件未満の場合、現状維持の方が速くリスクも少ないです。

スタック

Relativity REST API とバックエンドで通信するセルフホスティングの Python MCP サーバー(公式 mcp SDK、httpxpydantic);フロントエンドは Claude Desktop または Code。server.py のソースコードは apps/web/public/artifacts/mcp-server-relativity-ediscovery/src/relativity_ediscovery_mcp/server.py にあります。インストール手順、環境変数リファレンス、登録 JSON、および本番環境対応のための番号付き TODO リストを含む完全なバンドルは apps/web/public/artifacts/mcp-server-relativity-ediscovery/README.md にあります。

Files in this artifact

Download all (.zip)