ooligo
mcp-server

Query Clio matters and time data from Claude via MCP

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

Stack

ClioClaude を接続する Model Context Protocol (MCP) サーバーです。弁護士や legal-ops マネージャーが Claude に対して、オープンな matter の一覧表示、特定案件の工数エントリの取得、連絡先レコードの取得、請求活動のサマリー作成などを、Clio の UI を開かずに Claude の会話から直接依頼できます。scaffold は apps/web/public/artifacts/mcp-server-clio-legal/ にあり、設計上は読み取り専用です。Clio の matter データや工数エントリのメモは弁護士-依頼人間の通信および業務成果物であるため、サーバーは書き込み操作を一切登録せず、ログにはメタデータのみを記録します(ツール名、タイムスタンプ、結果件数のみ — matter 名、活動メモ、連絡先の識別子は記録しません)。

使うべき場面

チームまたは個人事務所が Clio を使用しており、毎日何度も同じ質問に答えるために UI をクリックしている場合に活用してください。たとえば、特定の業務分野にオープンな matter がいくつあるか、今月の特定案件の請求時間の合計はいくらか、直近 30 日間に活動のない matter はどれか、特定クライアントの連絡先はどこにあるか、といった問いです。これらの問いは機械的です。フィルターを指定し、検索を実行し、リストから数値を読み取るだけで済みます。Claude のツール会話に非常に適したワークロードです。

時間の根拠:Clio の UI で 5 件の検索を毎日行い、1 件あたり 3 分かかる弁護士は(ブラウザタブを開き、Matters に移動し、フィルターを設定し、結果を読み、数値を案件メモにコピーする)、週約 75 分をナビゲーションに費やしています。同じ 5 件の検索を Claude のツール呼び出しとして実行すれば、合計 2 分未満で完了します。年間約 60 時間を実質的な法律業務に取り戻せる計算です。請求レートを USD 300/時間とすると、このナビゲーションを自動化しないことによる機会費用は年間約 USD 18,000 になります(これは推計です。実際の請求レートと検索量によって実数は異なります)。複数の弁護士が大規模な matter リストに対して同様の検索を行う事務所では、数値はさらに大きくなります。

matter ステータスの週次レポート、予算対実績の比較、業務分野別の生産性サマリーを作成する legal-ops マネージャーにとっては、このサーバーにより Claude が生データを取得してナラティブを 1 つの会話で作成できるため、Excel へのエクスポートという中間ステップが不要になります。

使うべきでない場面

チーム全体での matter 検索量が週 10 件未満の場合はスキップしてください。セットアップコストには、Clio 開発者アプリの登録、OAuth フローの実行によるアクセストークンの取得、Python 環境のインストール、そして事務所のデータセキュリティポリシー担当者との機密性の含意に関するレビューが含まれます。このコストは低い検索量では回収できません。Clio の UI を使い続けてください。量が増えたときに再検討しましょう。

クライアントの matter データへの AI アクセスをカバーする書面ポリシーがまだない場合はスキップしてください。MCP サーバーは Clio のデータを Claude のコンテキストウィンドウを通じてルーティングします。つまり、クライアント名、matter の説明、工数エントリのメモ、連絡先情報が Anthropic の API を通過します。Anthropic のデータ処理規約を確認し、管轄地域で必要な場合は、デプロイ前に AI 支援の案件レビューについてクライアントの同意を取得してください。scaffold はそのポリシー作業の代わりにはなりません。

書き込み操作が必要な場合もスキップしてください(Claude から工数エントリを作成する、matter のステータスを更新する、連絡先を追加する、コミュニケーションを記録するなど)。scaffold は意図的に書き込みツールを公開していません。書き込みの追加には、明示的なコード変更、特権モデルのレビュー、およびこの scaffold の範囲外の専門家賠償リスク評価が必要です。クライアントの matter データを扱う AI アシスタントに書き込みアクセスを与える前に、法律の専門家に相談してください。

セットアップ

完全なセットアップドキュメントは apps/web/public/artifacts/mcp-server-clio-legal/README.md にあります。概要:

  1. bundle をプライベートリポジトリにクローンします。Python 3.11+ の仮想環境内で pip install -e . を実行します。
  2. https://app.clio.com/settings/developer_applications の Clio 開発者ポータルで開発者アプリを登録します。Matters、Contacts、Activities への読み取り専用アクセスを付与します。App Key (CLIO_CLIENT_ID) と App Secret (CLIO_CLIENT_SECRET) をコピーします。
  3. OAuth Authorization Code フローを実行してアクセストークンとリフレッシュトークンを取得します(README に curl による交換手順がステップバイステップで記載されています)。
  4. 環境変数を設定します:CLIO_ACCESS_TOKENCLIO_REGIONuseucaau のいずれか — Clio のログイン URL に合わせる)、および本番稼働前に追加するリフレッシュ実装のために CLIO_CLIENT_IDCLIO_CLIENT_SECRETCLIO_REFRESH_TOKEN を任意で設定します。
  5. README の JSON スニペットで Claude Desktop にサーバーを登録するか、claude mcp add で Claude Code に追加します。
  6. 動作確認:Claude にオープンな matter の一覧を依頼します。レスポンスに display_number フィールドと status フィールドが含まれることを確認します。監査ログに tool=list_matters ts=... results=N のみが表示され、matter 名が含まれないことを確認します。

OAuth アクセストークンは約 1 時間後に期限切れになります。scaffold は自動リフレッシュを実装していません(README の TODO 項目 2)。本番稼働前に、弁護士にサーバーを配布する前にリフレッシュフローを実装してください。

サーバーが行うこと

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

list_mattersGET /api/v4/matters.json を呼び出し、fields パラメーターで iddisplay_numberdescriptionstatusopen_dateclose_dateclientpractice_arearesponsible_attorneyoriginating_attorneycustom_field_values を要求します。status(open/closed/pending)、client_id、ページネーションカーソルによるフィルタリングをサポートします。Clio API はデフォルトで idetag しか返しません。fields を明示的に指定しない限り何も返りません。server.pyfields 文字列がレスポンスを有用にするメカニズムです。

get_matter は同じ fields パラメーターで GET /api/v4/matters/{id}.json を呼び出します。list_matters で取得した matter ID があり、カスタムフィールドを含む完全なメタデータが必要な場合に使用します。

get_matter_time_entriestype=TimeEntrymatter_id フィルターで GET /api/v4/activities.json を呼び出します。Clio の工数エントリは Activities リソースのサブタイプです。type フィルターでそれらを絞り込みます。レスポンスには日付、数量(10 進数の時間)、単価、請求フラグ、タイムキーパー名、活動説明が含まれます。日付範囲フィルターもサポートされています。工数エントリのメモ(note フィールド)には特権業務の参照が含まれる場合があります。このツールを使用する弁護士は、Claude の会話を特権コンテンツを扱う他のチャネルと同様に取り扱う必要があります。

get_matter_activityGET /api/v4/activities.json を呼び出しますが、type=TimeEntry の制限なしで、工数エントリ、経費エントリ、固定報酬エントリをまとめて返します。任意の type パラメーターで 1 種類に絞り込めます。matter の完全な請求活動の全体像が必要なときに使用します。

get_contact は名前、タイプ、メールアドレス、電話番号、会社所属のフィールドで GET /api/v4/contacts/{id}.json を呼び出します。Clio の連絡先レコードにはクライアント、相手方、専門家、その他の事務所連絡先が含まれます。クライアントの個人情報は機密義務で保護されています。このツールの結果は適切に取り扱ってください。

ディスパッチロジックは apps/web/public/artifacts/mcp-server-clio-legal/src/clio_legal_mcp/server.py にあります。

コストの実態

3 つの費用項目があります:

Claude のサブスクリプション。 MCP を有効にした Claude Desktop または Claude Code。Pro(USD 20/ユーザー/月)または Team(USD 25〜30/ユーザー/月)で大多数の法律チームのセットアップをカバーできます。ヘビーユーザーの弁護士は Max を選択することも考えられます。

サーバーのホスティング。 セルフホスト型の Python プロセス。開発では弁護士ごとにローカルで実行し、共有利用では VPN 内の小規模な内部 VM(1 vCPU / 1 GB RAM で日 100 コール未満には十分)で実行します。クラウドプロバイダーで月額約 USD 5〜20。内部サーバーキャパシティがある場合は無料です。

Clio API クォータ。 Clio はアプリケーションごとに 3 リクエスト/秒のレート制限を設けています。Claude 経由で日 50 件の Clio 検索を行うチームは通常の使用パターンではこの制限内に収まります。matter リスト全体をループでスキャンするような自動化を構築すると、この制限がすぐに問題になります。

予算化されていない費用項目は、OAuth セットアップと機密性ポリシーレビューにかかる時間です。セットアップのためのエンジニア工数として 1〜2 時間、本番稼働前のデータフローの含意レビューのために弁護士またはコンプライアンス担当者の時間として 1〜2 時間を見込んでください。データ主権の規則が厳しい管轄(GDPR、日本の個人情報保護法など)の事務所では、クライアントの matter データを米国拠点の AI プロバイダー経由でルーティングすることが許容されるかどうかについて、法律の専門家に相談してください。

障害モード

セッション中のアクセストークンの期限切れ。 Clio のアクセストークンは約 1 時間後に期限切れになります。弁護士が Claude との会話中にトークンが期限切れになると、その後のツール呼び出しは HTTP 401 を返します。Claude にはエラーとして、またはデータが利用不可であると示唆するレスポンスとして表示されます。弁護士はトークンが期限切れになったことに気づかない可能性があります。

Guard:apps/web/public/artifacts/mcp-server-clio-legal/README.md の TODO 項目 2 に記載されている OAuth リフレッシュフローを、サーバーを設定したエンジニア以外に配布する前に実装してください。リフレッシュトークンはアクセストークンと同じスケジュールでは期限切れになりません。サーバー起動時にリフレッシュ呼び出しを行うことで、ユーザーが使用するツール呼び出しの前にアクセストークンが有効であることが保証されます。

バースト検索時のレート制限の発動。 すべてのオープンな matter をサマリーするよう Claude に依頼し、その直後に各案件の工数エントリを要求する弁護士は、N+1 件の API 呼び出しを連続して生成します。50 件の matter リストでは 51 件の連続した呼び出しになります。Clio の 3 リクエスト/秒の制限では、最初の数秒後に 429 エラーが発生します。

Guard:server.pyclio_get() に指数バックオフ付きリトライを追加してください(README の TODO 項目 3)。シンプルなパターン:429 受信時に 1 秒待機して再試行、2 回目の 429 で 2 秒待機、60 秒上限、5 回試行後に失敗。

Claude のコンテキストウィンドウを通じた弁護士-依頼人間の機密漏洩。 get_matter_time_entries または get_matter_activity が結果を返す場合、活動メモフィールドには特権情報が含まれている可能性があります。戦略に関する議論、起草中の主張、和解のパラメーター、依頼人からの指示などです。これらのメモは Claude のコンテキストウィンドウに入ります。つまり、Anthropic の API を通過し、Claude のレスポンステキストに現れる可能性があります。弁護士が Claude との会話を共有する場合、Clio のメモに由来する特権コンテンツを意図せず含めてしまう可能性があります。

Guard:デプロイ前に、このサーバーを使用する弁護士と工数エントリのメモの慣行についてレビューしてください。事務所の慣例が一般的なメモ(タイムコードと簡単な説明)か詳細なメモ(戦略サマリー)かを評価します。メモが詳細な場合は、ロールアウト前に server.pyTIME_ENTRY_FIELDSACTIVITY_FIELDS から note フィールドを削除することを検討してください。フィールド文字列は server.py の冒頭にあり、簡単に編集できます。

誤ったリージョンがデータ欠落に見える 404 を生成する問題。 CLIO_REGIONus に設定されているが、事務所の Clio アカウントが EU または CA リージョンにある場合、すべての API 呼び出しが誤ったベース URL にアクセスして 404 を返します。Claude は空のレスポンスを「エンドポイントが間違っている」ではなく「matter が見つかりません」と解釈します。

Guard:Clio へのログインに使用する URL を確認してリージョンを検証してから、デプロイしてください。それに応じて CLIO_REGION を設定します。README の動作確認ステップでこれを検出できます。オープンな matter があることがわかっているのに list_matters がゼロ件を返す場合、最初に確認すべきはリージョンです。

代替手段との比較

Clio のネイティブレポートと AI 機能。 Clio には組み込みのレポート機能(matter レポート、時間レポート、請求サマリー)があり、製品への AI 機能の統合を開始しています。クエリパターンが Clio のレポートテンプレートでカバーされており、回答が Clio 内に留まる場合はネイティブレポートを選択してください。回答が他のコンテキストも組み込んだ Claude の会話に届く必要がある場合は、この MCP サーバーを選択してください。たとえば、工数エントリのサマリーと別の書面テンプレートの両方を使ってクライアント更新メールを起草する場合や、2 つの業務分野の matter 活動を 1 つのナラティブレスポンスで比較する場合などです。

手動 CSV エクスポートと Claude へのアップロード。 サーバーのセットアップが不要な代替手段:Clio から matter レポートを CSV としてエクスポートし、Claude にアップロードして分析を依頼します。これは一回限りの分析には有効で、OAuth とホスティングのオーバーヘッドを完全に回避できます。検索頻度が低い場合(週 10 回未満)、データがリアルタイムである必要がない場合、または事務所の IT ポリシーがローカルサーバープロセスを禁止している場合は、このアプローチを選択してください。検索が頻繁で、新鮮なデータが必要で、ファイルのアップロードで中断せずに継続中の Claude の会話に組み込む必要がある場合は MCP サーバーを選択してください。

スタック

セルフホスト型 Python MCP サーバー(公式 mcp SDK、httpxpydantic)がバックエンドで Clio API v4 と通信し、フロントエンドは Claude Desktop または Code です。オプション:python-json-logger によるストラクチャードログを matter 管理の監査トレイルにパイプ、送信前に matter 名とメモの内容を除去した Sentry / OpenTelemetry エクスポート。ソースは apps/web/public/artifacts/mcp-server-clio-legal/src/clio_legal_mcp/server.py にあります。

Files in this artifact

Download all (.zip)