Integrations
Wraps the Salesforce CLI to provide access to Salesforce org functionality including organization management, Apex code execution, data querying, schema exploration, and deployment capabilities.
Salesforce CLI MCP サーバー
Claude Desktop などの LLM ツールに Salesforce CLI 機能を提供するモデル コンテキスト プロトコル (MCP) サーバー。
概要
この MCP サーバーは、Salesforce CLI ( sf
) コマンドライン ツールをラップし、そのコマンドを MCP ツールおよびリソースとして公開することで、LLM 対応エージェントが次のことを実行できるようにします。
- Salesforce CLI のトピックとコマンドに関するヘルプ情報を表示します
- 適切なパラメータを使用して Salesforce CLI コマンドを実行する
- AIワークフローでSalesforce CLI機能を活用する
要件
- 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_get
sf_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
You must be authenticated.
Salesforce CLI 機能を Claude Desktop などの LLM ツールに公開し、AI エージェントが Salesforce コマンドを実行し、組織を管理し、コードをデプロイし、自然言語でデータをクエリできるようにします。