mcpField
S
Salesforce MCP Server

Salesforce MCP Server

ローカル
github.com/tsmztechデータ・分析1652 週間前に更新

Salesforce MCP Server について

Salesforce MCP Server は、Claude が自然言語で Salesforce のデータとメタデータを照会・管理できるようにする MCP サーバーです。AI アシスタントから Salesforce オブジェクト、レコード、Apex コードを扱いたい管理者や開発者を対象としています。

主な機能

  1. 01カスタムオブジェクトとフィールドの作成・変更
  2. 02標準およびカスタムオブジェクトの検索
  3. 03オブジェクト構造とリレーションの詳細取得
  4. 04リレーションと条件を指定したレコード照会
  5. 05レコードの挿入・更新・削除・upsert

活用シーン

  1. 01Claude に Account へのカスタムフィールド追加と項目レベルセキュリティの設定を依頼する
  2. 02自然言語で商談をステージごとに集計する
  3. 03Apex クラスやトリガーのソースコードを読み取り・更新する

MCP 対応

本プロジェクトは MCP サーバーであり、Salesforce のオブジェクト、レコード、メタデータおよび Apex 関連のツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": [
"-y",
"@tsmztech/mcp-server-salesforce"
],
"env": {
"SALESFORCE_CONNECTION_TYPE": "<SALESFORCE_CONNECTION_TYPE>",
"SALESFORCE_CLIENT_ID": "<SALESFORCE_CLIENT_ID>",
"SALESFORCE_CLIENT_SECRET": "<SALESFORCE_CLIENT_SECRET>",
"SALESFORCE_INSTANCE_URL": "<SALESFORCE_INSTANCE_URL>"
}
}
}
}
起動コマンドnpx -y @tsmztech/mcp-server-salesforce
設定が必要な環境変数
SALESFORCE_CONNECTION_TYPE
SALESFORCE_CLIENT_ID
SALESFORCE_CLIENT_SECRETシークレット
SALESFORCE_INSTANCE_URL

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@tsmztech/mcp-server-salesforce

ツール

15

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
searchPatternstringはいオブジェクトを検索するパターン(例:'Account Coverage' では 'AccountCoverage__c' のようなオブジェクトが見つかります)

詳細

Salesforce MCP サーバー

OpenSSF Scorecard

Salesforce と Claude を連携し、Salesforce のデータやメタデータを自然言語で操作できるようにする、MCP(Model Context Protocol)サーバーの実装です。このサーバーを使用すると、日常的な言葉で Salesforce のオブジェクトやレコードを検索、変更、管理できます。

Salesforce Server MCP server

機能

  • オブジェクトと項目の管理:自然言語でカスタムオブジェクトや項目を作成、変更できます
  • スマートなオブジェクト検索:名前の一部から Salesforce オブジェクトを検索できます
  • 詳細なスキーマ情報:任意のオブジェクトの項目やリレーションシップの詳細を包括的に取得できます
  • 柔軟なデータクエリ:リレーションシップや複雑なフィルターに対応したレコード検索を実行できます
  • データ操作:レコードの挿入、更新、削除、アップサートを簡単に実行できます
  • オブジェクト横断検索:SOSL を使用して複数のオブジェクトを検索できます
  • Apex コード管理:Apex クラスやトリガーを読み取り、作成、更新できます
  • 直感的なエラーハンドリング:Salesforce 固有のエラー詳細を含む、明確なフィードバックを提供します
  • 切り替え可能な認証:複数の組織に対応しています。VS Code ワークスペースで設定されたデフォルトの組織に基づいて、アクティブな Salesforce 組織を簡単に切り替えられます(この機能には Salesforce_CLI 認証を使用してください)。

インストール

要件
  • Node.js 22 以降(jsforce 3.10.17 以降は Node 22 を必要とする undici 8 に依存しています。Node 20 ではサーバーの起動時に失敗します)。サーバーは Node 上で実行する必要があります — bun はサポートされていません:bun では jsforce の HTTP トランスポートがハングするため、認証は成功したように見えますが、すべての Salesforce API 呼び出しが停止し、MCP ホストがタイムアウトするまで続きます(#118 を参照)。MCP クライアントの設定では npx/node(bun x ではなく)を使用してください。
グローバルインストール(npm)
npm install -g @tsmztech/mcp-server-salesforce
Claude Desktop の簡単なインストール

Claude Desktop で簡単にセットアップするには、事前設定済みの拡張機能をダウンロードしてください。

  1. claude-desktop/ フォルダーから salesforce-mcp-extension.dxt をダウンロードします
  2. Claude Desktop → 設定 → 拡張機能を開きます
  3. .dxt ファイルを拡張機能ウィンドウにドラッグします
  4. 表示されたら Salesforce の認証情報を設定します

Claude Desktop を手動で設定する方法については、以下のClaude Desktop での使用を参照してください。

ツール

salesforce_search_objects

標準オブジェクトとカスタムオブジェクトを検索します。

  • 名前の一部から検索
  • 標準オブジェクトとカスタムオブジェクトの両方を検索
  • 例:「Account 関連のオブジェクトを検索」は Account、AccountHistory などを検索します
salesforce_describe_object

オブジェクトの詳細なスキーマ情報を取得します。

  • 項目の定義とプロパティ
  • リレーションシップの詳細
  • 選択リストの値
  • 例:「Account オブジェクトのすべての項目を表示」
salesforce_query_records

リレーションシップに対応したレコード検索を実行します。

  • 親から子へのリレーションシップ
  • 子から親へのリレーションシップ
  • 複雑な WHERE 条件
  • 例:「関連する Contact とともにすべての Account を取得」
  • 注:GROUP BY または集計関数を含むクエリには、salesforce_aggregate_query を使用してください
salesforce_aggregate_query

GROUP BY を使用した集計クエリを実行します。

  • 単一または複数の項目による GROUP BY
  • 集計関数:COUNT、COUNT_DISTINCT、SUM、AVG、MIN、MAX
  • グループ化した結果を絞り込む HAVING 句
  • 日付/時刻のグループ化関数
  • 例:「ステージ別の商談数を数える」または「商談数が 10 件を超える取引先を検索」
salesforce_dml_records

データ操作を実行します。

  • 新しいレコードを挿入
  • 既存のレコードを更新
  • レコードを削除
  • 外部 ID を使用してアップサート
  • 例:「複数の取引先の状況を更新」
salesforce_manage_object

カスタムオブジェクトを作成、変更します:

  • 新しいカスタムオブジェクトを作成します
  • オブジェクトのプロパティを更新します
  • 共有設定を構成します
  • 例:「Customer Feedback オブジェクトを作成」
salesforce_manage_field

オブジェクトの項目を管理します:

  • 新しいカスタム項目を追加します
  • 項目のプロパティを変更します
  • リレーションを作成します
  • デフォルトでシステム管理者に項目レベルセキュリティを自動的に付与します
  • 別のプロファイルを指定するには、grantAccessTo パラメーターを使用します
  • 例:「Account に Rating 選択リスト項目を追加」
salesforce_manage_field_permissions

項目レベルセキュリティ(項目の権限)を管理します:

  • 特定のプロファイルに対して、項目の読み取り/編集アクセス権を付与または取り消します
  • 現在の項目の権限を表示します
  • 複数のプロファイルの権限を一括更新します
  • 項目の作成後や既存の項目の権限管理に役立ちます
  • 例:「Account の Custom_Field__c に対するシステム管理者のアクセス権を付与」
salesforce_search_all

複数のオブジェクトを対象に検索します:

  • SOSL ベースの検索
  • 複数オブジェクトに対応
  • 項目のスニペット
  • 例:「Account と Opportunity を対象に 'cloud' を検索」
salesforce_read_apex

Apex クラスを読み取ります:

  • 特定のクラスのソースコード全体を取得します
  • 名前のパターンに一致するクラスを一覧表示します
  • クラスのメタデータ(API バージョン、ステータスなど)を表示します
  • 名前のパターンでワイルドカード(* と ?)をサポートします
  • 例:「AccountController クラスを表示」または「AccountCont に一致するすべてのクラスを検索」
salesforce_write_apex

Apex クラスを作成、更新します:

  • 新しい Apex クラスを作成します
  • 既存クラスの実装を更新します
  • API バージョンを指定します
  • 例:「アカウント操作を処理する新しい Apex クラスを作成」
salesforce_read_apex_trigger

Apex トリガーを読み取ります:

  • 特定のトリガーのソースコード全体を取得します
  • 名前のパターンに一致するトリガーを一覧表示します
  • トリガーのメタデータ(API バージョン、オブジェクト、ステータスなど)を表示します
  • 名前のパターンでワイルドカード(* と ?)をサポートします
  • 例:「AccountTrigger を表示」または「Contact オブジェクトのすべてのトリガーを検索」
salesforce_write_apex_trigger

Apex トリガーを作成、更新します:

  • 特定のオブジェクト用に新しい Apex トリガーを作成します
  • 既存のトリガー実装を更新します
  • API バージョンとイベント操作を指定します
  • 例:「Account オブジェクト用の新しいトリガーを作成」または「Lead トリガーを更新」
salesforce_execute_anonymous

匿名 Apex コードを実行します:

  • 永続クラスを作成せずに Apex コードを実行します
  • デバッグログと実行結果を表示します
  • 他のツールでは直接サポートされないデータ操作に役立ちます
  • 例:「アカウントのメトリクスを計算する Apex コードを実行」または「関連レコードを更新するスクリプトを実行」
salesforce_manage_debug_logs

Salesforce ユーザーのデバッグログを管理します:

  • 特定のユーザーのデバッグログを有効にします
  • 有効なデバッグログ設定を無効にします
  • デバッグログを取得して表示します
  • ログレベル(NONE、ERROR、WARN、INFO、DEBUG、FINE、FINER、FINEST)を構成します
  • 例:「[email protected] のデバッグログを有効化」または「管理者ユーザーの最近のログを取得」

セットアップ

Salesforce 認証

次の 3 つの認証方法のいずれかを使用して Salesforce に接続できます:

1. ユーザー名/パスワード認証(デフォルト)
  1. Salesforce の認証情報を設定します
  2. セキュリティトークンを取得します(Salesforce の設定からリセット)
2. OAuth 2.0 クライアント認証情報フロー
  1. Salesforce で接続アプリを作成します
  2. OAuth 設定を有効にし、「クライアント認証情報フロー」を選択します
  3. 適切なスコープを設定します(通常は「api」で十分です)
  4. クライアント ID とクライアントシークレットを保存します
  5. 重要:認証に必要なインスタンス URL(例:https://your-domain.my.salesforce.com)を控えておきます
3. Salesforce CLI 認証(ローカル/開発環境に推奨)(@andrea9293 による貢献)
  1. Salesforce CLI(sf)をインストールして認証します。
  2. Salesforce プロジェクトのルートで sf org display --json を実行し、組織が認証済みでアクセス可能であることを確認します。
  3. サーバーは CLI を使用してアクセストークンとインスタンス URL を自動的に取得します。
オプション:Salesforce API バージョン

デフォルトでは、サーバーは jsforce ライブラリのデフォルトの Salesforce API バージョンを使用しますが、新しい標準オブジェクトには古すぎる場合があります(たとえば、AccountPlan には API バージョン 62.0 以降が必要で、sObject type 'AccountPlan' is not supported というエラーが発生します)。認証方法にかかわらず、SALESFORCE_API_VERSION 環境変数を設定すると、特定のバージョンに固定できます。

"env": {
  "SALESFORCE_CONNECTION_TYPE": "...",
  "SALESFORCE_API_VERSION": "62.0"
}

値は "62.0"(メジャーバージョンとマイナーバージョンをドットで区切った形式)のように指定する必要があります。

Claude Desktop での使用方法

claude_desktop_config.json に追加します。

Salesforce CLI 認証の場合:
{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["-y", "@tsmztech/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CONNECTION_TYPE": "Salesforce_CLI"
      }
    }
  }
}
ユーザー名/パスワード認証の場合:
{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["-y", "@tsmztech/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CONNECTION_TYPE": "User_Password",
        "SALESFORCE_USERNAME": "your_username",
        "SALESFORCE_PASSWORD": "your_password",
        "SALESFORCE_TOKEN": "your_security_token",
        "SALESFORCE_INSTANCE_URL": "org_url"        // Optional. Default value: https://login.salesforce.com
      }
    }
  }
}
OAuth 2.0 クライアント認証情報フローの場合:
{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["-y", "@tsmztech/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CONNECTION_TYPE": "OAuth_2.0_Client_Credentials",
        "SALESFORCE_CLIENT_ID": "your_client_id",
        "SALESFORCE_CLIENT_SECRET": "your_client_secret",
        "SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com"  // REQUIRED: Must be your exact Salesforce instance URL
      }
    }
  }
}

注:OAuth 2.0 クライアント認証情報フローでは、SALESFORCE_INSTANCE_URL に正確な Salesforce インスタンス URL(例:https://your-domain.my.salesforce.com)を指定する必要があります。トークンエンドポイントは <instance_url>/services/oauth2/token として構成されます。

アクセストークンを直接使用する認証の場合:
{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["-y", "@tsmztech/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CONNECTION_TYPE": "Access_Token",
        "SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com",
        "SALESFORCE_ACCESS_TOKEN": "your_access_token"
      }
    }
  }
}

注:OAuth アクセストークンが外部システム(SSO ゲートウェイ、別のマシン上の SF CLI、リフレッシュトークンベースのプロキシなど)によって発行され、実行時に使用できるのが結果として得られるアクセストークンとインスタンス URL のみの場合は、Access_Token を使用してください。サーバーは OAuth ハンドシェイクを省略し、指定されたトークンを直接使用します。

Docker での実行

この MCP サーバーは Docker コンテナー内で実行できます。サーバーは stdio(標準入出力)で通信するため、通常、MCP クライアントが docker run -i を使ってコンテナーを対話的に実行します。

1. リポジトリをクローンする
git clone https://github.com/tsmztech/mcp-server-salesforce.git
2. ディレクトリに移動する
cd mcp-server-salesforce
3. イメージをビルドする
docker build -t mcp-server-salesforce .
4. コンテナーでの認証

メモ

Salesforce CLI(sf)のウェブベースの OAuth ログインフローは、ヘッドレス Docker コンテナーでは利用できません。

コンテナーで実行する場合は、サポートされている環境変数ベースの認証方法を使用してください。

  • ユーザー名とパスワードによる認証
    • SALESFORCE_CONNECTION_TYPE=User_Password
    • SALESFORCE_USERNAME
    • SALESFORCE_PASSWORD
    • SALESFORCE_TOKEN
  • OAuth 2.0 クライアント認証情報フロー
    • SALESFORCE_CONNECTION_TYPE=OAuth_2.0_Client_Credentials
    • SALESFORCE_CLIENT_ID
    • SALESFORCE_CLIENT_SECRET
    • SALESFORCE_INSTANCE_URL
  • アクセストークンを直接使用する認証
    • SALESFORCE_CONNECTION_TYPE=Access_Token
    • SALESFORCE_ACCESS_TOKEN
    • SALESFORCE_INSTANCE_URL
5. MCP クライアントの設定

コンテナー化したサーバーを MCP クライアント(Claude Desktop など)に登録するには、次の設定を claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "salesforce": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SALESFORCE_CONNECTION_TYPE=User_Password",
        "-e",
        "SALESFORCE_USERNAME=your_username",
        "-e",
        "SALESFORCE_PASSWORD=your_password",
        "-e",
        "SALESFORCE_TOKEN=your_security_token",
        "mcp-server-salesforce"
      ]
    }
  }
}
6. 手動テスト

ターミナルからコンテナー化したサーバーを直接テストできます。

docker run -i --rm \
  -e SALESFORCE_CONNECTION_TYPE="User_Password" \
  -e SALESFORCE_USERNAME="your_username" \
  -e SALESFORCE_PASSWORD="your_password" \
  -e SALESFORCE_TOKEN="your_security_token" \
  mcp-server-salesforce

コンテナーの実行中に、stdin 経由で MCP の initialize JSON-RPC リクエストを送信できます。

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": {
      "name": "test-client",
      "version": "1.0.0"
    }
  }
}

使用例

オブジェクトの検索
"Find all objects related to Accounts"
"Show me objects that handle customer service"
"What objects are available for order management?"
スキーマ情報の取得
"What fields are available in the Account object?"
"Show me the picklist values for Case Status"
"Describe the relationship fields in Opportunity"
レコードのクエリ
"Get all Accounts created this month"
"Show me high-priority Cases with their related Contacts"
"Find all Opportunities over $100k"
集計クエリ
"Count opportunities by stage"
"Show me the total revenue by account"
"Find accounts with more than 10 opportunities"
"Calculate average deal size by sales rep and quarter"
"Get the number of cases by priority and status"
カスタムオブジェクトの管理
"Create a Customer Feedback object"
"Add a Rating field to the Feedback object"
"Update sharing settings for the Service Request object"

項目レベルのセキュリティの例:

# Default - grants access to System Administrator automatically
"Create a Status picklist field on Custom_Object__c"

# Custom profiles - grants access to specified profiles
"Create a Revenue currency field on Account and grant access to Sales User and Marketing User profiles"
項目権限の管理
"Grant System Administrator access to Custom_Field__c on Account"
"Give read-only access to Rating__c field for Sales User profile"
"View which profiles have access to the Custom_Field__c"
"Revoke field access for specific profiles"
オブジェクト横断検索
"Search for 'cloud' in Accounts and Opportunities"
"Find mentions of 'network issue' in Cases and Knowledge Articles"
"Search for customer name across all relevant objects"
Apex コードの管理
"Show me all Apex classes with 'Controller' in the name"
"Get the full code for the AccountService class"
"Create a new Apex utility class for handling date operations"
"Update the LeadConverter class to add a new method"
Apex トリガーの管理
"List all triggers for the Account object"
"Show me the code for the ContactTrigger"
"Create a new trigger for the Opportunity object"
"Update the Case trigger to handle after delete events"
匿名 Apex コードの実行
"Execute Apex code to calculate account metrics"
"Run a script to update related records"
"Execute a batch job to process large datasets"
デバッグログの管理
"Enable debug logs for [email protected]"
"Retrieve recent logs for an admin user"
"Disable debug logs for a specific user"
"Configure log level to DEBUG for a user"

開発

ソースからビルドする
# Clone the repository
git clone https://github.com/tsmztech/mcp-server-salesforce.git

# Navigate to directory
cd mcp-server-salesforce

# Install dependencies
npm install

# Build the project
npm run build

コントリビューション

コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。

ライセンス

このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。

問題とサポート

問題が発生した場合やサポートが必要な場合は、GitHub リポジトリで issue を作成してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。