Salesforce MCP
External Client AppとユーザーごとのOAuthを使用して、LibreChatでSalesforceホスト型MCPサーバーを設定する。
Salesforce Hosted MCP サーバーを使用すると、LibreChat ユーザーはユーザーごとの OAuth を通じて Salesforce に接続できます。 各ツール呼び出しは、フィールドレベルのセキュリティ、オブジェクト権限、共有ルールなど、認証された Salesforce ユーザーの権限で実行されます。
外部クライアントアプリを使用する
Salesforce Hosted MCP サーバーには External Client App が必要です。Classic Salesforce Connected Apps は Hosted MCP 認証ではサポートされていません。
設定するもの
このガイドでは、最も安全な最初の接続先である読み取り専用のSObjectサーバーから始めます。それが動作した後に、より広範なSalesforceサーバーに切り替えることができます。
| サーバー | アクセスレベル | 本番環境 URL | サンドボックスまたはスクラッチ環境 URL |
|---|---|---|---|
| SObject Reads | 読み取り、クエリ、検索、リレーションシップ | https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads |
| SObject Mutations | 読み取り、作成、更新(削除不可) | https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations |
| SObject Deletes | 削除に特化したワークフロー | https://api.salesforce.com/platform/mcp/v1/platform/sobject-deletes | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes |
| SObject All | 作成、読み取り、更新、削除のフルアクセス | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all |
OAuth コールバックパス
LibreChatのMCP OAuthコールバックパスは BASE_URL/api/mcp/SERVER_NAME/oauth/callback です。
SERVER_NAME は librechat.yaml 内の mcpServers にあるキーです。以下の例では salesforce を使用しているため、ローカルのコールバックは http://localhost:3080/api/mcp/salesforce/oauth/callback となります。
前提条件
- Hosted MCPサーバーおよびAPIアクセスをサポートするSalesforce組織。
- システム管理者権限、または外部クライアントアプリ(External Client Apps)の作成およびMCPサーバーの有効化と同等の権限。
librechat.yamlがマウントされているか、あるいは読み込まれている実行中の LibreChat インスタンス。- ユーザーがLibreChatを開くために使用するパブリックベースURL。例えば、ローカル開発環境の場合は
http://localhost:3080、本番環境の場合はhttps://chat.example.comとなります。
Salesforce組織をまだお持ちでない場合は、developer.salesforce.com/signup から無料のDeveloper Edition組織を作成し、メールでアカウントを認証してから、login.salesforce.com にログインしてください。このガイドのSalesforce設定メニューが組織に表示されない場合は、Hosted MCPサーバーが有効になっている、サポートされている本番環境、サンドボックス、またはトライアル組織を使用してください。
セットアップ
Salesforce MCP サーバーを有効にする
Salesforceで、Setupを開きます。
- Quick Findで、
MCP Serversを検索します。 - API Catalog の下にある MCP Servers を開きます。
- 使用するサーバーを有効にします。初回セットアップ時は、
platform/sobject-readsを有効にしてください。 - サーバーがアクティブになるまで最大2分間お待ちください。
full-accessの例を使用する予定の場合は、代わりに platform/sobject-all を有効にしてください。
外部クライアントアプリを作成する
Salesforceの設定にて:
- Quick Findで、
External Client App Managerを検索します。 - New External Client App をクリックします。
- 基本的なアプリ情報を入力します。
LibreChat Salesforce MCPのような分かりやすい名前を使用してください。 - API (Enable OAuth Settings) を展開し、OAuth を有効にします。
- LibreChatのコールバックURLを追加します。
ローカル開発の場合:
本番環境では、ベースURLを公開用のLibreChat URLに置き換えてください:
OAuthスコープとセキュリティの設定
External Client App OAuth設定で、以下のスコープを追加してください:
Hosted MCP サーバーには、標準の Salesforce api スコープを使用しないでください。MCP サーバーは mcp_api スコープを想定しています。
外部クライアントアプリのセキュリティ設定で:
- Issue JSON Web Token (JWT)-based access tokens for named users(指定されたユーザーに対してJSON Web Token (JWT) ベースのアクセストークンを発行する)を選択します。
- Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows を選択します。
- このガイドの基本的なセットアップでは、Require Secret for Web Server Flow を無効のままにしてください。
- このガイドの基本的なセットアップでは、Require Secret for Refresh Token Flow は無効のままにしておいてください。
Createをクリックし、アプリ設定を開いてConsumer Keyをコピーします。Salesforceによると、新しいExternal Client Appが利用可能になるまで最大30分かかる場合があります。
オプションのクライアントシークレット
LibreChatはクライアントシークレットをサーバーサイドに保存できます。Salesforce管理者が Require Secret for Web Server Flow を有効にしている場合は、クライアントシークレットも生成し、このガイドの後半で示されているオプションの client_secret フィールドを含めてください。
SalesforceクライアントIDを .env に追加する
LibreChatの .env ファイルに External Client App のコンシューマーキーを追加します:
Require Secret for Web Server Flow を有効にした場合は、以下も追加してください:
librechat.yaml に Salesforce MCP を追加する
この例では、本番環境またはDeveloper Edition組織向けに読み取り専用のSObjectサーバーを設定します。
サンドボックスまたはスクラッチ組織の場合は、サンドボックスのMCP URLとSalesforceサンドボックスのOAuth endpointを使用してください:
外部クライアントアプリでクライアントシークレットが必要な場合は、oauth 内に以下のフィールドを追加してください:
LibreChatをパブリックURLでデプロイしている場合は、Salesforceに登録されているコールバックURLと完全に一致するように redirect_uri を更新してください。
厳格なMCPドメイン許可リスト
librechat.yaml で mcpSettings.allowedDomains も設定している場合は、api.salesforce.com を追加してください。
Salesforce サンドボックスの OAuth エンドポイントを使用しており、ポリシーが OAuth ホストにも適用される場合は、test.salesforce.com またはご自身のサンドボックスの My Domain ホストも許可してください。
必要に応じて、Salesforceへのフルアクセスに切り替える
読み取り専用サーバーが動作した後、url を変更することで、有効化された別の Salesforce サーバーに切り替えることができます。
本番環境またはDeveloper Edition組織でSObjectへの完全なアクセス権を得るには:
サンドボックスまたはスクラッチ組織で完全なSObjectアクセスを行うには:
Salesforceレコードの作成、更新、削除をアシスタント経由で許可すべきユーザーに対してのみ、変更または削除が可能なサーバーを公開してください。
LibreChatを再起動する
LibreChatを再起動して、.env と librechat.yaml を再読み込みしてください。
| デプロイ | コマンド |
|---|---|
| Docker | docker compose up -d |
| ローカル | サーバーを停止してから、再度起動します |
Dockerでサーバーが読み込まれたことを確認するには、APIログを確認してください:
LibreChatでSalesforceを接続する
LibreChatを開き、チャット入力欄にあるMCP SettingsまたはMCP Serversドロップダウンを開きます。
- Salesforceサーバーの Connect をクリックします。
- Salesforce OAuthフローを完了します。
- 要求された
mcp_apiおよびrefresh_tokenスコープを確認してください。 - OAuthの成功ページが閉じた後、LibreChatに戻ります。
OAuthが成功し、MCP接続が初期化されると、SalesforceツールがチャットおよびAgent Builder内で利用可能になります。
テスト
有効にしたサーバーに一致するプロンプトを試してください:
| サーバー | プロンプト |
|---|---|
| Any SObject サーバー | "Who am I in Salesforce?" |
| SObject Reads | "Show me my five most recently viewed accounts." |
| SObject Reads | "Find open cases related to Acme Corp and summarize them." |
| SObject Mutations | "Create a follow-up task for this account. Ask me before saving anything." |
| SObject All | "Update this opportunity stage to Closed Won after confirming the exact record." |
より低レベルな健全性チェックを行うには、同じSalesforceサーバーをPostmanまたはMCP Inspectorでテストしてください。もしそれで動作するのにLibreChatで動作しない場合は、LibreChatのコールバックURL、OAuthスコープ、およびサーバーURLを、動作しているクライアントと比較してください。
トラブルシューティング
| 症状 | 確認事項 |
|---|---|
Salesforceが redirect_uri_mismatch を返す | 外部クライアントアプリのコールバックURLは、プロトコル、ホスト名、ポート、サーバー名、パスを含め、librechat.yaml 内の redirect_uri と完全に一致している必要があります。 |
Salesforceのログイン履歴に Invalid Code Verifier と表示される | PKCEの状態がコールバックと一致しませんでした。一度に複数のOAuthフローを開始しないでください。マルチレプリカ環境では、認可リクエストとコールバックリクエストが異なるレプリカに到達しても安全なように、LibreChatがRedisなどの共有OAuthフローストレージを使用していることを確認してください。 |
Salesforceが JWT Token is required を返す | Salesforce MCPアクセストークンなしでサーバーが呼び出されています。LibreChatからOAuthを完了し、requiresOAuth: true であること、およびユーザーが外部クライアントアプリを承認したことを確認してください。 |
Salesforceが Invalid token を返す | 外部クライアントアプリが mcp_api を使用し、JWTベースのアクセストークンを発行し、PKCEが有効になっていることを確認してください。また、MCP URLとOAuthのendpointが、本番環境とサンドボックス環境のどちらか一方で一致していることを確認してください。 |
Salesforceが Server definition not found for: sobject-all を返す | サーバーが有効化されていないか、反映中であるか、URLの本番環境/サンドボックス環境のパスが間違っています。Salesforceの設定でサーバーを有効にし、最大2分間待機してください。 |
| トークン更新がスコープ関連のエラーで失敗する | 設定されたスコープとして mcp_api refresh_token を使用してください。Hosted MCPに対して通常のSalesforce api スコープを代用しないでください。 |
| LibreChatにSalesforceは表示されるがツールが表示されない | LibreChat UIからサーバーを接続してください。OAuthが有効なリモートサーバーは、ユーザーが認証され、サーバーが初期化された後にツールを公開します。 |
| MCPリクエストがLibreChatのドメインポリシーによってブロックされる | mcpSettings.allowedDomains が設定されている場合は、api.salesforce.com およびデプロイメントで使用しているすべてのSalesforce OAuthホストを許可してください。 |
セキュリティに関する注意点
- ユーザーが書き込みや削除のアクセス権を真に必要としない限り、
platform/sobject-readsから始めてください。 - Salesforceは認証されたユーザーの権限を強制しますが、アシスタントは依然として広範なアクションを提案する可能性があります。書き込みおよび削除操作は慎重に確認してください。
- Salesforceの権限セットと外部クライアントアプリケーション(External Client App)ポリシーを使用して、誰がMCPクライアントを承認できるかを制限します。
- Salesforceのレコードは信頼できない入力として扱ってください。レコードには、アシスタントに影響を与えようとする間接的なプロンプトインジェクションの試みが含まれている可能性があります。
- 複数の LibreChat API レプリカを使用した本番環境へのデプロイでは、PKCE コールバックがレプリカ間で永続化されるように、OAuth フローの状態に対して共有ストレージを使用してください。
関連ページ
このガイドはいかがでしたか?