mcpField
S
Salesforce Metadata MCP

Salesforce Metadata MCP

ローカル
github.com/semwalajay83-semデータ・分析21 週間前に更新

Salesforce Metadata MCP について

Salesforce Metadata MCPは、ClaudeなどのMCPクライアントからSalesforce組織を設定・開発するためのMCPサーバーです。幅広いツール群をロード可能なツールセットに分け、必要に応じた検索と呼び出しに対応します。

主な機能

  1. 01Salesforceメタデータの作成・管理
  2. 02Flows、Apex、LWCの構築
  3. 03セキュリティ、ユーザー、権限の管理
  4. 04ツールセットのオンデマンド検索・ロード
  5. 05スキーマ照会とデバッグログの確認

活用シーン

  1. 01Salesforceオブジェクトとフィールドの作成
  2. 02FlowsまたはApexの構築・デプロイ
  3. 03権限とデバッグログの確認
  4. 04Salesforce作業に必要なツールの検索

MCP 対応

stdio経由でSalesforceの管理、開発、自動化ツールをMCPクライアントに提供します。ツールセットは必要に応じてロードでき、`sf_call_tool`を使えばクライアントのツール一覧に表示されていないツールも呼び出せます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"salesforce-metadata": {
"command": "npx",
"args": [
"-y",
"salesforce-metadata-mcp"
],
"env": {
"SF_INSTANCE_URL": "<SF_INSTANCE_URL>",
"SF_ACCESS_TOKEN": "<SF_ACCESS_TOKEN>",
"SF_ALIAS": "<SF_ALIAS>",
"SF_TOOLSETS": "<SF_TOOLSETS>",
"SF_PRODUCTION_GUARD": "<SF_PRODUCTION_GUARD>"
}
}
}
}
起動コマンドnpx -y salesforce-metadata-mcp
設定が必要な環境変数
SF_INSTANCE_URLSalesforce org URL, e.g. https://yourorg.my.salesforce.com
SF_ACCESS_TOKENシークレットSalesforce access token (or use SF_ALIAS / JWT variables instead)
SF_ALIASSalesforce CLI org alias (alternative to SF_ACCESS_TOKEN)
SF_TOOLSETSToolsets to load at startup: 'all', 'none', or a comma-separated list. Default: core,metadata. All 228 tools stay available via sf_find_tool / sf_load_toolset, and callable via sf_call_tool even on clients that do not refresh their tool list.
SF_PRODUCTION_GUARDRefuse destructive tools on production orgs: 'destructive' (default), 'strict', or 'off'. Metadata creation is never affected.

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

パッケージ
npmsalesforce-metadata-mcp3.2.0

ツール

200

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

パラメーター型必須説明
fullNamestringはいカスタムオブジェクトの API 名。例:'Invoice__c'
labelstringはいUI に表示される単数形のラベル。例:'Invoice'
pluralLabelstringはい複数形のラベル。例:'Invoices'
descriptionstringいいえオブジェクトの任意の説明
nameFieldLabelstringいいえ標準 Name フィールドのラベル。例:'Invoice Name'
nameFieldTypeenumいいえName フィールドの種類:'Text'(自由入力)または 'AutoNumber'(自動採番)Text | AutoNumber
autoNumberFormatstringいいえAutoNumber 名称フィールドの形式。例:'INV-{0000}'。nameFieldType が AutoNumber の場合は必須です。
deploymentStatusenumいいえオブジェクトのデプロイステータスDeployed | InDevelopment
sharingModelenumいいえオブジェクトの組織全体のデフォルト(OWD)共有モデルReadWrite | Read | Private | ControlledByParent | FullAccess
enableActivitiesbooleanいいえこのオブジェクトで活動(タスク/イベント)を許可します
enableHistorybooleanいいえ項目履歴の追跡を有効にします
enableReportsbooleanいいえオブジェクトをレポートで使用できるようにします
enableSearchbooleanいいえこのオブジェクトで検索を有効にする

詳細

salesforce-metadata-mcp

npm version npm downloads License: MIT MCP Compatible

Agentforce エージェント、OmniStudio コンポーネント、DevOps Center パイプラインを構築できる唯一の Salesforce MCP サーバー — スキーマの説明、Apex の読み取り、デバッグログなど、日々の開発を一通りサポートし、Claude または任意の MCP クライアントから Salesforce 組織を直接構築、設定、自動化するための合計 228 個のツールを提供します。


クイックスタート

npx -y salesforce-metadata-mcp

または、グローバルにインストールします。

npm install -g salesforce-metadata-mcp
salesforce-metadata-mcp

設定(Claude Desktop / Claude Code)

MCP の設定(claude_desktop_config.json または .claude/settings.json)に追加します。

{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["salesforce-metadata-mcp"],
      "env": {
        "SF_INSTANCE_URL": "https://your-org.salesforce.com",
        "SF_ACCESS_TOKEN": "your_access_token"
      }
    }
  }
}

すべての認証方法と詳しいセットアップ手順については、SETUP.md をご覧ください。

ワンクリックインストール(Claude Desktop)

最新リリースから salesforce-metadata-mcp-<version>.mcpb をダウンロードし、Claude Desktop → Settings → Extensions にドラッグします。組織の URL と認証情報を求める画面が表示されるため、JSON を編集する必要はありません。

このバンドルは、サーバーを組み込まずに起動時に npm から取得するため、常に公開済みの最新バージョンを実行でき、アップグレードのたびに再ダウンロードする必要もありません。

Docker
docker build -t salesforce-metadata-mcp .
docker run -i --rm \
  -e SF_INSTANCE_URL="https://your-org.my.salesforce.com" \
  -e SF_ACCESS_TOKEN="your_access_token" \
  salesforce-metadata-mcp

イメージはソースからビルドされ、非 root ユーザーとして実行され、本番用の依存関係のみが含まれています。このサーバーは stdio 経由で MCP 通信を行うため、-i が必要です。コンテナはバックグラウンドサービスとして実行するのではなく、クライアントによって制御されます。Salesforce CLI のログインフローにはブラウザーが必要なため、コンテナ内では SF_ALIAS は機能しません。代わりに、トークン、JWT、リフレッシュトークン、またはクライアント認証情報の環境変数を使用してください。


ツールセット — コンテキストを消費せずに 228 個のツールを読み込む

228 個のツールはすべて常に利用できます。ほとんどのツールは、必要になるまでモデルのコンテキストに読み込まれません。

すべてのツールを最初に列挙すると、約 98,000 トークンを消費します。これは 200k のコンテキストウィンドウの約半分に相当し、セッションで OmniStudio や DevOps Center を一度も使うかどうかに関係なく、何かを入力する前に消費されてしまいます。候補となるツールが 228 個もあるリストでは、モデルが適切なツールを選ぶ精度も明らかに低下します。そのため、サーバーは小さなコアセットを読み込んで起動し、残りは必要に応じて読み込みます。

起動時の状態列挙されるツール概算トークン数
デフォルト(core,metadata)20~9,900
追加で 2 つのツールセットを読み込んだ後43~20,800
SF_TOOLSETS=all233~99,100

デフォルトでは、ほぼすべてのセッションで必要になる機能をカバーします。オブジェクトの説明と一覧表示、SOQL クエリ、メタデータのデプロイ、取得、削除、デプロイ状況の確認、そしてコアスキーマの作成(オブジェクト、項目、数式項目、選択リスト値、入力規則、承認プロセス)です。

次の 5 つのツールは常に利用でき、ほかのすべてのツールにアクセスする手段となります。

  • sf_find_tool — すべての 228 個のツールを名前で検索し、一度の呼び出しで一致するツールを読み込みます。*「omn​​iscript を作成して」*と頼むと、該当するツールを見つけて omnistudio を読み込み、すぐに呼び出せるようにします。通常、あなたにもモデルにもこれだけで十分です。
  • sf_load_toolset — 指定したツールセットを明示的に読み込みます。
  • sf_list_toolsets — すべてのツールセット、それぞれのツール数、読み込み済みのセットを一覧表示します。
  • sf_call_tool — 読み込み済みかどうかに関係なく、ツールリストに事前に表示されていないツールでも、名前を指定して呼び出します。引数は検証され、本番環境向けのガードも直接呼び出す場合と同じように適用されます。
  • sf_tool_schema — 任意のツールの入力スキーマを返します。これにより、クライアントから見えないツールについても sf_call_tool を構成できます。

実際には、これを手動で管理する必要はありません。必要なことを頼めば、モデルが必要なものを読み込みます。

読み込んだツールが表示されない場合

ツールセットを読み込むと、サーバー上で有効になり、notifications/tools/list_changed が送信されます。クライアントはこれを受け取ると、tools/list を再取得することになっています。しかし、再取得しないクライアントもあります。その場合、読み込みは成功と報告され、ツールも実際に有効になっているのに、ツールリストに追加されていないため、モデルはどのツールも呼び出せません。

どのクライアントでもツールにアクセスできるように、次の2つの仕組みで対処しています。

  • sf_load_toolset は、クライアントが再取得したかどうかを確認してレスポンスで伝えます。アクセスできなくなったツールについて、無条件に成功と報告することはありません。
  • sf_call_tool を使えば、再取得しなくてもすべてのツールにアクセスできます。sf_tool_schema と組み合わせることで、SF_TOOLSETS=none の場合でも、ハンドシェイク時のツールリストだけから、全228ツールを利用できます。

起動時にすべてを読み込む従来の動作に戻すには、SF_TOOLSETS=all を設定します。5つのメタツールだけで起動するには、SF_TOOLSETS=none を設定します。独自のコアを選ぶには、リストを渡します。

{ "env": { "SF_TOOLSETS": "metadata,objects,automation,security" } }

利用可能なツールセット:core、metadata、objects、data、flows、automation、security、apex、 lwc、ui、pages、actions、agentforce、omnistudio、omnichannel、devops、deployment、 integrations、identity、reports、experience、admin、monitoring、audit、einstein、 knowledge、cpq、sandbox、streaming、visualforce、aura、comms、mcp、i18n。

Flow ツールは独立した flows ツールセットにあります。sf_create_flow は Flow 要素のスキーマ全体を含み、単独で15,266バイト(約4,126トークン)に達する、サーバー内で最大のツール定義です。デフォルトのツールセットから除外することで、Flow を作成しないセッションではその分の負荷がかからず、作成するセッションでは検証済みのスキーマ全体を利用できます。


ツール — 全228個

主なツールを以下に示します。パラメーターとプロンプト例を含む完全なリファレンスについては、TOOLS.md をご覧ください。

オブジェクトと項目
ツール説明
sf_create_custom_objectすべての設定を指定してカスタムオブジェクトを作成
sf_create_custom_field任意のオブジェクトに項目を作成(すべての型に対応)
sf_create_formula_field数式言語を完全にサポートした数式項目を作成
sf_add_picklist_values既存の選択リスト項目に値を追加
sf_create_custom_metadata_typeカスタムメタデータ型(__mdt)を作成
sf_create_custom_metadata_recordカスタムメタデータ型のレコードを作成
sf_create_custom_labelカスタム表示ラベルを作成または更新
sf_create_custom_setting階層型またはリスト型のカスタム設定を作成
sf_create_global_value_setオブジェクト間で共有できる選択リストを作成
sf_create_record_type選択リストの上書き設定を含むレコードタイプを作成
sf_create_business_process商談/リード/ケースのビジネスプロセスを作成
sf_create_page_layoutセクションと項目を含むページレイアウトを作成
sf_create_sharing_rule条件ベースまたは所有者ベースの共有ルールを作成
sf_create_field_dependency制御選択リストと従属選択リストの依存関係を作成
sf_describe_objectオブジェクトの完全なスキーマを読み取る — 項目、型、選択リストの値、子リレーション、レコードタイプ
sf_list_objects部分一致する名前または表示ラベルからオブジェクトを検索 — sf_describe_object の前に行う探索ステップ
sf_get_metadata_dependencies影響分析:このコンポーネントを参照しているものと、その項目にデータが保持されているかを確認 読み取り専用
sf_update_custom_objectオブジェクトレベルのプロパティを更新。リスク分類と確認ゲートに対応
sf_update_custom_field項目の定義を更新。リスク分類に対応し、破壊的な変更は適用前に影響を報告
自動化
ツール説明
sf_create_flowAssignment、Decision、GetRecords、CreateRecords(項目値を指定)、DeleteRecords、Loop など、任意の Flow タイプを作成します
sf_create_approval_process複数ステップの承認プロセスを作成します
sf_create_validation_ruleデータ検証ルールを作成します
sf_create_workflow_field_updateワークフローの項目更新アクションを作成します
sf_create_email_alertワークフローのメールアラートアクションを作成します
sf_create_platform_eventPlatform Event オブジェクトを作成します
sf_create_assignment_ruleLead/Case の割り当てルールを作成します
sf_create_escalation_ruleCase のエスカレーションルールを作成します
sf_create_auto_response_ruleWeb-to-Lead/Case の自動応答ルールを作成します
sf_create_matching_rule重複レコード照合ルールを作成します
sf_create_duplicate_rule重複レコード検出ルールを作成します
sf_create_apex_email_serviceApex の受信メールサービスを作成します
sf_create_scheduled_jobcron を使用して Apex クラスをスケジュールします
セキュリティとアクセス
ツール説明
sf_create_permission_setすべての権限を含む Permission Set を作成します
sf_create_roleロール階層にロールを作成します
sf_create_queueメンバーとオブジェクトを指定してキューを作成します
sf_create_named_credentialコールアウト用の Named Credential を作成します
sf_get_field_permissionsプロファイルと Permission Set 全体の現在の項目レベルセキュリティ付与を監査します
UI とエクスペリエンス
ツール説明
sf_create_lightning_appナビゲーションバーやユーティリティバーを備えた Lightning アプリを作成します
sf_create_tabオブジェクト用のカスタムタブを作成します
sf_create_compact_layoutコンパクトレイアウト(ハイライトパネル)を作成します
sf_create_list_viewフィルターと列を指定してリストビューを作成します
sf_create_email_templateHTML/テキスト形式のメールテンプレートを作成します
sf_create_static_resourceテキストコンテンツから静的リソースを作成します
sf_create_custom_notification_typeカスタム通知タイプを作成します
sf_create_report_typeカスタムレポートタイプを作成します
sf_create_dashboardコンポーネントを含むダッシュボードを作成します
Apex 開発
ツール説明
sf_create_apex_class任意の Apex クラスを組織にデプロイします
sf_create_apex_trigger任意のオブジェクトに Apex トリガーをデプロイします
sf_create_apex_test_classテストクラスをデプロイし、必要に応じてテストを実行します
sf_run_apex_testsテストクラスを実行し、成功/失敗の結果を取得します
sf_execute_anonymous_apex匿名 Apex を実行し、出力を確認します
sf_get_apex_class既存の Apex クラスのソースを読み取ります
sf_get_apex_trigger既存の Apex トリガーのソースを読み取ります
sf_enable_debug_logsユーザーの Apex デバッグログを有効にします(TraceFlag)
sf_disable_debug_logsApex デバッグログを無効に戻します(有効な TraceFlag を削除します)
sf_get_debug_logs最近の Apex デバッグログを一覧表示します
sf_get_debug_log_bodyデバッグログの全内容を読み取ります
sf_scan_apex_antipatternsSOQL/DML のループ内実行、ハードコードされた ID、デバッグステートメントを対象に、軽量なヒューリスティック検査を行います
sf_run_code_scannerSalesforce Code Analyzer を介して、複数エンジンによる静的解析(PMD、SFGE の SOQL インジェクションのデータフロー解析、RetireJS、ESLint)を実行します
LWC 開発
ツール説明
sf_create_lwcHTML、JS、CSS を含む完全な LWC をデプロイします
sf_update_lwc既存の LWC コンポーネントを更新します
Experience Cloud
ツール説明
sf_create_experience_siteExperience Cloud サイトを作成します
sf_create_experience_pageExperience サイト内にページを作成します
Agentforce
ツール説明
sf_create_agentAgentforce エージェント(Bot シェル)を作成
sf_create_agent_actionフロー/Apex にリンクされたエージェントアクション(GenAiFunction)を作成
sf_create_agent_topicアクションを組み込んだエージェントトピック(GenAiPlugin)を作成
sf_create_agent_plannerエージェントをトピックに接続(GenAiPlanner)— ルーティングに必須
外部連携
ツール説明
sf_create_connected_appOAuth Connected App を作成
sf_create_external_client_appExternal Client App(OAuth)を作成 — Connected App に代わる Salesforce の新しいアプリです。Connected App とは異なり、Client Credentials Flow(Run As ユーザーを含む)をここでは API で設定できます
sf_create_external_data_sourceConnect 用の External Data Source を作成
sf_create_external_objectExternal Object(__x)を作成
sf_create_remote_site_settingコールアウト用に外部 URL を許可リストに登録
sf_create_csp_settingLWC 用の CSP 信頼済みサイトを作成
変更セットとデプロイ
ツール説明
sf_create_outbound_change_setOutbound Change Set を作成
sf_add_to_change_setコンポーネントを変更セットに追加
sf_deploy_metadataMetadata API でメタデータをデプロイ(testLevel、インライン XML に対応)
sf_check_deploy_statusデプロイジョブのステータスを確認
sf_retrieve_metadata組織からメタデータを取得
sf_delete_metadataメタデータコンポーネント(CustomObject、CustomField、Flow、GenAiFunction、Bot など)を完全に削除
MCP サーバー管理
ツール説明
sf_create_mcp_server新しい MCP サーバープロジェクトをディスク上に生成
sf_create_mcp_tool既存の MCP サーバーに新しいツールを追加
sf_list_mcp_toolsMCP サーバープロジェクト内のすべてのツールを一覧表示

プロンプトの例

オブジェクト全体を作成する:

「Project__c というカスタムオブジェクトを作成し、フィールドとして Name(テキスト)、Status__c(選択リスト:Planning/Active/Complete)、Budget__c(通貨)を追加してから、Status が Active の場合に Budget を必須にする入力規則を追加してください。」

Apex をデプロイする:

「OpportunityService という Apex クラスを作成し、Amount > 100000 のすべての Opp をクエリしてください。次に、そのテストクラスを作成してください。」

フローを作成する:

「Opportunity で、保存後に Stage = Closed Won の場合に実行されるレコードトリガーフローを作成してください。所有者にメールアラートを送信し、30 日後が期限のフォローアップ Task を作成してください。」

LWC を設定する:

「accountSummary という Lightning Web Component を作成し、取引先名、業種、年間収益を表示してください。レコードページで使用できるようにしてください。」

Agentforce を設定する:

「SalesAssistant という Agentforce エージェントを作成してください。次に、Get_Account_Orders フローにリンクされた GetOrders アクションを作成してください。続いて、アクションとして [GetOrders] を含む OrderManagement トピックを作成してください。最後に、SalesAssistant を OrderManagement トピックに接続してください。」


環境変数

変数説明必須
SF_INSTANCE_URL組織の URL(例:https://org.salesforce.com)常に
SF_CLIENT_IDConnected App のクライアント IDOAuth の場合
SF_CLIENT_SECRETConnected App のクライアントシークレットOAuth の場合
SF_REFRESH_TOKENOAuth リフレッシュトークンOAuth の場合
SF_ALIASSalesforce CLI の組織エイリアスCLI の場合
SF_ACCESS_TOKEN静的アクセストークン(有効期限は約 1 時間)静的トークンの場合
PORTHTTP サーバーのポート(デフォルト:3000)HTTP モードの場合
TRANSPORTstdio または http(デフォルト:stdio)任意
SF_TOOLSETS起動時に読み込むツールセット:all、none、またはカンマ区切りのリスト(デフォルト:core,metadata)任意
SF_TOOLSETS_VERBOSE起動時にツールセットの一覧全体を stderr に出力するには 1 を設定任意
SF_PRODUCTION_GUARDdestructive(デフォルト)、strict、または off — 下記を参照任意

本番環境での書き込みガード

このサーバーは Salesforce の認証情報を LLM に渡し、それを使って何をするかは LLM が判断します。モデルが処理中に読むあらゆるテキスト――ケースのコメント、項目の説明、取得した .flow ファイル、メール本文など――に指示が含まれている可能性があり、その指示をユーザーが入力したものと見分ける方法は、後続のどの段階にもありません。

そのため、本番組織では、デフォルトで次の 9 つのツールが拒否されます。

本番環境でブロック理由
sf_delete_metadataメタデータと、その中のすべてのレコードを削除します
sf_delete_record、sf_bulk_delete_recordsデータを削除します
sf_execute_anonymous_apex実行後に痕跡を残さない任意のコードです
sf_uninstall_package管理パッケージとそのデータを削除します
sf_create_user、sf_update_user権限を昇格させます
sf_reset_user_password、sf_freeze_userアカウントの乗っ取り/ロックアウトにつながります

メタデータの作成は影響を受けません。 137 個すべての sf_create_* ツール、sf_deploy_metadata、sf_retrieve_metadata は、これまでどおり本番環境で動作します。自然言語でメタデータを作成することがこのパッケージの目的であり、それを制限するガードは無効にされるだけだからです。

Apex の作成(sf_create_apex_class、sf_create_apex_trigger)も、トリガーがすべての DML で実行されるにもかかわらず、ブロックされません。判断基準は監査可能性です。作成された Apex はメタデータであり、名前、作成者、デプロイ記録があるため、見つけて削除できます。sf_execute_anonymous_apex は見つける手がかりを何も残さないため、これだけがブロックされます。

組織が本番環境とみなされるのは、サンドボックスではなく、Developer Edition 組織でもなく、トライアルまたはスクラッチ組織の有効期限切れ状態でもない場合に限られます。サンドボックス、開発用組織、スクラッチ組織が制限の対象になることはありません。

{ "env": { "SF_PRODUCTION_GUARD": "strict" } }   // refuse ALL writes on production
{ "env": { "SF_PRODUCTION_GUARD": "off" } }      // no guard at all

このガードは確認プロンプトではなく、明示的に拒否するものです。呼び出し元のエージェントが自分で承認できるプロンプトは制御にならず、このサーバーはクライアントの権限チェックを回避して実行されることもよくあります。ガードを解除できるのは環境変数だけです。


ドキュメント

  • SETUP.md — 前提条件、認証、Claude の設定
  • TOOLS.md — 228 個すべてのツールと、パラメーターの詳細なドキュメント
  • AGENTFORCE.md — Agentforce エージェントの作成ガイド
  • APEX_LWC.md — Apex および LWC の開発ガイド
  • CHANGELOG.md — バージョン履歴

バグと機能リクエスト

バグを見つけた場合や、新しいツールを希望する場合は、issue を作成してください。バグ報告と機能リクエスト用のテンプレートがあります。投稿する際は、パッケージのバージョンとツール名を記載し、組織の URL や認証情報は必ず削除してください。


ライセンス

MIT

コメント

MCP は初めてですか?

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

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