clio-mcp について
clio-mcpは、法律事務所やリーガルテックチーム向けのオープンソース接続ツールで、ClaudeからClioの案件管理データにアクセスできます。読み書きツールに加え、ローカル監査ログと暗号化されたOAuthトークンを備え、標準構成ではローカルで動作します。
主な機能
- 01案件、連絡先、文書、タスク、カレンダー、請求情報へのアクセス
- 02読み書きツールと任意の読み取り専用モード
- 03ツール呼び出しのローカル監査ログ
- 04AES-256-GCMによるOAuthトークン暗号化
- 05アカウントデータのローカルへの読み取り専用エクスポート
活用シーン
- 01Claudeで案件や連絡先の最新情報を確認
- 02AIによるClioデータアクセスを記録・確認
- 03読み取り専用から始めて書き込みを後から有効化
- 04Clioのアカウント記録をローカルにエクスポート
MCP 対応
stdioおよびHTTP/SSE経由で、Clioのデータと操作をClaude向けのMCPツールとして公開します。標準構成ではローカルで動作し、Clioに直接接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @oktopeak/clio-mcpCLIO_CLIENT_IDClient ID from your Clio developer application (Settings → Developer Applications)CLIO_CLIENT_SECRETシークレットClient Secret from your Clio developer applicationENCRYPTION_KEYシークレットOptional. Leave unset to auto-generate a key stored in the OS keychain (or ~/.clio-mcp/key.hex as fallback on headless Linux/WSL2). If set, must be a 64-character hex string — it will be migrated to the OS keychain on first use.CLIO_REDIRECT_PORTLocal port for the OAuth callback listener (default: 5678). Change if 5678 is in use.CLIO_REGIONClio data region: 'us' (default, app.clio.com), 'eu' (eu.app.clio.com), 'au' (au.app.clio.com), or 'ca' (ca.app.clio.com). Controls the API and OAuth base URLs. Fixed at Clio account creation; must match the server your firm logs in to. Any other value stops startup.READ_ONLYOptional. 'true', '1' or 'yes' leaves the nine write tools (create_matter, create_note, create_task, update_task, complete_task, create_calendar_entry, log_time_entry, create_activity, upload_document) unregistered so Claude can read Clio but never change it. Works on both transports.CLIO_API_BASEAdvanced override for the Clio API base URL (e.g. https://eu.app.clio.com/api/v4). Takes precedence over CLIO_REGION.CLIO_AUTH_URLシークレットOverride the OAuth authorization endpoint (e.g. https://eu.app.clio.com/oauth/authorize).CLIO_TOKEN_URLシークレットOverride the OAuth token endpoint (e.g. https://eu.app.clio.com/oauth/token).TOKEN_BROKER_URLシークレットURL of Oktopeak's hosted token broker for the Clio App Directory listed install. Do not set CLIO_CLIENT_ID/CLIO_CLIENT_SECRET alongside this — the shared app's secret lives only on the broker, never on this machine.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Clio MCP サーバー:Claude を Clio Practice Management に接続
Oktopeak が開発:法律事務所向けの AI トランスフォーメーションと自動化
法律・医療事業者のデジタルトランスフォーメーション。 AI 連携、ワークフロー自動化、貴事務所が完全に所有するカスタムソフトウェア(このコネクターを含む)を開発します。→ 30 分の相談を予約
コネクターが事務所全体にもたらす機能を 26 秒で紹介します。自社のクラウドで稼働し、各自が自分の Clio ログインでサインイン。監査ログは 1 つ、毎月構築する自動化は 1 つ、月額固定 300 ドルです。動画を見る。
Claude がチャットウィンドウにクライアント情報をコピーすることなく、Clio の最新データ(案件、カスタムフィールド、メモ、連絡先、ドキュメント、フォルダー、タスク、カレンダー、請求情報)を読み取れるようにする、オープンソースの Model Context Protocol(MCP)コネクターです。弁護士・依頼者間秘匿特権、ABA Opinion 512 への準拠、既存の業務管理スタック内での AI ワークフローの維持を重視する法律事務所向けに開発されました。
要約: stdio と HTTP/SSE のトランスポートを介して、Clio の 37 個のツールを Claude に公開します。ABA Opinion 512 に準拠した監査ログを記録します。OAuth トークンは AES-256-GCM で保存時に暗号化されます。デフォルトではローカルのみで動作します。独自の Clio 開発者アプリを登録するため、中継サーバーは介在しません。Clio App Directory 向けには、最小限のログイン専用ブローカーを使用する、別のワンクリック「掲載版」もあります。詳細は掲載版/ワンクリックインストール版をご覧ください。MIT ライセンスで、永久に無料です。
対象ユーザー: 法律事務所の IT 担当者、リーガルオペレーションチーム、技術に精通したパートナー、リーガルテック企業のエンジニアです。ターミナルでの 5 段階のインストール手順に従える方なら、利用できます。
ヒント
開発者でなくても大丈夫です。
以下の README では、JSON 設定ファイルを編集できる方を想定しています。ご自身やチームが該当しない場合は、法律事務所向けに導入を代行します。範囲を限定した認証情報、設定済みの監査ログ、カスタムワークフロー 1 つ、トレーニングを提供します。v0.2 では、より簡単なワンコマンドインストーラーも予定しています。
→ 事務所全体での導入をご希望ですか? Firm Plan:月額 300 ドル。 自社のクラウドにセットアップし、各弁護士が自分のログインでサインイン。監査ログは 1 つ、毎月お客様向けの自動化を 1 つ構築します。セットアップ料金なし、いつでも解約できます。→ oktopeak.com/firm-plan/、または30 分の相談を予約
移動先: デモ · セットアップ · 利用可能なツール · アカウント全体のエクスポート · セキュリティとコンプライアンス · 導入を依頼する
デモ
Claude がチャットにクライアント情報をコピーすることなく、1 分以内に Clio の最新データ(案件、連絡先、タスク)を取得する様子をご覧ください。
Claude + Clio を活用する法律事務所向けのセットアップのヒントと、ABA Opinion 512 への準拠に関する最新情報。
→ Oktopeak Builder Notes を購読。短いメールで、配信停止も簡単です。
2.5.0 の新機能:アカウント全体をエクスポート
npx @oktopeak/clio-mcp export --out <folder> を実行すると、案件、連絡先、メモ、タスク、カレンダーの予定、タイムエントリー、経費、請求書、ドキュメントがすべて、読み取り専用で、ご自身の Clio アプリを通じて Clio からお使いのコンピューターにコピーされます。先に npx @oktopeak/clio-mcp auth を実行してください。アカウント全体のエクスポートをご覧ください。
2.2.0 へのアップグレード
2026 年 9 月より前にインストールした場合は 2.0.1 をお使いです。変更履歴に埋もれさせず、明確にお伝えする価値のあるアップグレード理由が 1 つあります。
2.0.1 は監査ログにクライアントデータを書き込みます。 連絡先の検索クエリ、メモの件名、案件の説明、カスタムフィールドの値がすべて、~/.clio-mcp/audit.log にそのまま記録されていました。このログは通常のファイルで、ローテーションされません。2.2.0 では監査ログのエントリーに記録されるのは ID、件数、日付、ページトークンのみです。拒否リストではなく許可リストによってこれを徹底し、いずれかのツールが再び内容をログに記録するようになった場合に失敗するテストも用意しています。
npm install -g @oktopeak/[email protected] # or just restart Claude Desktop if you use npx
既存の ~/.clio-mcp/audit.log には、旧バージョンが記録した内容がそのまま残っています。どうするかを決める前に、内容を確認することをお勧めします。
2.0.1 からのその他の新機能:案件と連絡先のカスタムフィールドおよびメモ、フォルダーツール、案件の関連情報、対応中の案件全体のアクティビティ概要を 1 回の呼び出しで取得する機能、設定レベルの READ_ONLY モード、誤った回答につながる短縮を行わない完全な読み取りページネーション。CHANGELOG.mdをご覧ください。
コンプライアンスとセキュリティ
法律事務所が AI ツールを評価する際に、適切な質問をしていることを受け、このセクションを設けています。以下に直接お答えします。
ABA Formal Opinion 512:AI と専門能力
ABA Opinion 512(2023 年)は、AI ツールを使用する弁護士に対し、ツールの仕組みを理解し、その出力を監督し、クライアント情報の機密性を維持するよう求めています。このコネクターは、これらの義務を念頭に設計されています。
-
監査ログ。 ツール呼び出しのたびに(Claude がユーザーに代わって Clio にクエリするたびに)、ローカルの
~/.clio-mcp/audit.logファイルに追記されます。各エントリーには、タイムスタンプ、呼び出されたツール、渡された引数、成功したかどうか、Clio のユーザー ID が記録されます。ログはクラウドサービスではなく、お使いのマシンに保存されます。追記専用で、ソフトウェアによって削除されることはありません。そのため、事務所は AI が開始したデータアクセスの完全な記録を保持できます。 -
コネクターによるデータ保持なし。 コネクター自体は、案件データ、クライアント名、Clio のコンテンツを保存しません。API からデータを取得し、結果を Claude に渡します。ローカルに永続化されるのは認証トークンのみで、暗号化されています(下記参照)。例外は、設計上、別個の
exportコマンドだけです。このコマンドは選択したフォルダーに Clio データのローカルコピーを書き込みます。それ以外の機能では書き込みません。 -
書き込みツールは 12 個。すべてログに記録され、すべて任意です。 このコネクターでは、案件、カスタムフィールド、メモ、タスク、フォルダー、カレンダーの予定、タイムエントリー、アクティビティを作成し、案件とタスクを更新し、タスクを完了して、ドキュメントをアップロードできます。削除は一切行わず、連絡先や請求記録にも触れません。すべての書き込みは監査ログに記録されます。また、
READ_ONLY=trueにすると、サーバーから 12 個すべての書き込みツールが完全に削除されます(読み取り専用モードを参照)。そのため、事務所はまず読み取りアクセスから始め、書き込みを有効にするか判断した後で切り替えられます。
トークンのセキュリティ:保存時の暗号化
OAuth 認証情報が平文で保存されることはありません。認証後、コネクターはアクセスおよびリフレッシュトークンを金融機関でも使用されている標準と同じ AES-256-GCM で暗号化し、暗号文を ~/.clio-mcp/tokens.enc に書き込みます。暗号化キーは初回実行時に自動生成され、OS のキーチェーン(macOS Keychain、Windows Credential Manager、または Linux Secret Service)に保存されます。ファイルシステム上に平文で保存されることはありません。
キーなしで誰かがトークンファイルを入手しても、その内容を読み取ることはできません。
OAuth 2.0:パスワードは保存されません
認証にはClioの標準的なOAuth 2.0フローを使用します。Clio独自のログインページから、ブラウザーを通じてログインします。このコネクターがClioのパスワードを見ることも、扱うこともありません。CSRF対策として、すべての認証リクエストに暗号学的なstateパラメーターを実装しています。
ローカルファーストのアーキテクチャ
コネクターはすべてお使いのマシン上で実行されます。Clio MCPのクラウドサービスも、中継サーバーも、間に入る第三者もありません。Clio APIとの通信は、お使いのデバイスからClioのサーバーへ直接行われます。
これは、ご自身のClio開発者アプリケーションを登録する、以下のデフォルト設定の場合です。ワンクリックの「掲載済み」インストール方法(次のセクション)は例外ですが、該当するのはログイン手順のみです。
掲載済み/ワンクリックインストール方法(App Directory)
ご自身のClio開発者アプリケーションを登録する代わりに、Clio App Directoryからこのコネクターをワンクリックでインストールした場合は、掲載済みの方法を利用しています。この方法では、事務所ごとに別のアプリケーションを使うのではなく、Oktopeakが所有する1つのClioアプリケーションを、インストールするすべての事務所で共有します。そのため、アプリケーションのclient_secretをお使いのマシンに配布することはできず、Oktopeakが運用する小規模なホスト型トークンブローカーにのみ保管されます。
**具体的に変わる点:**案件データはお使いのマシンとClioの間で直接やり取りされます。ログインのハンドシェイクのみ、当社のトークンサービスを経由します。すべてのツール呼び出し(案件、連絡先、ドキュメント、タスク、カレンダー、請求など)は、前述のBYOC設定とまったく同様に、お使いのマシンからClio APIへ直接行われます。ブローカーがこれらのデータを見ることも、保存することも、ログに記録することもありません。OAuthログインの完了に必要な数秒間(およびトークンの更新時に再び短時間)だけ関与します。永続的に保存するものはなく、トークンやセッションデータがハンドシェイク終了後も残ることはありません。
セキュリティレビュー担当者向けのデータフローに関する詳細資料(シーケンス図、およびブローカーが保持する情報と保持しない情報を含む)は、トークンブローカーのリポジトリにあります:docs/DATA_FLOW.md。
その他のすべて(ローカルでのAES-256-GCMトークン暗号化、監査ログ、37個のツール)は、BYOC設定と同じです。なお、ClioのOAuthでは、ログインごとにより狭いスコープをリクエストすることはできません。トークンが持つ権限は、接続するClioアプリケーションをClio Developer Portalに登録した際に付与された権限になります。掲載済みアプリの場合、登録時の権限は37個のツールに必要な最小限に抑えられています。BYOC設定でご自身のアプリを登録する場合も、同じ方針を適用できます。最終的なClaude Desktop設定については、以下のオプションCをご覧ください。
信頼モデル
機密性の高い法律業務にAIツールを導入する前に、そのツールを評価する実務担当者が確認すべき3つの問いを紹介します。
どの Claude のプランを使うべきですか?
このコネクターは、Clio と Claude の間の通信を保護します。データが会話に入った後に Claude 自体がデータをどのように扱うかは変わりません。Claude のデータの取り扱いは、このコネクターではなく、利用するプランによって決まります。
- ゼロデータ保持(ZDR)を適用した Anthropic API:トレーニングも保持も行わない契約条件が適用され、Anthropic API の組織レベルで有効になります。小規模な法律事務所でも利用でき、大企業向けの契約に限定されていません。クライアントの秘匿特権対象データを扱う業務では、この構成を推奨します。
- Claude Enterprise/Team:トレーニングを行わないことが明示的に保証され、ZDR をオプションとして利用できます。API 統合ではなく、管理されたワークスペースを希望する事務所に適した、上記の構成を実現する方法の一つです。Claude Enterprise は選択肢の一つであり、唯一の方法ではありません。
- Claude Pro/Max(コンシューマー向け):Anthropic はデフォルトでコンシューマー向けチャットのデータをトレーニングに使用せず、安全性のための人間によるレビューも限定的です。秘匿特権対象ではないデータを使った試用には適しています。クライアントの案件データを扱う際に、ゼロデータ保持の導入に代わるものではありません。
事務所でこのコネクターを導入する場合は、ゼロデータ保持の構成(組織レベルで ZDR を適用した Anthropic API、または ZDR を適用した Claude Enterprise)と組み合わせてください。個人の弁護士が個人的なデータや秘匿特権対象ではないデータで試す場合、テスト段階では Claude Pro を使うのが妥当ですが、クライアント案件の長期的な運用環境にすべきではありません。
モデル選択に関する注意点が一つあります。デフォルトの保持条件はモデルによって異なります。最新かつ最も高性能なモデルでは、データの保持やオプトインレビューが必要になることがあります。そのため、使用するモデルを意図的に固定し、ベンダーがリリースするたびに保持条件を再確認してください。
アクセスと保持:多くの評価で見落とされる違い
よくある思い込みに、「アクセスの記録があればコンプライアンスを満たせる」というものがあります。つまり、何にアクセスしたかの記録があれば事務所は保護される、という考えです。これは別々の二つの事柄を混同しており、その隔たりの中で秘匿特権対象の内容が露出します。
- 保持とは、リクエスト後にデータがどうなるかを指します。回答が返された後、データがトレーニングセット、ベンダーのログ、その他のシステムに残るかどうかということです。
- アクセスとは、回答を生成するために、処理中に一時的にであっても、モデルが案件の内容をそもそも見たかどうかを指します。
秘匿特権対象の案件内容については、**アクセスそのものが露出です。**秘匿特権対象の内容が会話に入った時点で、その後何も保持されるかどうかにかかわらず、モデルはそれを処理しています。保持もトレーニングも行わないという保証は、その後のデータの扱いを制限するものです。モデルが内容を見たという事実を取り消すものではなく、事務所の監査ログに記録されるのはアクセスがあったことだけで、それが許可されたかどうかではありません。
このため、秘匿特権対象の業務ではプラン選択が必須です。**秘匿特権対象の案件内容に触れる場合、明確な答えとなるのはゼロデータ保持だけです。**Anthropic API の組織レベルで取得する場合でも、Claude Enterprise を通じて取得する場合でも同じです。コンシューマー向けではなく、契約上トレーニングも保持も行わない条件で内容が処理される構成だからです。案件が秘匿特権対象で、ZDR 構成(または後述のローカルモデル)を利用していない場合、その内容は、事務所が精査していない条件のもとで露出したものと考えてください。
このコネクター自体が保持しないという方針(暗号化されたトークン以外は何も保存しません)が適用されるのは、通信レイヤーのみです。会話に内容が入った後で、モデルのプランがその内容をどう扱うかについては何も保証しません。これがこのセクションで取り上げる二つ目の問いであり、秘匿特権対象のデータが Claude に届く前に、事務所が答えなければならない問いです。
サプライチェーンの信頼性(npm パッケージ)
コネクターは npm で @oktopeak/clio-mcp として公開されています。ほかのすべての npm パッケージと同様に、公開済みのバージョンはメンテナーがいつでも更新できます。通常のセキュリティ対策を適用してください。
- 本番環境ではバージョンを固定してください。
^2.0.0のような範囲指定ではなく、@oktopeak/[email protected](package.jsonに記載されている現在のリリース)のような厳密なバージョンを使用してください。アップグレード前に監査してください。 - 差分を確認してください。 各リリースは GitHub 上のタグ付きコミットです。全社展開に新しいバージョンを取り込む前に、変更内容を確認してください。
- ソースからビルドしてください。 必要に応じて、リポジトリをクローンし、コードを監査して、独自にビルドした成果物から実行してください。npm での配布版に限定される機能はありません。
- メンテナー。 公開元は Oktopeak です。コミットと npm の公開者アカウントを一般公開しているチームであり、匿名ではありません。セキュリティに関する報告は
[email protected]で受け付けています。
暗号化されるもの、されないもの
よくある誤解を未然に防ぐため、説明します。
- OAuth トークン(Clio のアクセス・トークンとリフレッシュ・トークン)は、
~/.clio-mcp/tokens.enc内で AES-256-GCM によって保存時に暗号化されます。暗号化キーがなければ読み取ることはできません。 - 暗号化キー自体は初回実行時に自動生成され、OS のキーチェーン(macOS Keychain、Windows Credential Manager、または Linux Secret Service)に保存されます。平文でファイルシステムに書き込まれることはありません。キーチェーンを利用できない CI/ヘッドレス環境では、環境変数に 64 文字の 16 進文字列として
ENCRYPTION_KEYを設定することで、この動作を上書きできます。 - 監査ログのエントリー(
~/.clio-mcp/audit.log)は暗号化されません。含まれるのはメタデータ(タイムスタンプ、ツール名、秘密情報をマスキングしたパラメーター)であり、Clio のコンテンツではありません。 - エクスポートフォルダーは、
exportによって書き出されますが、コネクターでは暗号化されません。checkpoint/内のクライアント名を含む Clio のデータが平文で保存されます。暗号化されたディスクに保管してください。
ローカルモデルでの実行(サードパーティの処理事業者なし)
United States v. Heppner における SDNY の判決(2026 年 2 月)で、コンシューマー向け Claude は弁護士・依頼者間秘匿特権によって保護されないと判断されたことを受け、サードパーティの AI 処理事業者を一切介さず、モデルの推論をすべて事務所内のハードウェアで実行する構成を求める事務所もあります。
このコネクターは、追加設定なしでその構成に対応しています。MCP はプロトコルであり、Claude 専用の機能ではありません。Claude Desktop と連携する同じコネクターを、次の環境でも利用できます。
- ローカルで Llama 4 70B/DeepSeek V4/Mistral Large を実行する LM Studio(推奨される主な方法)
- Continue.dev + Ollama + ブリッジ(
mcphostまたはollama-mcp-bridge) - その他の MCP 互換クライアント
完全なデプロイガイドと設定例は docs/privilege-stack/ にあります。戦略的な背景(Claude Enterprise より優れている場面、ハードウェア仕様、検証手順)については、Privilege Stack のブログ記事をご覧ください。
できること
接続すると、Claude に次のようなことを尋ねられます。
案件
- 「Acme Corp のオープン中の案件をすべて表示してください」
- 「案件 2024-0042 の状況はどうなっていますか?」
- 「前四半期の未処理案件を一覧表示してください」
- 「Acme Corp の新しい案件を作成してください。分野は訴訟、担当弁護士は John Smith です」
連絡先
- 「Jane Smith の連絡先情報を検索してください」
- 「クライアント ID 8821 のメールアドレスと電話番号は何ですか?」
- 「'Acme' に一致する連絡先をすべて表示し、続きがあれば次のページも取得してください」
ドキュメント
- 「案件 4821 のすべてのドキュメントを一覧表示してください」
- 「ドキュメント 9934 のダウンロードリンクを取得してください」
- 「すべての案件から 'retainer' という名前のドキュメントをすべて検索してください」
タスク
- 「案件 4821 で今週期限を迎えるタスクは何ですか?」
- 「優先度が高く、未完了のタスクをすべて表示してください」
- 「案件 4821 に、金曜日までに申し立て書を提出するタスクを作成してください。優先度は高です」
メモ
- 「案件 4821 にメモを追加してください。初回相談完了、クライアントは委任契約を確認済み」
- 「この案件に、今日のクライアントとの通話内容を要約したメモを作成してください」
カレンダー
- 「4月28日から5月2日までの予定を教えてください」
- 「来週のカレンダー項目をすべて一覧表示してください」
- 「利用可能なカレンダーを表示してください」
- 「案件 4821 の裁判期日を6月10日午前9時に追加してください」
時間記録
- 「今月、案件 4821 に何時間記録されていますか?」
- 「4月1日から4月30日までの時間記録をすべて表示してください」
請求
- 「案件 4821 の未払い残高はいくらですか?」
- 「この案件の最終請求書はいつ発行されましたか?」
ユーザー
- 「事務所の弁護士をすべて一覧表示してください」
- 「Jane Smith のユーザー ID は何ですか?」
- 「スタッフをすべて表示してください」
コネクターはリクエストごとに Clio からライブデータを取得します。AI によるキャッシュや保存は一切ありません。
要件
始める前に、以下が揃っていることを確認してください。
- Node.js 20 以降:nodejs.org/en/download
- Claude Desktop:claude.ai/download
- 開発者アプリケーションを作成する権限がある Clio アカウント(不明な場合は Clio 管理者に確認してください)
セットアップ
5つの手順です。初回は10~15分かかります。 Clio Developer App を登録し、Claude Desktop の設定に JSON ブロックを1つ追加して、OAuth ログインを実行します。暗号化キーは自動生成されるため、手動でキーを扱う必要はありません。
本番環境で実行する前に、上記のコンプライアンスとセキュリティおよび信頼モデルのセクションをお読みください。事務所向けにデプロイする場合は、ゼロデータ保持設定(組織レベルで ZDR を有効にした Anthropic API、または Claude Enterprise)と組み合わせてコネクターを使用してください。上記の「どの Claude プランを使うべきですか?」を参照してください。
手順 1:クローンしてビルドする
ターミナルを開き、次を実行します。
git clone https://github.com/oktopeak/clio-mcp.git
cd clio-mcp
npm install
npm run build
クローンしたフォルダーのフルパスを控えてください。手順 3 で必要になります。
# On Mac/Linux, print the full path:
pwd
# Example output: /Users/yourname/clio-mcp
手順 2:Clio API アプリケーションを作成する
- developers.clio.com にアクセスし、Clio のログイン情報でサインインします
- Developer Apps → Add をクリックします
- 名前を付けます(例:Claude Connector)
- リダイレクト URI を次のとおり正確に設定します:
http://127.0.0.1:5678/callback - アプリケーションを保存します
- Client ID と Client Secret をコピーします。次の手順で必要になります
手順 3:Claude Desktop を設定する
v2.0.0 以降、コネクターは2種類のトランスポートに対応しています。stdio(コネクターを Claude Desktop の子プロセスとして実行し、単一ユーザーで使用)と HTTP/SSE(コネクターをスタンドアロンサーバーとして実行し、複数のセッションとリモートアクセスに対応)です。いずれかを選んでください。
Claude Desktop の設定ファイルを開きます。
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
オプション A:stdio(最もシンプル、単一ユーザー)
以下のブロックを"mcpServers"セクション内に追加し、プレースホルダーの値を独自の値に置き換えます。
{
"mcpServers": {
"clio": {
"command": "node",
"args": ["/FULL/PATH/TO/clio-mcp/build/index.js"],
"env": {
"TRANSPORT": "stdio",
"CLIO_CLIENT_ID": "your_client_id",
"CLIO_CLIENT_SECRET": "your_client_secret"
}
}
}
}
/FULL/PATH/TO/clio-mcpを、ステップ1でメモしたパス(例:/Users/yourname/clio-mcp)に置き換えます。コネクターはv2.0.0ではデフォルトでHTTPモードになるため、TRANSPORT=stdioが必要です。
オプション B:HTTP/SSE(スタンドアロンサーバー、複数セッション)
コネクターを長時間稼働するサーバーとして起動します。HTTPモードではAPIキーが必要です。MCP_API_KEYに24文字以上のシークレットが設定されていないと、サーバーは起動しません。まずAPIキーを生成してから、サーバーを起動します。ターミナルでclio-mcpディレクトリに移動し、次を実行します。
# Generate a key once and keep it somewhere safe
openssl rand -hex 32
TRANSPORT=http MCP_BASE_URL=http://127.0.0.1:3000 MCP_API_KEY=<the key you generated> \
CLIO_CLIENT_ID=your_client_id CLIO_CLIENT_SECRET=your_client_secret \
node build/index.js
次に、mcp-remoteブリッジを介してClaude Desktopから接続し、同じキーをベアラートークンとして渡します。(Claude Desktopはargs内のスペースを確実に処理できないため、mcp-remoteでは${AUTH_HEADER}形式が推奨されています。)
{
"mcpServers": {
"clio": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://127.0.0.1:3000/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer <the key you generated>" }
}
}
}
MCP サーバーに到達するすべてのルートは、キーがない場合に401 Unauthorizedを返します。/mcpへのすべてのメソッド(POST、GET/SSEストリーム、DELETE)と、不明なパスが対象です。Clioのブラウザーリダイレクトではベアラートークンを渡せないため、キーなしでアクセスできるのは/healthとOAuthリダイレクト先の/oauth/callbackのみです。
**ローカル開発専用:**自身のマシンでキーなしにHTTPサーバーを実行する必要がある場合は、MCP_ALLOW_UNAUTHENTICATED=trueを設定します。サーバーは目立つ警告を出して起動し、すべてのルートが開放されます。公開ホストや、他の人がポートにアクセスできる場所では絶対に使用しないでください。エンドポイントにアクセスできる人なら誰でも、あなたのClioアクセス権を使ってコネクターを操作できます。
オプション C — Clio App Directory経由のワンクリック
Clio App Directory経由でインストールした場合、開発者アプリケーションの登録も、CLIO_CLIENT_SECRETの管理も不要です。インストーラーが設定します。生成される設定では、CLIO_CLIENT_ID/CLIO_CLIENT_SECRETの代わりにTOKEN_BROKER_URLを使用します。
{
"mcpServers": {
"clio": {
"command": "node",
"args": ["/FULL/PATH/TO/clio-mcp/build/index.js"],
"env": {
"TRANSPORT": "stdio",
"TOKEN_BROKER_URL": "https://broker.oktopeak.com"
}
}
}
}
データフローにおけるこの変更については、上記のリスト掲載/ワンクリックインストール版(App Directory)を参照してください。
ファイルにほかのMCP サーバーがすでに設定されている場合は、最後の項目の後にコンマを追加してから、"clio"ブロックを追加します。
Clio EU、Australia、またはCanadaをお使いですか?CLIO_REGIONをeu、au、またはcaに設定します(デフォルトはusです)。Clioはアカウント作成時にリージョンを割り当てます。この値は、事務所がログインするClioサーバーと一致している必要があります。app.clio.com(us)、eu.app.clio.com(eu)、au.app.clio.com(au)、またはca.app.clio.com(ca)です。Clioにログインした後、ブラウザーのホスト名を確認するか、不明な場合はClioサポートにお問い合わせください。全一覧については、以下のClioのリージョンを参照してください。
ステップ4:Claude Desktopを再起動する
Claude Desktopを完全に終了してから、再度開きます。
ヒント
**Windowsをお使いですか?**MyCase MCPのインストールで発生したWindows固有の注意点は、Clio MCPでも同様に発生します。具体的には、(npxを直接実行したときの)
Could not attach to MCP server、(企業向けウイルス対策ソフトのSSL検査による)UNABLE_TO_VERIFY_LEAF_SIGNATURE、OAuthリダイレクトのポート不一致です。修正方法(cmd /c npxラッパー、NODE_OPTIONS=--use-system-ca、ポートの一致)は、関連するインストールガイドに記載されています。→ WindowsでのMyCase MCP:待ち望んでいたインストールガイド。MyCase MCP向けに作成されたガイドですが、Windows向けの修正方法はClio MCPにもそのまま適用できます。
ステップ 5:Clio で認証する
新しい Claude の会話で、次のように入力します。
authenticate with Clio
Claude によってブラウザーが開き、Clio のログインページが表示されます。通常どおりログインしてください。「Authentication successful」と表示されたら、Claude に戻ります。接続完了です。
すべて正常に動作していることを確認するには、次のように入力します。
check my Clio auth status
Clio のユーザー ID とトークンの有効期限が表示されます。
ヒント
設定ファイルを編集する担当者ではありませんか?
上記の 5 つの手順が大変そうであれば、お客様の法律事務所への導入を当社にお任せください。範囲を限定した OAuth 認証情報、既存のシステムに組み込んだ監査ログ、チームと設計するカスタムワークフロー 1 つ、トレーニングをご提供します。多くの法律事務所にとって、こちらのほうが迅速な方法です。
→ 法律事務所全体でのご利用ですか?Firm Plan:月額 $300。 お客様ご自身のクラウドにセットアップし、すべての弁護士がそれぞれのログイン情報でサインインできます。監査ログは 1 つ、毎月カスタム自動化を 1 つ構築します。セットアップ料金は不要で、いつでも解約できます。→ oktopeak.com/firm-plan/、または30 分の導入相談を予約
利用可能なツール
Claude は質問に応じてこれらのツールを自動的に選択して呼び出します。名前を指定して呼び出す必要はありません。
認証(3 個のツール)
| ツール | 機能 |
|---|---|
authenticate | ブラウザーで Clio のログインページを開き、認証情報を安全に保存します |
auth_status | 現在認証済みかどうかと、セッションの有効期限を表示します |
logout | このマシンに保存されている認証情報を消去します |
案件(4 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_matters | status(open/pending/closed)、limit、page_token | 任意のステータスフィルターを指定して案件を一覧表示します。カスタムフィールドの値も含みます。total_count、has_more、next_page_token を含むページ分割されたエンベロープを返します |
get_matter | matter_id | 特定の案件の詳細情報を返します。Maildrop 転送先アドレスとカスタムフィールドの値も含みます |
create_matter | client_id、description、status、open_date、practice_area_id、billable、responsible_attorney_id、originating_attorney_id、client_reference、custom_field_values | 新しい案件を作成します。ステータスの既定値は Open、請求可能の既定値は true です |
update_matter | matter_id と create_matter の任意のフィールド | ステージやカスタムフィールドの値を含め、既存の案件の 1 つ以上のフィールドを更新します |
カスタムフィールド(2 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_custom_fields | parent_type(Matter/Contact)、include_deleted | アカウントのカスタムフィールド定義を型とともに一覧表示します。選択肢リスト型の場合は、使用可能な選択肢も表示します。カスタムフィールドを読み取る前または書き込む前に呼び出してください |
create_custom_field | name、parent_type(Matter/Contact)、field_type、required、displayed、picklist_options | 新しいカスタムフィールド定義を作成します。返された id を custom_field_id として create_matter / update_matter に渡し、その値を設定します |
案件ステージ(1 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_matter_stages | practice_area_id | アカウントの案件ステージ(Pre-Suit、Discovery、Settlement など)を、業務分野ごとにグループ化し、パイプラインの順序で一覧表示します。matter_stage_id を設定する前に呼び出してください。Clio ではワークフローとタスクリストをステージに関連付けられますが、API によるステージ変更でそれらが実行されるかは確認されていません。そのため、依存する前に 1 件の案件で確認してください |
連絡先(2 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
search_contacts | query、limit、page_token | 名前、メールアドレス、会社名で連絡先を検索します。total_count、has_more、next_page_token を含むページネーション形式のデータを返します。次のページを取得するには、トークンを渡します |
get_contact | contact_id | 特定の連絡先の全メールアドレス、電話番号、住所、カスタムフィールドの値など、詳細情報を返します |
関係者(1 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_matter_relationships | matter_id、limit、page_token | 案件に紐づく連絡先と、それぞれの役割(共同弁護士、専門家、事実証人、相手方弁護士)を一覧表示します |
ドキュメント(3 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_documents | matter_id、parent_id、query、limit、page_token | ドキュメントの一覧表示または全文検索を行います。matter_id、parent_id、query のいずれか 1 つ以上が必須です。total_count、has_more、next_page_token を含むページネーション形式のデータを返します |
get_document | document_id | ドキュメントのメタデータと直接ダウンロード URL を返します |
upload_document | file_path、matter_id、name、content_type | Clio のマルチパート S3 アップロードフローを使用して、ローカルファイルを案件にアップロードします |
フォルダー(3 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_folders | matter_id、parent_id、query、limit、page_token | フォルダーの一覧表示または全文検索を行います。matter_id、parent_id、query のいずれか 1 つ以上が必須です。total_count、has_more、next_page_token を含むページネーション形式のデータを返します |
folder_exists | matter_id または parent_folder_id、name | 指定した名前と完全に一致するフォルダーがすでに存在するか確認します。すべてのページを取得し、親タイプによるフィルタリングに依存しないため、案件のドキュメントルート自体が Folder ノードである場合もフォルダーを見落としません |
create_folder | name、matter_id または parent_folder_id、if_not_exists | 案件のドキュメントルート、または既存のフォルダー内にフォルダーを作成します。重複を避けるため、先に folder_exists を呼び出してください |
タスク(4 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_tasks | matter_id、status(Pending/Complete/In Progress/In Review/Draft)、due_date_start、due_date_end、limit | 任意のフィルターを指定してタスクを一覧表示します |
create_task | matter_id、name、description、priority(High/Normal/Low)、due_date、assignee_id | 案件にタスクを作成します。優先度のデフォルトは Normal です |
update_task | task_id、name、description、priority、due_date、status、assignee_id | 既存のタスクの 1 つ以上のフィールドを更新します |
complete_task | task_id | タスクを完了としてマークします |
カレンダー(3 ツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_calendars | なし | ユーザーが書き込み可能なカレンダーを一覧表示します。エントリーの作成時に、返された id を calendar_owner_id として使用します |
list_calendar_entries | from、to、limit、page_token | 日付範囲内のカレンダーエントリーを一覧表示します(YYYY-MM-DD または YYYY-MM-DDTHH:MM)。total_count、has_more、next_page_token を含むページネーション形式のデータを返します |
create_calendar_entry | summary、start_at、end_at、calendar_owner_id、description、all_day、matter_id、location、send_email_notification、attendee_ids | カレンダーエントリー(審理、期限、会議)を作成します。start_at/end_at には日付または日時を指定できます |
時間記録と経費(4 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_time_entries | matter_id、start_date、end_date、limit、page_token | オプションのフィルターを使って請求対象の時間記録を一覧表示します。total_count、has_more、next_page_token を含むページネーション付きのエンベロープを返します |
list_expenses | matter_id、user_id、start_date、end_date、expense_type、limit、page_token | 経費を一覧表示します(既定は ExpenseEntry。リクエストに応じて HardCostEntry/SoftCostEntry)。金額、数量、カテゴリを含み、同じページネーション付きのエンベロープを返します |
log_time_entry | matter_id、date、quantity_in_hours、note、price、non_billable、no_charge、activity_description_id、user_id | 案件に請求対象(または請求対象外)の時間記録を新規作成します |
create_activity | type、date、matter_id、note、quantity_in_hours、price、non_billable、no_charge、activity_description_id、user_id、reference、tax_setting | Clio の任意のアクティビティタイプ(TimeEntry、ExpenseEntry、HardCostEntry、SoftCostEntry)を作成します |
請求(1 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
get_billing_summary | matter_id | 案件の請求総額、未払い残高、最終請求書の日付を返します |
ノート(2 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
create_note | matter_id、subject、body | 案件にノートを作成します。Clio の案件タイムラインに表示されます |
list_notes | matter_id または contact_id、created_since、updated_since、limit、page_token | 件名、作成者、ノート自体の日付、プレーンテキスト形式の本文を含むノートを一覧表示します(リッチテキストのマークアップは detail_html に保持されます) |
レポート(1 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
matter_activity_summary | lookback_days、calendar_days_ahead、practice_area_id、stale_after_days、limit | すべてのオープン案件について、最後のノート、最後の時間記録、次のカレンダー項目、未完了のタスク数、最後のアクティビティからの日数を 1 回の呼び出しで返します。アクティビティの少ない案件から順に表示します。アカウント全体で各コレクションを 1 回ずつ読み取るため、対象データの規模が増えてもコストは増加しません |
ユーザー(2 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
list_users | name、subscription_type(attorney/nonattorney)、enabled、limit、page_token | 事務所のユーザーを ID とともに一覧表示します。total_count、has_more、next_page_token を含むページネーション付きのエンベロープを返します |
get_user | user_id | ID を指定して、単一ユーザーの詳細を返します |
監査ログ(1 個のツール)
| ツール | 入力 | 機能 |
|---|---|---|
export_audit_log | date_from、date_to、matter_id、limit、offset | 弁護士資格審査および ABA Opinion 512 への準拠のため、監査ログのエントリをエクスポートします。日付範囲と案件で絞り込みでき、ページネーションに対応しています(1 ページあたりの既定値は 500 件、最大 1000 件) |
アカウント全体をエクスポートする
同じパッケージを使って、Clio のすべてのデータを自分のコンピューターにコピーできます。すべての案件、連絡先、ノート、タスク、カレンダー項目、時間記録、経費、請求書をデータファイルとして、またすべてのドキュメントをパラリーガルが閲覧しやすいフォルダーツリー内のファイルとして保存します。バックアップや、解約前の保存にご利用ください。Clio からデータを読み取るだけで、Clio に書き戻すことはありません。
npx @oktopeak/clio-mcp auth
npx @oktopeak/clio-mcp export --out ./clio-export
auth はブラウザーを開き、ログイン情報を保存して、ログインしたユーザーとトークンの有効期限を表示します。export はブラウザーを開きません。ログイン情報が保存されていない場合は、「run auth first」と表示して終了します。どちらのコマンドにも、コネクターと同じ環境変数(CLIO_CLIENT_ID、CLIO_CLIENT_SECRET、および us 以外のリージョンを使用している場合は CLIO_REGION)と、Node.js 20 以降が必要です。npx では読み込む .env ファイルがないため、シェルで設定してください。
# macOS / Linux
export CLIO_CLIENT_ID=your_client_id CLIO_CLIENT_SECRET=your_client_secret CLIO_REGION=eu
# Windows PowerShell
$env:CLIO_CLIENT_ID = "your_client_id"
$env:CLIO_CLIENT_SECRET = Read-Host "Clio client secret"
$env:CLIO_REGION = "eu"
解約前にエクスポートしてください。まず --dry-run を実行してください。レコードとドキュメントの件数を数え、実際の実行に必要な時間とディスク容量の見積もりを記載した REPORT.md を書き出します。
オプション
| オプション | 説明 |
|---|---|
--out <folder> | 必須です。フォルダーは空であるか、以前のエクスポートで使用したものである必要があります。 |
--since <date> | Clio が対応している場合、この日付以降に変更されたレコードのみを対象にします(下記参照)。 |
--only <list> | レコードタイプをコンマ区切りで指定します。例:matters,folders,documents。document_versions は documents と一緒に指定する必要があります。 |
--no-documents | ドキュメントとドキュメントファイルをスキップします。 |
--rate <n> | 1 秒あたりのリクエスト数です。デフォルトは 0.8、上限は 10 です。Clio では 1 分あたり約 50 件のリクエストが許可されるため、約 0.8 を超える値を指定すると Clio によってスロットリングされます。 |
--concurrency <n> | 並列ダウンロード数です。デフォルトは 3、上限は 8 です。 |
--resume | 同じフォルダーで前回の実行を続行します。 |
--dry-run | 件数のみをカウントします。フォルダーには REPORT.md のみを書き込みます。 |
--help | オプションを表示します。 |
レコードタイプ:matters、contacts、users、practice_areas、custom_fields、matter_stages、relationships、tasks、calendar_entries、notes、time_entries、expenses、bills、folders、documents。--only で指定した場合のみ対象となるタイプ:document_versions、communications、allocations、trust_line_items、bank_transactions。Clio が対応を拒否するオプションのタイプは、エラーではなく「利用不可」として報告されます。
出力内容
clio-export/
data/<type>.jsonl raw records, one per line
data/<type>.csv the same records for Excel
matters/<number> - <client>/ documents, mirroring the Clio folder structure
checkpoint/ where the export saves its place
manifest.json
errors.jsonl failures: record type, status code and kind only
REPORT.md what was exported, what was not, and why
ドキュメントファイルの名前は <original name> [<document id>].<extension> となり、Windows で扱えるように、使用禁止文字、予約名、長すぎるパスがないよう調整されます。元の名前とフォルダーパスは data/documents.csv に記載されます。各ドキュメントの最新バージョンがダウンロードされ、そのバージョン ID はデータに含まれます。--only document_versions を指定すると、バージョン履歴もデータとして保存されます。
Windows で保存できない名前(CON などの予約名、末尾のドットやスペース、使用禁止文字)もエクスポート時に処理されます。CON.txt は _CON [id].txt になります。EU のテストアカウントでの実環境テストでは、末尾がドットのファイル名は Clio にアップロードを拒否されたため、そのような名前のドキュメントはエクスポートに含まれないはずです。
空のフォルダーは folders.jsonl に記載されますが、ディスク上には作成されません。フォルダーツリーには、ドキュメントを含むフォルダーのみが表示されます。
CSV ファイルは Excel で正しく開けます。=、+、-、@ で始まるテキストには、Excel が数式として実行しないよう、CSV 内で先頭にアポストロフィが付加されます。数値は変更されず、.jsonl ファイルには常に正確な値が格納されます。
含まれないもの
- 元帳レポート(信託元帳、クライアント元帳、請求履歴、売掛金、仕掛品)。
--only ledger_reportsを指定すると、その旨が示され、何もエクスポートされません。 - Clio が表示する形式の請求書 PDF。請求書はデータとしてエクスポートされます。
- 元のメールファイル。
- どの案件にも属さないドキュメント。エクスポートでは、ドキュメント数をアカウントの合計数と比較し、対象外となった件数を
REPORT.mdに記載します。確認できなかった場合に、完全なエクスポートであるとは決して主張しません。 - Clio が返却を拒否するアカウントのカスタムフィールド。エクスポートはそれらを含めずに続行し、その旨を
REPORT.mdに記載します。読み取り不能な必須タイプがある実行は、INCOMPLETE として報告されます。この場合は、Clio 開発者アプリの権限を確認してください(トラブルシューティングを参照)。
既知の制限事項:経費は Clio のアクティビティタイプ(ExpenseEntry、HardCostEntry、SoftCostEntry)ごとに読み込まれ、各行にはそのタイプが含まれます。Clio がハードコストとソフトコストのエントリーを ExpenseEntry にも含めて一覧表示する場合、それらの行は data/expenses.* に重複して現れます。これまでこの現象は確認されていません。テストしたアカウントには、ハードコストまたはソフトコストのエントリーがありません。行は id で区別できます。
テスト済み:Clio EU アカウントで実環境のエクスポートを実行し、5 MB のドキュメント、アクセント記号・連続するスペース・特殊文字を含む名前、更新実行(ファイルの再ダウンロード 0 件)、および中断後の再開を確認しました。
所要時間
Clio では、営業時間中、トークンあたり毎分約50件のリクエストが許可されています。既定値の毎秒0.8件は毎分48件なので、この上限を下回ります。200件のレコードを含む各ページでリクエストが1件必要で、各ドキュメントには少なくとも追加で1件必要です。また、フォルダーツリーと各案件のドキュメントにも、それぞれリクエストが1件必要です。そのため、ドキュメントが100,000件ある法律事務所では、完了まで丸一日以上かかります。大規模な法律事務所では、金曜日にエクスポートを開始し、週末の間に実行させることをおすすめします。--dry-run を実行すると、アカウントで必要なリクエスト数と所要時間が REPORT.md に書き込まれます。ドライラン自体でも各案件を確認する必要があり、案件あたり約1.3件のリクエストが発生するため、毎秒0.8件の場合、400件の案件でおよそ10分かかります。Clio のストレージリンクからのダウンロードは、上限の対象外です。
停止、再開、再実行
エクスポートは、各ページの処理後に進捗状況を保存します。Ctrl-C を押す(またはプロセスを終了する)と、同じコマンドを --resume を付けて実行すれば、中断した箇所から重複行なしで再開できます。Ctrl-C で終了すると、終了コードは4になります。ダウンロードが途中までのファイルは破棄され、再取得されます。ファイルは、ダウンロードが完了するまで最終的なファイル名では保存されません。
案件の一覧は開始時に一度だけ作成され、再開時には作り直されません。Clio で初回実行後に作成された案件を取得するには、--resume を付けずに再実行してください。この2回目の実行は更新処理です。データファイルを最初から作り直し、サイズとバージョンが同じで、すでにディスク上にあるドキュメントはスキップします。案件名が変更されている場合はドキュメントを移動し、何も削除しません。Clio で削除されたファイルはディスク上に残り、REPORT.md では孤立ファイルとして数えられます。
長時間の実行中にログインの有効期限が切れると、エクスポートは進捗状況を保存して終了コード3で終了します。再度 auth を実行し、同じコマンドを --resume を付けて実行してください。
--since の使用
2026-03-10 のような日付は、その日の UTC 00:00:00 から1日差し引いた日時として解釈されます。そのため、レコードを取りこぼすより、少し多めに含めるフィルターになります。オフセット付きの完全な ISO 日時(2026-03-10T09:00:00+02:00)は、指定されたとおりに使用されます。このフィルターは、Clio が updated_since をサポートするレコードタイプに適用されます。それ以外のレコードはすべてエクスポートされ、その一覧が REPORT.md に記載されます。ドキュメントのパスにはフォルダーツリーが必要なため、フォルダーは常にすべてエクスポートされます。ドキュメントは、変更された案件だけでなく、すべての案件について確認されます。カレンダーのエントリーは、指定日(--since を指定しない場合は1990年)の年から、年ごとに取得されます。そのため、その年より前に開始するエントリーは含まれません。
終了コード
| コード | 意味 |
|---|---|
| 0 | 完了 |
| 1 | エラーありで完了、またはレポートに INCOMPLETE と記載 |
| 2 | 使用方法が不正、または --resume が拒否された(オプションまたはアカウントが異なる、あるいは保存済みのインデックスが変更された) |
| 3 | 未ログイン、またはログインの有効期限切れ |
| 4 | 中断。--resume で再開可能 |
| 5 | 致命的エラー |
プライバシーと安全性
- エクスポートが Clio に書き込みを行うことはありません。また、Clio のログイン情報は Clio API にのみ送信され、ドキュメントのダウンロード先として Clio がリダイレクトするストレージリンクには送信されません。
- ログ、進捗行、
errors.jsonl、監査エントリーに含まれるのは、レコードタイプ、ID、件数、ステータスコードのみです。名前、ドキュメントのタイトル、ファイルパス、クライアントの値は含まれません。エクスポートの監査エントリー(ソースexport)は、エクスポートフォルダーではなく、ホームフォルダー内の~/.clio-mcp/audit.logに書き込まれます。ドライランでも監査エントリーが書き込まれます。 - エクスポートフォルダーには、機密性の高い法律関連データが平文で保存されます。暗号化されたディスクに保存してください。
checkpoint/フォルダーにもクライアント名(案件インデックスと案件ごとのドキュメントレコード)が保存されるため、同様の保護が必要です。 - メモリ使用量は法律事務所の規模に応じて増加せず、一度に1ページ分だけです。ただし、例外としてフォルダーツリーがあり、ドキュメントのダウンロード中はフォルダー ID、親フォルダー、名前がメモリに保持されます。フォルダー1件あたりおよそ100バイトです。
--dry-runは空のフォルダーで実行してください。すでにエクスポートが保存されているフォルダーで実行すると、そのエクスポートのREPORT.mdが置き換えられます。
リソース
このコネクターは、MCP リソースも 2 つ公開します。互換性のあるクライアント(Claude Desktop を含む)がセッション開始時に自動的に表示できる、読み取り専用のコンテンツです。
| リソース URI | 内容 |
|---|---|
clio://compliance/notice | ABA Opinion 512、監査ログ、AI 生成コンテンツに対する弁護士の確認要件についてまとめた、1 段落のコンプライアンスに関する注意書き |
clio://auth/status | 認証の現在の状態:接続状況、Clio ユーザー ID、トークンの有効期限までの分数 |
設定リファレンス
すべての設定は環境変数として渡します(stdio モードでは Claude Desktop の設定に、HTTP モードではサーバーの環境に設定します)。すべてのモードで必要なのは CLIO_CLIENT_ID と CLIO_CLIENT_SECRET のみです。HTTP モードでは、さらに MCP_BASE_URL と MCP_API_KEY が必要です。
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
CLIO_CLIENT_ID | はい(BYO アプリ) | — | Clio 開発者アプリのクライアント ID です。リスト掲載版では使用されず、必須でもありません。 |
CLIO_CLIENT_SECRET | はい(BYO アプリ) | — | Clio 開発者アプリのクライアントシークレットです。リスト掲載版では使用されず、必須でもありません。 |
TOKEN_BROKER_URL | はい(リスト掲載版のみ) | — | Oktopeak がホストするトークンブローカーの URL です。Clio App Directory 経由でインストールする場合は、CLIO_CLIENT_ID/CLIO_CLIENT_SECRET の代わりに設定してください。リスト掲載版/ワンクリックインストール版を参照してください。 |
TRANSPORT | いいえ | http | stdio または http です。v2.0.0 ではデフォルトで http です。v2 より前の動作にするには stdio を設定してください |
MCP_BASE_URL | HTTP モード | (なし) | このサーバーの公開ベース URL(例:http://127.0.0.1:3000)です。OAuth リダイレクトに使用します |
PORT | いいえ | 3000 | HTTP のリッスンポート(HTTP モードのみ) |
MCP_API_KEY | HTTP モード | (なし) | すべてのクライアントが Authorization ヘッダーで送信する必要があるベアラートークンです。HTTP モードで必須で、24 文字以上である必要があります。設定されていない場合、サーバーは起動しません。openssl rand -hex 32 で生成してください |
MCP_ALLOW_UNAUTHENTICATED | いいえ | false | ローカル開発専用です。true にすると、MCP_API_KEY がなくても HTTP サーバーが起動し、起動時に警告が表示されます。公開ホストでは決して設定しないでください |
ENCRYPTION_KEY | いいえ | 自動生成 | OS のキーチェーンを上書きします。キーチェーンが利用できない CI/ヘッドレス環境へのインストールでのみ必要です。64 文字の 16 進文字列である必要があります。 |
CLIO_REDIRECT_PORT | いいえ | 5678 | OAuth コールバック用のローカルポートです(stdio モード)。お使いのマシンで 5678 が使用中の場合は変更してください |
CLIO_REGION | いいえ | us | Clio のデータリージョンです:us、eu、au、または ca。デフォルトの Clio API URL と OAuth ベース URL を指定します。Clio アカウントの作成時に設定され、事務所がログインするサーバーと一致している必要があります。それ以外の値を指定すると、エラーで起動が停止します |
CLIO_API_BASE | いいえ | <region host>/api/v4 | API ベース URL の高度な上書き設定です。CLIO_REGION より優先されます |
CLIO_AUTH_URL | いいえ | <region host>/oauth/authorize | OAuth 認証エンドポイントの高度な上書き設定です |
CLIO_TOKEN_URL | いいえ | <region host>/oauth/token | OAuth トークンエンドポイントの高度な上書き設定です |
READ_ONLY | いいえ | false | true、1、または yes を指定すると、12 個の書き込みツールが登録されなくなり、Claude は Clio を読み取れても変更できなくなります。どちらのトランスポートでも動作します。読み取り専用モードを参照してください |
読み取り専用モード
READ_ONLY=true を設定すると、コネクターは12個の書き込みツール(create_matter、update_matter、create_custom_field、create_note、create_task、update_task、complete_task、create_calendar_entry、log_time_entry、create_activity、upload_document、create_folder)を登録しなくなります。これらのツールはClaudeのツール一覧に表示されず、いずれかを呼び出してもサーバーに拒否されるため、これはクライアント側のプロンプトではなく、サーバー側で保証されます。読み取りツール、認証ツール、監査ログのエクスポートは引き続き利用できます。これを設定しない場合、Claudeが書き込みを実行する前に制止するのは、MCPクライアントが表示する承認プロンプトだけです。これはクライアント側の機能であり、このコネクターの機能ではありません。
Claude Desktop では、ほかの変数の隣に追加してください。
"env": {
"CLIO_CLIENT_ID": "...",
"CLIO_CLIENT_SECRET": "...",
"TRANSPORT": "stdio",
"READ_ONLY": "true"
}
すべてのツールにはMCPアノテーション(readOnlyHint、destructiveHint、idempotentHint)も付与されているため、これらを尊重するクライアントでは、承認する前にどの呼び出しがデータを変更するかを確認できます。
Clio のリージョン
Clio は各法律事務所のデータを4つのリージョンのいずれかでホストします。リージョンはClioアカウントの作成時に決定され、コネクターから変更することはできません。法律事務所がログインするサーバーに合わせて(ログイン後にブラウザーのアドレスバーに表示されるホスト名)、CLIO_REGION を設定してください。この一覧にない値を指定すると、有効な値を示すエラーが発生し、起動時にコネクターが停止します。米国のエンドポイントに暗黙的にフォールバックすることはありません。
CLIO_REGION | Clio サーバー | API ベース URL | OAuth 認証 / トークン |
|---|---|---|---|
us(デフォルト) | app.clio.com | https://app.clio.com/api/v4 | https://app.clio.com/oauth/authorize、https://app.clio.com/oauth/token |
eu | eu.app.clio.com | https://eu.app.clio.com/api/v4 | https://eu.app.clio.com/oauth/authorize、https://eu.app.clio.com/oauth/token |
au | au.app.clio.com | https://au.app.clio.com/api/v4 | https://au.app.clio.com/oauth/authorize、https://au.app.clio.com/oauth/token |
ca | ca.app.clio.com | https://ca.app.clio.com/api/v4 | https://ca.app.clio.com/oauth/authorize、https://ca.app.clio.com/oauth/token |
監査ログのリファレンス
すべてのツール呼び出しは、JSONL 形式(1行につきJSONオブジェクト1つ)で ~/.clio-mcp/audit.log に記録されます。記録例:
{"timestamp":"2026-04-23T14:05:00.123Z","session_id":"3f2e9b1c-...","machine_ip":"192.168.1.42","tool":"get_matter","args":{"matter_id":4821},"outcome":"success","clio_user_id":"10023","matter_id":4821}
各記録には次の項目が含まれます。
| フィールド | 説明 |
|---|---|
timestamp | 呼び出しの日時(ISO 8601形式) |
session_id | セッションごとのUUID(stdioプロセスの実行中は固定、HTTPセッションごとに1つ) |
machine_ip | 呼び出しを記録したホストのLAN IPv4アドレス。stdioモードでのみ記録されます。コンテナ内ではアドレスが意味をなさないため、省略されます |
user_id | ホスティングサービスが複数の利用者向けにコネクターを実行している場合の呼び出し元の識別情報。stdioおよび単一キーのHTTPモードでは省略されます |
request_id | ホストのリクエストID。記録とリクエストログを照合するために使用します。ホストが設定した場合にのみ記録されます |
tool | Claudeが呼び出したツール |
args | Claudeが渡した引数。許可リストに基づいてフィルタリングされます(下記参照)。渡されたキーのうち、一覧にないものは "[redacted]" として表示されるため、送信内容を記録しつつ、その内容自体は含めません |
outcome | success、error、または not_found |
error_message | outcome が error の場合にのみ記録されます |
clio_user_id | 認証情報が有効だったClioユーザー |
matter_id | 事件に固有のクエリの場合に記録されます |
result_count | 一覧取得/エクスポートツールの場合に記録されます。返されたレコード数を示します |
エントリのエクスポート
export コマンドは、tool フィールドのソースを export として、独自のエントリを同じファイルに書き込みます。各レコードタイプにつき、フェーズごとに1件です(ドライランの場合は count、fetch、download)。記録されるのはレコードタイプ、フェーズ、件数のみで、ホームフォルダー内の ~/.clio-mcp/audit.log に書き込まれます。エクスポートフォルダーには書き込まれません。ドライランでもエントリが書き込まれ、"dry_run":true としてマークされます。
{"timestamp":"2026-10-19T12:00:00.000Z","session_id":"3f2e9b1c-...","tool":"export","args":{"type":"documents","phase":"download","pages":0,"files":120,"bytes":48211904,"since":"2026-03-09T00:00:00.000Z","dry_run":false},"outcome":"success","clio_user_id":"10023","result_count":120}
使用できるキーは type、phase、pages、files、bytes、since、dry_run です。案件の ID、名前、ドキュメントのタイトルやパスが記録されることは一切なく、テストでこれを検証しています。
ログに記録されない情報
引数は拒否リストではなく、許可リストに基づいてログに記録されます。各ツールでは、ID、上限、日付、ページトークン、列挙値、ブール値のみがそのまま記録され、それ以外の渡された引数はすべて "[redacted]" に置き換えられます。具体的には、連絡先の検索クエリ(search_contacts.query)、ドキュメントの検索クエリ(list_documents.query)、ノートの件名や本文、タスク名や説明、カレンダーの概要、説明や場所、案件の説明やクライアント参照情報、時間入力やアクティビティのノート、ファイルパスやファイル名、list_users の名前フィルターがログに記録されることはありません。完全なテーブルは src/utils/auditLog.ts の AUDIT_ARG_ALLOWLIST で確認できます。また、自由記述のキーが追加されるとテストが失敗します。シークレットを示す名前のキー(access_token、client_secret、password、token)は、ネストされたオブジェクト内も含め、すべてマスクされます。
ログファイルは追記専用で、このソフトウェアによってローテーションまたは切り詰められることはありません。古いエントリをアーカイブするには、お使いのオペレーティングシステムのログローテーションツール(Linux/Mac の logrotate)を使用してください。コネクターをライブラリとして組み込むホストは、configureAudit({ sink }) を通じてファイルを独自のストアに置き換えることができます。レコードの形式は同じです。
トラブルシューティング
Claude に Clio ツールが利用できないと言われる
Claude Desktop を完全に再起動してください(ウィンドウを閉じるだけでなく、終了してください)。問題が解決しない場合は、設定ファイルのパスが正しいことと、そのフォルダーに build/index.js が存在することを確認してください。
認証時にブラウザーが開くものの、その後何も起きない
Clio 開発者アプリケーションのリダイレクト URI が http://127.0.0.1:5678/callback と完全に一致するように設定されていることを確認してください。末尾のスラッシュは付けず、localhost ではなく 127.0.0.1 を指定する必要があります。
「ENCRYPTION_KEY must be 64 hex chars」エラー
このエラーは、環境変数に ENCRYPTION_KEY が設定されているものの、長さが正しくない場合に表示されます。値を修正するか、削除してください。削除した場合、コネクターは OS のキーチェーンに保存されているキーを使用します(初回実行時にはキーを生成します)。
「Token file exists but decryption failed」警告
この警告は、暗号化キーがトークンファイルの暗号化に使用されたキーと一致しなくなった場合に表示されます。たとえば、キーチェーンのエントリが削除された場合、別のマシンに切り替えた場合、または ENCRYPTION_KEY を変更した場合です。Claude で logout ツールを実行してから、再度 authenticate を実行し、現在のキーでトークンファイルを作り直してください。
ログアウトしてもキーチェーンのエントリが消えない
logout コマンドは保存されたトークンファイルを削除しますが、OS のキーチェーンから暗号化キーは削除しません。認証情報を完全に消去する場合(たとえば、マシンを譲渡するとき)は、システムのキーチェーン管理ツールを使用して clio-mcp / encryption-key エントリも削除してください。macOS では Keychain Access、Windows では Windows Credential Manager、Linux では secret-tool delete --label clio-mcp を使用します。
ポート 5678 がすでに使用されている
Claude Desktop の設定にある env ブロックに "CLIO_REDIRECT_PORT": "5679" を追加し、Clio アプリケーションのリダイレクト URI を http://127.0.0.1:5679/callback に更新してください。
list_custom_fieldsが403「User is forbidden from taking that action」を返す
一部の環境では、接続ユーザーがアカウント所有者で、トークンがほかのすべての機能で使えていても、カスタムフィールドの読み取りが拒否されます。この場合、/custom_fields.jsonは403を返し、案件や連絡先に展開されたカスタムフィールド値にはIDだけが含まれ、名前、タイプ、値は返されませんが、エラーも発生しません。2026年10月にEUアカウントでこの問題を再現し、適切な権限を持つClio開発者アプリを経由して接続することで解決しました。新しいアプリでは/custom_fields.jsonがフィールド定義とともに200を返し、案件の値も読み取れるようになりました。同じアプリではコミュニケーション、配分、銀行取引も拒否されていましたが、変更後は応答するようになりました。まず、Clio開発者ポータルでClio開発者アプリ(使用しているクライアントIDのアプリ)の権限を確認し、その後再接続してください(logoutの後にauthenticate)。問題がなければ、Clio管理者に接続ユーザーのカスタムフィールドへのアクセス権を確認してください。どちらでも説明がつかない場合は、Clioのリージョンと正確な応答を添えてissueを作成してください。
カスタムフィールドにidはあるが、name、type、valueがnullになる
今回はエラーが発生しないだけで、原因は同じです。アプリにカスタムフィールドの読み取り権限がない場合、Clioは展開された属性を通知なしに省略します。この場合、応答にはcustom_fields_warningが含まれます。これらのフィールドは空ではなく、未読として扱ってください。Clio上では空欄ではありません。exportコマンドでは、同じ状態がREPORT.mdにINCOMPLETEとして報告されます。
カスタムフィールドが空欄で表示されず、完全に消える
これは想定どおりの動作であり、バグではありません。update_matterのcustom_field_valuesでclear: trueを指定すると、値だけでなく値のレコード自体が削除されます。一度も設定されていないフィールドには、Clio(およびこのコネクター)から実際のIDとvalue: nullを持つ空のプレースホルダーが返されますが、明示的にクリアされたフィールドは、新しい値が設定されるまでレコードが存在しません。そのため、このコネクターの出力にもClioのUIにも表示されません。フィールドを空欄のまま表示したい場合は、クリアする代わりに空に相当する値を設定してください。
選択リストにdisplay_value: nullとlabel_unresolved: trueが表示される
コネクターが選択されたオプションの名前を特定できなかったため、内部オプションIDではなく何も表示しません。まず値とともにClioから送られるラベルを使い、それがなければフィールド定義を1回読み取って補完します。両方とも失敗する場合は、通常、上記と同じ権限の問題が原因です。
応答にfields_warningが含まれる
Clioがフィールド選択の一部を拒否したため、オプションの展開を省略してリクエストを再試行しました。応答は実際のものですが不完全であり、欠落しているフィールドがClio上でも空とは限りません。引用したメッセージを添えて報告してください。
コネクターだけでは足りませんか?
オープンソースのコネクターが対応するのは、多くの法律事務所が最終的に Claude + Clio で実現したいことの約20%です。データを読み取ることはできますが、そのデータを活用するワークフローは構築しません。
ご要望の範囲に応じて、2つの方法でご支援します。
→ 事務所全体向け:Firm Plan は月額$300です。 お客様ご自身のクラウドにセットアップし、各弁護士が個別のログインでサインインできます。監査ログは1つに集約され、毎月1件の自動化をお客様向けに構築します。セットアップ料金は不要で、いつでも解約できます。→ oktopeak.com/firm-plan/
→ Legal AI Integration:複数のワークフロー構築、文書の自動化、インテークの自動化、カスタム AI エージェント、およびお客様のシステム全体にわたるコンプライアンスアーキテクチャに対応します。 → oktopeak.com/services/legal-ai-integration/
初日から ABA Opinion 512 に準拠しています。このコネクターの動画デモと FAQ を含む、分かりやすい概要をご覧になりませんか? → oktopeak.com/clio-mcp/
まずは相談をご希望ですか?→ 30分のスコープ確認ミーティングを予約する
Oktopeak のその他のコネクター
他の業務管理プラットフォーム向けにも、同種のコネクターを提供しています。それぞれに oktopeak.com の紹介ページがあります。
- MyCase MCP:MyCase の法律事務所業務管理向けオープンソース MCP コネクターです。同じアーキテクチャ、同じ監査ログ、同じ保存データの暗号化を採用しています。MIT ライセンスです。ソース:github.com/oktopeak/mycase-mcp。npm:
@oktopeak/mycase-mcp - Filevine MCP:Filevine の業務管理向けオープンソース MCP コネクターです。案件、連絡先、メモ、文書、タスク、Collection セクションに対応しています。同じアーキテクチャ、同じ監査ログ、同じ保存データの暗号化を採用しています。MIT ライセンスです。ソース:github.com/oktopeak/filevine-mcp。npm:
@oktopeak/filevine-mcp - Lawmatics MCP:法律事務所向け CRM およびインテークサービス Lawmatics 用のオープンソース MCP コネクターです。設定レベルで読み取り専用モードにできます。MIT ライセンスです。ソース:github.com/oktopeak/lawmatics-mcp。npm:
@oktopeak/lawmatics-mcp - IntakeQ / PracticeQ MCP:IntakeQ/PracticeQ(医療/行動医療および関連医療の診療所)向けの HIPAA 対応 MCP コネクターです。PHI の読み取り/書き込みごとに監査ログを記録し、BAA と Zero-Data-Retention に関するガイダンスを提供します。MIT ライセンスです。npm:
@oktopeak/intakeq-mcp
このプロジェクトを支援する
このコネクターは無料で、MIT ライセンスのもと、Oktopeak が保守しています。今後も無料で提供します。寄付は受け付けていません。時間の節約に役立った場合、実際に助けになるのは次のことです。
- このリポジトリにスターを付けてください。 他の事務所に見つけてもらううえで、本当に役立ちます。
- Clio を利用している別の事務所に紹介してください。
- 直接お役に立てた場合は、レビューを投稿してください。
- 事務所向けの導入、拡張、保守が必要ですか?**商用サポート**をご利用ください。これが無料の取り組みを支えています。
私たちについて
Oktopeak:法律事務所と医療機関のデジタルトランスフォーメーション。
私たちは7人の社内プロダクトチームで、規制の厳しい業界向けに、AI 統合、ワークフローの自動化、クライアントが完全に所有できるカスタムソフトウェアなどの AI ソリューションを開発しています。オープンソースの MCP コネクターを5つ(Clio、MyCase、Filevine、Lawmatics、IntakeQ)保守し、適切に制限された認証情報、監査ログ、チームの実際の業務に合わせたワークフローを備えた状態で、実際の現場に導入しています。
- 🌐 oktopeak.com
- 📅 30分の通話を予約
- ✉️ [email protected](セキュリティに関する報告を歓迎します)
コネクターをライブラリとして使用する
2つのトランスポートが使用するすべての機能は @oktopeak/clio-mcp/lib からエクスポートされるため、サービスは同じ37個のツールを独自のサーバー内で実行できます。ログイン、トークンストア、監査ストアはそれぞれ独自のものを使用します。公開 npm パッケージとローカルインストールに変更はありません。これはホスティングサービスが基盤として利用する接続点です。
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import {
registerAllTools, runWithSessionContext, configureAudit,
buildClioAuthorizeUrl, exchangeClioCode, refreshClioTokens, fetchClioWhoAmI,
} from "@oktopeak/clio-mcp/lib";
// Once at startup: send audit entries to your store instead of ~/.clio-mcp/audit.log.
configureAudit({ sink: myAuditSink });
// Per request: register the tools you want to expose, then run the MCP request
// inside a session context that knows who the caller is and how to get a Clio token.
const server = new McpServer({ name: "my-host", version: "1.0.0" });
registerAllTools(server, { readOnly: false, auth: "none", exclude: ["upload_document"], complianceNotice: "..." });
await runWithSessionContext(
{
sessionId: requestId,
userId, clioUserId, requestId,
getAccessToken: () => tokenStore.validAccessToken(userId), // refresh with refreshClioTokens() as needed
getTokens: () => tokenStore.get(userId),
storeTokens: (t) => tokenStore.set(userId, t),
clearTokens: () => tokenStore.clear(userId),
},
() => transport.handleRequest(req, res, req.body)
);
Clio OAuth 関数は、明示的な認証情報とリージョンを受け取ります(buildClioAuthorizeUrl、exchangeClioCode、refreshClioTokens、fetchClioWhoAmI、および PKCE 用の generateCodeVerifier / deriveCodeChallenge)。ライブラリ内で環境変数から CLIO_CLIENT_ID を読み取ることはありません。stdio モード以外では、セッションコンテキストがないとツールは実行されないため、ホストが誤って共有トークンファイルにフォールバックすることはありません。型定義はパッケージに同梱されています(build/lib.d.ts)。エクスポートされる API は src/__tests__/lib.test.ts で固定されています。
コントリビューション
Issue とプルリクエストを歓迎します。このコネクターが適切に処理できない Clio API の特殊なケースに遭遇した場合は、その状況とリクエストの例を添えて Issue を作成してください。ツールを追加する場合は、src/tools/index.ts にその名前を登録してください(Clio のデータを変更する場合は TOOL_META と WRITE_TOOLS)。登録しないと registry.test.ts が失敗します。読み取り専用の制御とアノテーションの対象にするため、忘れずに登録してください。
ライセンス
MIT © Oktopeak
全文は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
