Salesforce CLI MCP サーバー
Claude Desktop などの LLM ツールに Salesforce CLI 機能を提供するモデル コンテキスト プロトコル (MCP) サーバー。
概要
この MCP サーバーは、Salesforce CLI ( sf ) コマンドライン ツールをラップし、そのコマンドを MCP ツールおよびリソースとして公開することで、LLM 対応エージェントが次のことを実行できるようにします。
Salesforce CLI のトピックとコマンドに関するヘルプ情報を表示します
適切なパラメータを使用して Salesforce CLI コマンドを実行する
AIワークフローでSalesforce CLI機能を活用する
Related MCP server: Azure MCP Server
要件
Node.js 18+ および npm
Salesforce CLI (
sf) のインストールと設定CLI で設定された Salesforce 組織の認証情報
インストール
使用法
サーバーの起動
MCP サーバーは stdio トランスポートを使用します。これは、 MCP Inspectorや Claude Desktop などの MCP クライアントで使用できます。
Claude Desktopでの設定
Claude Desktop の.claude.json構成でこの MCP を構成するには:
npm パッケージを直接使用する:
発達
利用可能なツールとリソース
このMCPサーバーは、Salesforce CLIコマンドをMCPツールとして提供します。Salesforce CLIから利用可能なすべてのコマンドを自動的に検出して登録するだけでなく、最もよく使用されるコマンドを具体的に実装します。
コアツール
sf_version- Salesforce CLI のバージョン情報を取得するsf_help- Salesforce CLI コマンドのヘルプ情報を取得しますsf_cache_clear- コマンド検出キャッシュをクリアするsf_cache_refresh- コマンド検出キャッシュを更新する
プロジェクトディレクトリ管理(ルート)
Salesforce プロジェクトのコンテキスト(デプロイメントなど)を必要とするコマンドでは、プロジェクトディレクトリを指定する必要があります。MCP は、ファイルシステム MCP と同様に、複数のプロジェクトディレクトリ(ルート)をサポートします。
設定方法
方法1: コマンドライン引数経由
このように設定すると、ルートは自動的にroot1 、 root2などの名前が付けられ、最初のものがデフォルトとして設定されます。
方法2: MCPツールを使用する
sf_set_project_directory- コマンドで使用する Salesforce プロジェクト ディレクトリを設定しますパラメータ:
directory- sfdx-project.json ファイルを含むディレクトリへのパスname- (オプション) このプロジェクトルートの名前description- (オプション) このプロジェクトルートの説明isDefault- (オプション) このルートをコマンド実行のデフォルトとして設定します
sf_list_roots- 設定されたすべてのプロジェクトルートを一覧表示しますsf_detect_project_directory- ユーザーメッセージからプロジェクトディレクトリを検出しようとします
使用例:
方法 3: Claude デスクトップ構成以下の説明に従って、 .claude.jsonでプロジェクト ルートを構成します。
プロジェクトルートの使用
特定のプロジェクト ルートでコマンドを実行できます。
デプロイ、ソース取得、その他のプロジェクト固有の操作などのコマンドを実行するには、プロジェクトディレクトリを指定する必要があります。複数のルートが設定されている場合、特に指定がない限り、デフォルトのルートが使用されます。
実装された主なツール
次のコマンドは具体的に実装されており、動作が保証されています。
組織管理
sf_org_list- Salesforce 組織の一覧パラメータ:
json、verbose
sf_auth_list_orgs- 認証された Salesforce 組織を一覧表示するパラメータ:
json、verbose
sf_org_display- 組織の詳細を表示するパラメータ:
targetusername、json
sf_org_open- ブラウザで組織を開くパラメータ:
targetusername、path、urlonly
アペックスコード
sf_apex_run- 匿名の Apex コードを実行するパラメータ:
targetusername、file、apexcode、json
sf_apex_test_run- Apex テストを実行するパラメータ:
targetusername、testnames、suitenames、classnames、json
データ管理
sf_data_query- SOQLクエリを実行するパラメータ:
targetusername、query、json
sf_schema_list_objects- 組織内の sObject を一覧表示するパラメータ:
targetusername、json
sf_schema_describe- Salesforce オブジェクトを記述するパラメータ:
targetusername、sobject、json
展開
sf_project_deploy_start- ソースを組織にデプロイするパラメータ:
targetusername、sourcedir、json、wait
動的に検出されたツール
サーバーは利用可能なすべての Salesforce CLI コマンドを検出し、 sf_<topic>_<command>の形式でツールとして登録します。
例えば:
sf_apex_run- 匿名の Apex コードを実行するsf_data_query- SOQLクエリを実行する
ネストされたトピック コマンドの場合、ツール名にはアンダースコアを含む完全なパスが含まれます。
sf_apex_log_get- Apexログを取得するsf_org_login_web- Webフローを使用して組織にログインする
サーバーは、可能な場合は、一般的なネストされたコマンドの簡略化されたエイリアスも作成します。
sf_apex_log_getのエイリアスとしてのsf_getsf_org_login_webのエイリアスとしてのsf_web
使用できるコマンドは、インストールされている Salesforce CLI プラグインによって異なります。
**注:**コマンド検出は起動時のパフォーマンス向上のためキャッシュされます。新しいSF CLIプラグインをインストールする場合は、
sf_cache_refreshツールを使用してキャッシュを更新し、サーバーを再起動してください。
リソース
次のリソースには、Salesforce CLI に関するドキュメントが提供されています。
sf://help- メインの CLI ドキュメントsf://topics/{topic}/help- トピックのヘルプドキュメントsf://commands/{command}/help- コマンドのヘルプドキュメントsf://topics/{topic}/commands/{command}/help- トピックコマンドのヘルプドキュメントsf://version- バージョン情報sf://roots- 設定されているすべてのプロジェクトルートを一覧表示しますsf://roots/{root}/commands/{command}- 特定のプロジェクトルートでコマンドを実行する
仕組み
起動時に、サーバーはキャッシュされたコマンドのリスト(
~/.sf-mcp/command-cache.jsonに保存されている)をチェックします。有効なキャッシュが存在する場合は、コマンドを登録するために使用されます。そうでない場合は、コマンドは動的に検出されます。
検出中に、サーバーは
sf commands --json照会して、利用可能なコマンドの完全なリストを取得します。コマンドメタデータ(パラメータと説明を含む)はJSON出力から直接抽出されます。
すべてのコマンドは適切なパラメータスキーマを持つMCPツールとして登録されます
ヘルプドキュメント用のリソースが登録されています
ツールが呼び出されると、対応するSalesforce CLIコマンドが実行されます。
プロジェクトルーツマネジメント
Salesforce プロジェクトコンテキストを必要とするコマンドの場合:
サーバーは、
sf_set_project_directory経由でプロジェクトルートが設定されているかどうかを確認します。複数のルートが設定されている場合は、特定のルートが指定されていない限り、デフォルトのルートが使用されます。
ルートが設定されていない場合、サーバーはユーザーにプロジェクトディレクトリを指定するように要求します。
コマンドは適切なプロジェクトディレクトリ内で実行され、適切なコンテキストが確保されます。
ユーザーは必要に応じて複数のプロジェクトルートを追加したり切り替えたりすることができます。
プロジェクト固有のコマンド(デプロイ、取得など)は、適切なプロジェクトディレクトリで自動的に実行されます。プロジェクトのコンテキストを必要としないコマンドの場合、作業ディレクトリは関係ありません。
特定のプロジェクト ルートでコマンドを実行するには、次の操作を行います。
リソース URI の使用:
sf://roots/{rootName}/commands/{command}コマンドツールに
rootNameパラメータを提供する(内部実装の詳細)sf_set_project_directory --isDefault=trueを使用して特定のルートをデフォルトとして設定する
コマンドキャッシュ
起動パフォーマンスを向上させるために、MCP サーバーは検出されたコマンドをキャッシュします。
キャッシュは
~/.sf-mcp/command-cache.jsonに保存されます。すべてのトピック、コマンド、パラメータ、説明が含まれています
キャッシュには検証タイムスタンプとSF CLIバージョンチェックがあります
デフォルトでは、キャッシュは7日後に期限切れになります。
新しいSalesforce CLIプラグインをインストールするときは、
sf_cache_refreshを使用してキャッシュを更新します。
キャッシュの問題のトラブルシューティング
サーバーの初回起動時には完全なコマンド検出が実行されるため、多少時間がかかる場合があります。コマンドの欠落やキャッシュの問題などの問題が発生した場合は、以下の手順に従ってください。
MCP サーバーを停止します (実行中の場合)
キャッシュファイルを手動で削除します:
rm ~/.sf-mcp/command-cache.jsonサーバーを再起動します:
npm start
これにより、公式の CLI メタデータを使用してすべてのコマンドの完全な再検出が強制されます。
特定のコマンドがまだ見つからない場合、または新しい SF CLI プラグインをインストールした場合:
Claude Desktopの
sf_cache_refreshツールを使用するMCPサーバーを停止して再起動します
ネストされたトピックの処理
Salesforce CLI は、複数レベルに渡る階層的なコマンド構造を持っています。この MCP サーバは、これらのネストされたコマンドを次のように処理します。
コロンで区切られたパスをアンダースコア形式に変換する (
apex:log:get→sf_apex_log_get)可能な場合は、一般的なディープコマンドにエイリアスを提供します(
sf_apex_log_getの場合はsf_get)ツール名に完全なコマンド階層を保持する
sf commands --json使用する
ネストされたトピック コマンドは、可能な場合は 2 回登録されます。1 回は完全な階層名で、もう 1 回は簡略化されたエイリアスで登録されるため、簡単に見つけて使用できます。
ライセンス
ISC