mcpField
S
sfmc-mcp-server

sfmc-mcp-server

ローカル
github.com/Inefavelビジネス・マーケティング016 週間前に更新

sfmc-mcp-server について

sfmc-mcp-serverは、Salesforce Marketing Cloudの運用担当者向けMCPサービスです。Automation StudioのクエリをSFMCの方言ルールと実際のData Extensionスキーマに照らして検証し、メタデータとレコードを読み取れます。

主な機能

  1. 01SQL方言ルールとスキーマの検証
  2. 02Data Extensionsとフィールドの一覧表示
  3. 03拡張レコードの絞り込みとページ分割
  4. 04読み取り専用を既定とする監査ログ

活用シーン

  1. 01オートメーション実行前のQuery Activity検証
  2. 02データ拡張とフィールドスキーマの確認
  3. 03条件を指定した拡張レコードの確認

MCP 対応

stdio経由で、Salesforce Marketing Cloudのクエリ検証、Data Extensions一覧、レコード検索ツールをClaudeなどのクライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"inefavel-sfmc": {
"command": "npx",
"args": [
"-y",
"sfmc-mcp-server"
],
"env": {
"SFMC_SUBDOMAIN": "<SFMC_SUBDOMAIN>",
"SFMC_CLIENT_ID": "<SFMC_CLIENT_ID>",
"SFMC_CLIENT_SECRET": "<SFMC_CLIENT_SECRET>",
"SFMC_ACCOUNT_ID": "<SFMC_ACCOUNT_ID>",
"SFMC_MODE": "<SFMC_MODE>"
}
}
}
}
起動コマンドnpx -y sfmc-mcp-server
設定が必要な環境変数
SFMC_SUBDOMAINSubdomínio da instância SFMC (a parte antes de .auth.marketingcloudapis.com)
SFMC_CLIENT_IDClient ID do Installed Package (API Integration Server-to-Server)
SFMC_CLIENT_SECRETシークレットClient Secret do Installed Package
SFMC_ACCOUNT_IDMID da Business Unit alvo (opcional; usa a BU padrão do package se omitido)
SFMC_MODEModo de operação: "read" (padrão) ou "write"

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

パッケージ
npmsfmc-mcp-server0.2.1

ツール

3

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

パラメーター型必須説明
pageintegerいいえ結果ページ(1 から開始)。
pageSizeintegerいいえページあたりの項目数(最大 100)。
nameFilterstringいいえDE 名の部分一致フィルター(大文字と小文字を区別しません)。例:'master' は 'Master_Contacts' に一致します。
includeFieldsbooleanいいえtrue の場合、各 DE のフィールド一覧(名前、型、サイズ、PK、nullable)を含めます。

詳細

SFMC MCP Server

Claude(または任意の MCP クライアント)を Salesforce Marketing Cloud に接続します。Data Extension を探索し、レコードを照会し、Automation Studio のクエリを実行前に検証できます。

npm version License: MIT


問題点

SFMC を運用している方なら、よくある状況をご存じでしょう。Query Activity を作成して保存し、自動化を実行すると、30 分後に EmailAddress ではなく EmailAdress と入力したことに気づきます。または、Automation Studio の方言ではサポートされていない ORDER BY を使っていたり、出力列が出力先の DE に存在しなかったりします。

SFMC のフィードバックループは数十分単位です。この MCP サーバーを使えば、数秒に短縮できます。

できること

ツール解決すること
validate_sqlQuery Activity を実行する前に検証します。SFMC の制限付き方言のルールと、DE および列が実際に存在するかどうかを確認します
list_data_extensionsメタデータ、名前によるフィルター、ページネーション、完全なスキーマを含む DE の一覧を取得します
query_data_extensionフィルター、並べ替え、ページネーションを指定してレコードを照会します
validate_sql の動作例
Você: valide essa query pra mim

SELECT c.SubscriberKey, c.EmailAdress, c.LastPurchaseDate
FROM Customers_Master c
ORDER BY c.CreatedDate DESC
❌ INVÁLIDA — 3 erro(s) bloqueante(s).

1. ORDER BY não é suportado em Query Activities do SFMC. [linha ~3]
   → Se precisar de ranking, use ROW_NUMBER() OVER (ORDER BY ...) em subquery.

2. A coluna "EmailAdress" não existe na DE "Customers_Master".
   → Você quis dizer "EmailAddress"?

3. A coluna "LastPurchaseDate" não existe na DE "Customers_Master".
   → Campos disponíveis: SubscriberKey, EmailAddress, FirstName, Status, CreatedDate

検出できる項目:

方言のルール — ORDER BY、CTE(WITH)、MERGE、DML/DDL、変数(DECLARE @)、一時テーブル(#temp)、カーソル、ストアドプロシージャ、FULL OUTER JOIN、括弧の不一致、リスクのある SELECT *、サーバーのタイムゾーンでの GETDATE()。

実際のスキーマとの照合 — 存在しない DE、存在しない列(編集距離に基づく修正候補を提示)、宣言されていないエイリアス、出力先の DE と互換性のない出力列、SELECT に含まれていない出力先の PK(SFMC で最もコストの高いサイレントエラー)。


インストール

npx sfmc-mcp-server

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

npm install -g sfmc-mcp-server

設定

1. SFMC で Installed Package を作成する

Setup → Apps → Installed Packages → New → Add Component → API Integration (Server-to-Server)

最低限必要な権限(読み取り専用):

  • Data Extensions:Read
  • Automations:Read

Client ID、Client Secret、およびサブドメイン(.auth.marketingcloudapis.com より前の部分)を控えてください。

2. Claude Desktop を設定する

~/Library/Application Support/Claude/claude_desktop_config.json(macOS) %APPDATA%\Claude\claude_desktop_config.json(Windows)

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "sfmc-mcp-server"],
      "env": {
        "SFMC_SUBDOMAIN": "mcXXXXXXXXXXXXXXXXXXXXXX",
        "SFMC_CLIENT_ID": "seu_client_id",
        "SFMC_CLIENT_SECRET": "seu_client_secret",
        "SFMC_MODE": "read"
      }
    }
  }
}

Claude Desktop を再起動すれば完了です。

複数の Business Unit

BU ごとにエントリーを作成し、それぞれの SFMC_ACCOUNT_ID(MID)を指定します。

{
  "mcpServers": {
    "sfmc-varejo": {
      "command": "npx",
      "args": ["-y", "sfmc-mcp-server"],
      "env": { "SFMC_ACCOUNT_ID": "1234567", "...": "..." }
    },
    "sfmc-b2b": {
      "command": "npx",
      "args": ["-y", "sfmc-mcp-server"],
      "env": { "SFMC_ACCOUNT_ID": "7654321", "...": "..." }
    }
  }
}

使用例

  • 「このクエリを出力先の DE Active_Buyers と照合して検証して」 → 30 分を無駄にする前にエラーを指摘します
  • 「名前に 'master' が含まれる DE をフィールドとともに一覧表示して」 → Contact Builder を開かずに完全なスキーマを確認できます
  • 「Customers_Master には有効なレコードがいくつある?」 → フィルターを指定して直接照会します
  • 「この DE に主キーはある? NOT NULL のフィールドはどれ?」 → 数秒でスキーマを監査できます

セキュリティ

  • デフォルトでは読み取り専用です。 SFMC_MODE=read がデフォルトです。書き込みツール(ロードマップ)は、SFMC_MODE=write の場合にのみ登録されます。
  • 認証情報は環境変数を通じてのみ渡します。 コミットされることも、ディスクに保存されることもありません。
  • 監査ログ。 すべてのツール呼び出しはタイムスタンプと引数とともに stderr に出力されます。ポリシーに応じてファイルまたはコレクターにリダイレクトしてください。
  • データを保持しません。 サーバーは SFMC のデータを永続化しません。

アーキテクチャ

src/
├── index.ts               # Entry point — registra tools, transporte stdio
├── auth.ts                # OAuth client_credentials, cache de token (~20 min)
├── sfmcClient.ts          # REST client com retry exponencial (429/5xx)
└── tools/
    ├── validateSql.ts     # Regras do dialeto + validação contra schema real
    ├── listDataExtensions.ts
    └── queryDataExtension.ts

実装の詳細:

  • トークンをキャッシュし、有効期限の 60 秒前を余裕として扱います(SFMC のトークンは約 18〜20 分で期限切れになります)
  • 429/5xx に対して指数バックオフで再試行します。SFMC は負荷が高いと簡単にスロットリングします
  • 認証は遅延実行されます。認証情報がなくてもサーバーは起動し、最初のツール呼び出し時に検証します
  • クエリではページネーションを必須とし、モデルのコンテキストを超えないよう最大 50 行に制限します

ロードマップ

  • get_automation_status — ステータスと実行履歴
  • list_journeys — アクティブなジャーニー、バージョン、メトリクス
  • get_send_stats — 開封、クリック、バウンス
  • upsert_rows — チェックポイント/再開パターンによる書き込み(write モード)
  • SOAP 経由で Parent BU の Shared Data Extensions をサポート

既知の制限事項

  • validate_sql は、Automation Studio の既知の制約とテーブル/列の存在を検証します。論理的な正しさやパフォーマンスは保証しません。
  • 共有 DE(ENT.)はスキーマに対して検証されません。Parent BU にあり、現在の BU の REST の対象外です。
  • 修飾されていない列(alias. プレフィックスのない列)は、複数の JOIN を含むクエリでは検証されません。これを解決するには、完全な SQL パーサーが必要です。
  • /data/v1/customobjects エンドポイントは比較的新しいものです。古いリリースのインスタンスでは、SOAP へのフォールバックが必要になる場合があります。

貢献

PR を歓迎します。最も効果の大きい領域は、ロードマップにあるツールと SFMC 方言の新しい検証ルールです。Automation Studio に拒否される構文に時間を取られたことがある場合は、その事例を添えて issue を作成してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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