mcpField
M
mcp-server-sfmc

mcp-server-sfmc

ローカル
github.com/JoernBerkefeld開発ツール52 週間前に更新

mcp-server-sfmc について

mcp-server-sfmcは、AMPscript、SSJS、GTLを扱うSalesforce Marketing Cloud開発者向けの言語ツールと検索可能なドキュメントを提供します。Marketing Cloud Nextの互換性チェック、Handlebarsの検証、移行にも対応します。

主な機能

  1. 01AMPscriptとSSJSの検証と補完
  2. 02MCEとMCNのドキュメント検索
  3. 03MCN互換性の確認とコード移行
  4. 04Handlebarsテンプレートの検証と変換
  5. 05変更行を対象とした差分レビュー

活用シーン

  1. 01Marketing Cloudコードの作成やレビュー
  2. 02MCN移行に向けたプロジェクト準備状況の評価
  3. 03MCE管理情報やMCN開発ドキュメントの検索

MCP 対応

言語検証、検索、コードレビュー、移行のツール、リソース、プロンプトをMCPクライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"joernberkefeld-mcp-server-sfmc": {
"command": "npx",
"args": [
"-y",
"mcp-server-sfmc"
]
}
}
}
起動コマンドnpx -y mcp-server-sfmc

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

パッケージ
npmmcp-server-sfmc2.10.1

ツール

28

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

パラメーター型必須説明
codestringはい検証する AMPscript コード。HTML コンテキストを含めることができます。
targetenumいいえ対象プラットフォーム。'next' を指定すると、Marketing Cloud Next でサポートされない AMPscript 関数にフラグを付けます。engagement | next
maxProblemsintegerいいえ返す問題の最大数(デフォルト:100)。

詳細

mcp-server-sfmc

Salesforce Marketing Cloud の言語インテリジェンス(AMPscript、SSJS、GTL、Marketing Cloud Next(MCN)Handlebars)を、AI 支援による開発やコードレビュー向けの Model Context Protocol ツール、リソース、プロンプトとして提供する MCP サーバーです。検索可能なドキュメントインデックスを2つ収録しています。MCE ヘルプ(Marketing Cloud Engagement の管理とセットアップに関する Salesforce Help)と、MCN 開発者向けドキュメント(Marketing Cloud Next の REST API と開発者向けリファレンス)です。Marketing Cloud Next(MCN)プラットフォームに完全対応し、プロジェクトの対象が MCE か MCN かを自動検出し、補完と検証を MCN がサポートする関数に限定し、SSJS が MCN でサポートされていないことを警告し、ホバーと診断で MCN の動作の違いを提示し、MCN Handlebars テンプレートを検証します。また、AMPscript ↔ Handlebars および SSJS → Handlebars の変換を含む、MCN 向けのコード分析と書き換えを行う移行ツールキットも提供します。

sfmc-language-lsp を基盤としており、SFMC Language Service VS Code 拡張機能と同じエンジンを使用しています。

共有診断の移行

sfmc-language-lsp 4.0.0 では、共有バリデーターコードが正規の sfmc/... ID に変更され、名前空間付きエンベロープでクイックフィックスのバリエーションと元のペイロードが保持されます。LSP の移行とルールに関するドキュメントをご覧ください。ドキュメントの URL は、この MCP パッケージではなく LSP のバージョンに紐づいています。

コンシューマーの回帰テストでは、正規の SSJS 診断、異なるポリフィル/置換ペイロード、重複抑制を確認します。これは新しい MCP ツールではなく、すべてのツールの応答で生の LSP 診断が公開されることを保証するものでもありません。

バージョン 2.10.0 では、npm の ampscript-data: ^4.2.0 と sfmc-language-lsp: ^4.2.0 を採用しています。この Winter ’27(API 68)のカタログ更新により、最新の AMPscript と共有言語サービスのメタデータを MCP クライアントで利用できるようになります。MCP の検証とレビューの出力では、引き続き位置、重大度、メッセージを整形して表示し、生の LSP コードやエンベロープは公開しません。

VS Code MCP サーバーギャラリー(@mcp)

このパッケージは公式 MCP Registryに io.github.JoernBerkefeld/mcp-server-sfmc として登録されているため、Visual Studio Code の拡張機能ビューで @mcp フィルターを使用すると表示されます(公開クイックスタートをご覧ください)。ギャラリーが表示されない場合は、chat.mcp.gallery.enabled を有効にしてください。

レジストリに保存されるのはメタデータのみです。サーバーは引き続き stdio 経由でローカル実行されます(例:npx -y mcp-server-sfmc@latest)。これは、MCP 定義を提供する VS Code 拡張機能を一覧表示する @contribute:mcp とは別の機能です。この方法を利用する場合は、SFMC Language Service を使用してください。

メタデータを公開した後(MCP サーバーの公開またはリリースワークフローをご覧ください)、次のコマンドで登録内容を確認できます。

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.JoernBerkefeld/mcp-server-sfmc"

MCP の手動設定なしで VS Code を使用する

SFMC Language Service 拡張機能(1.101+)を使用している場合、この MCP サーバーは VS Code で検出できるように登録されます。この方法では通常、.vscode/mcp.json を編集したり npm install を実行したりする必要はありません。サーバーの起動時には、引き続き VS Code が公開済みパッケージを npx 経由で起動します。

その他のエディターを使用する場合、または明示的に設定する場合は、以下の npx またはインストールのオプションを使用してください。

VS Code 拡張機能を使わずにこのパッケージを使用する

VS Code 拡張機能をインストールする必要はありません。次のいずれかの方法でサーバーを実行してください。

方法使用する場面
npx(インストール不要)以下の例でのデフォルトです。npm から公開済みの最新バージョンをオンデマンドで実行します。初回の実行時にパッケージがダウンロードされる場合があります。Node.js と npm(npx を提供)が必要です。
npm install -g mcp-server-sfmcnpx と同じ CLI ですが、パッケージがディスク上に保持されるため、起動が速くなります。また、MCP 設定で args を空にして "command": "mcp-server-sfmc" を設定できます。
プロジェクト内での npm install mcp-server-sfmcそのフォルダーの node_modules に固定バージョンを保持します。MCP 設定で cwd をプロジェクトに設定して npx mcp-server-sfmc を指定するか、./node_modules/.bin/mcp-server-sfmc を直接実行してください。
sfmc-review-diff(同梱 CLI)CI 向けです。この MCP サーバーを起動し、統一差分(標準入力またはファイル)に対して review_change を呼び出します。デフォルトでは ERROR の場合にゼロ以外の終了コードを返します。ジョブにパッケージをインストールしてから、たとえば git diff base...HEAD | npx sfmc-review-diff を実行してください。

これらはいずれも、編集(構文、LSP、スニペット)向けの VS Code 拡張機能の代わりにはなりません。Model Context Protocol に対応したツールにMCP サーバーを提供するだけです。

CI テンプレートと sfmc-review-diff

すぐにコピーして使えるワークフロー(GitHub Actions、GitLab CI、Jenkins、Azure Pipelines、Bitbucket Pipelines)が ci-templates/ にあります。変更されたファイルに対して eslint-plugin-sfmc を実行し、PR/MR の統一差分に対して sfmc-review-diff を実行します。各ファイルの動作と、2 つのチェックの違いについては ci-templates/README.md を参照してください。

AI アシスタントでできること

機能詳細
検証構文エラー、未知の関数、引数の数の不一致、サポートされていないSSJS構文を検出します。target: 'next'を指定すると、MCNと互換性のない関数およびすべてのSSJSにフラグを付けます。validate_handlebarsはMCN Handlebarsヘルパー名、引数の数、ブロックの整合性、サポートされていない構文をチェックします
検索関数の完全なシグネチャ、パラメーター、戻り値の型、MCN互換性バッジ(APIバージョン)、動作に関する注記、使用例を表示します
PRレビュー変更箇所を認識するレビュー ツールです。変更された正確な行に問題を提示します
修正案具体的でコンパイル可能な置き換えコードを提示します。target: 'next'を指定すると、MCNプラットフォームに関する問題も提示します
補完AMPscriptの補完(target: 'next'を指定するとMCNでサポートされるものに絞り込みます)。SSJSカタログ(MCN向けにはAMPscriptに誘導します)
プラットフォーム検出detect_sfmc_platformは、プロジェクトのルートにある.mcdevrc.json(MCE)またはsfdx-project.json(MCN)をチェックします
MCN互換性分析check_mcn_compatibilityは、ファイルのMCN対応状況を分析します。関数ごとの分類(サポート対象/要確認/非対応)、SSJSブロックの移行難易度、エグゼクティブサマリーを提示します
MCNへの移行rewrite_for_mcn(ツール+プロンプト)は、AMPscriptを決定論的に書き換え、変換可能なSSJSをMCN向けのAMPscriptに変換した後、残りの手動書き換えが必要なセクションにAI推論を適用します
コード変換convertSsjsToAmpscriptとconvertAmpscriptToSsjs(ツール+プロンプトのハイブリッド)— フラグが付いたセクションをAIで拡張処理するルールベースの変換
MCN Handlebarshandlebars-dataカタログを基にしたlookup_handlebars_helper、list_handlebars_helpers、get_handlebars_completions、write_handlebars(作成)
Handlebars変換convertAmpscriptToHandlebars、convertHandlebarsToAmpscript、convertSsjsToHandlebars(ツール+プロンプトのハイブリッド)— ampscript-dataのhandlebarsEquivalent/handlebarsExactに基づくデータ駆動型変換
プロンプトAMPscript/SSJS/Handlebarsの作成(MCNの制約に対応)、コードレビュー、言語間の変換、MCN向けの書き換えをガイドするプロンプト
リソース関数カタログ一式、キーワード一覧、サポートされていないES6以降の構文一覧、MCN Handlebarsヘルパーおよびバインディングのカタログ
ヘルプ検索search_help(統合検索。プロジェクトのルートからMCEかMCNかを自動検出します)。search_mce_help(MCEヘルプ、7つの製品スコープ)。search_mcn_help(MCN開発者向けAPIリファレンス)
混在 HTML の検証境界

バージョン 2.10.1 以降、validate_sfmc_html は埋め込み AMPscript/GTL を検証し、SSJS チェックは実際のサーバー JavaScript 本文(runat="server"。AMPscript の script 本文を除く)にのみ適用します。ブラウザーのスクリプトや JavaScript 以外のスクリプトデータは、SSJS バリデーターに渡されません。サーバーの診断結果は元の HTML 内の位置を保持し、ブラウザーの宣言、Core の読み込み、ポリフィルによってサーバーの警告が抑制されることはありません。サーバー JavaScript を含まない HTML は、target が 'next' であるという理由だけで SSJS の非互換エラーを受けることはありません。

このツールは、ブラウザー JavaScript の検証や DOM/型の診断には対応していません。スタンドアロンの validate_ssjs ツールは、従来のターゲットプラットフォームに関する動作で、引き続き生の SSJS を検証します。

この境界では、sfmc-language-lsp 4.3.1 以降で公開されている validateMixedDocumentSsjs API を使用します。バージョン 2.10.1 では依存関係の下限が ^4.3.1 に引き上げられます。リリース検証では、レジストリのみを使用したクリーンインストールを実施します。

AI クライアントへの接続

VS Code(1.99 以降)+ GitHub Copilot — mcp.json の手動設定

SFMC Language Service 拡張機能の組み込み MCP 登録を使用していない場合は、プロジェクトに .vscode/mcp.json ファイルを追加します(またはこのリポジトリからコピーします)。

{
  "servers": {
    "sfmc": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    }
  }
}

VS Code でファイルを開くと、上部に Start ボタンが表示されます。クリックしてサーバーを起動します。GitHub Copilot Chat を Agent mode で開くと、SFMC ツールが自動的に表示されます。

Cursor

Cursor の設定(~/.cursor/mcp.json またはプロジェクトレベルの .cursor/mcp.json)に追加します。

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    }
  }
}

Cursor を再起動します。ツールは Agent mode で使用できます。

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加します。

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    }
  }
}

Claude Desktop を再起動します。

Windsurf

Windsurf の MCP 設定(~/.codeium/windsurf/mcp_config.json)に追加します。

{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    }
  }
}
ローカルインストール(npx より起動が高速)
npm install -g mcp-server-sfmc

次に、"command": "npx", "args": ["-y", "mcp-server-sfmc@latest"] を以下に置き換えます。

"command": "mcp-server-sfmc",
"args": []

ツール

ツール説明
validate_ampscriptAMPscript コードを検証します — 不明な関数、引数の数、区切り文字の対応、コメント構文を確認します。target: 'next' を指定すると、MCN 非対応の関数を警告します。
validate_ssjsSSJS を検証します — ES6 以降の構文、Platform.Load の欠落、不正な API 呼び出しを確認します。target: 'next' を指定すると、すべての SSJS を非対応として警告します。
validate_sfmc_htmlAMPscript、SSJS、GTL ブロックを含む HTML を検証します。target: 'next' を指定すると、MCN 検証が有効になります。
lookup_ampscript_function完全なシグネチャ、パラメーター、戻り値の型、MCN 互換性バッジ(API バージョン)、MCN での動作に関する注記、および例を表示します。
lookup_ssjs_functionSSJS Platform 関数またはメソッドの完全なシグネチャと説明を表示します。
list_ampscript_functionsすべての AMPscript 関数を一覧表示します。platform: 'next' で絞り込むと、MCN 対応関数のみを返します。
review_change統一差分をレビューします — 追加された行のみを検証し、差分の行番号に対応付けます。
suggest_fixコードスニペット内の各診断に対する修正案を生成します。target: 'next' を指定すると、MCN 向けの修正案も含まれます。
get_ampscript_completions指定したカーソル位置で有効な補完候補を一覧表示します。target: 'next' を指定すると、MCN 非対応の関数に [MCE only] を付けます。
get_ssjs_completionsSSJS Platform API の補完候補を一覧表示します。プレフィックスで絞り込むこともできます。target: 'next' を指定すると、AMPscript の補完候補に切り替わります。
format_sfmc_code基本的な書式規則を適用します(キーワードの大文字・小文字、引用符の正規化)。
detect_sfmc_platformプロジェクトの対象プラットフォームを検出します — .mcdevrc.json(→ "engagement")または sfdx-project.json(→ "next")を確認します。
check_mcn_compatibility1 つ以上の AMPscript/HTML ファイルについて、MCN 対応状況を分析します。関数ごとの分類、SSJS ブロックの移行難易度、および移行作業全体の見積もりを含む概要を返します。rewrite_for_mcn の前に実行してください。
rewrite_for_mcn決定論的な MCN 書き換えエンジンです。.NET → Java の書式文字列を修正し、StringToDate ラッパーを削除し、変換可能な SSJS を AMPscript に変換し、非対応関数に印を付け、その他の箇所に MANUAL_REWRITE_REQUIRED の注記を付けます。対話的な利用には rewrite_for_mcn プロンプトを優先してください。このプロンプトはまずこのツールを呼び出し、その後、AI による推論を適用して印の付いた箇所を処理します。構造化された JSON 出力をパイプラインで使用する場合に限り、ツールを直接使用してください。
convertSsjsToAmpscriptルールベースの SSJS → AMPscript 変換エンジンです。Platform.Function.* を AMPscript の同等機能に変換し、変数やリクエストへのアクセス、制御フローも変換します。JavaScript 固有の構文には MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertSsjsToAmpscript プロンプトを優先してください。
convertAmpscriptToSsjsルールベースの AMPscript → SSJS 変換エンジンです。変数、制御フロー、関数呼び出しを変換します。AMPscript 専用の構文には MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertAmpscriptToSsjs プロンプトを優先してください。
validate_handlebarsMCN Handlebars テンプレートコードを検証します — ヘルパー名、引数の数、ブロックの対応、および非対応の構文(パーシャル、デコレーター、制限された MCN エンジンに含まれない組み込みヘルパー)を確認します。
lookup_handlebars_helperMCN Handlebars ヘルパー 1 つのシグネチャ、パラメーター、説明、由来、および MCN API バージョンを表示します(大文字・小文字を区別しません)。
list_handlebars_helpersすべての MCN Handlebars ヘルパーを一覧表示します。category および/または origin(handlebars-builtin、mcn-helper、mcn-platform)で絞り込むこともできます。
get_handlebars_completionsMCN Handlebars ヘルパーの補完候補を一覧表示します。プレフィックスで絞り込むこともできます。
convertAmpscriptToHandlebarsルールベースの AMPscript → MCN Handlebars 変換です。同等の機能がある場合は関数をヘルパーに対応付け、非対応関数や実行時の制約には MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertAmpscriptToHandlebars プロンプトを優先してください。
convertHandlebarsToAmpscriptルールベースの MCN Handlebars → AMPscript 変換です。ヘルパーとバインディングを AMPscript に戻して対応付け、ブロックヘルパーには MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertHandlebarsToAmpscript プロンプトを優先してください。
convertSsjsToHandlebarsSSJS → AMPscript → MCN Handlebars の連続変換です。命令型の SSJS は、慎重に判断して手動書き換えが必要であることを示します。対話的な利用には convertSsjsToHandlebars プロンプトを優先してください。
write_handlebarsMCN Handlebars を使用した HTML の下書きを、ヘルパーカタログに照らして検証します。作成時には writeHandlebars プロンプトを優先してください。
search_help統合ヘルプ検索 — projectRoot からプラットフォームを自動検出し、適切なドキュメントインデックスに振り分けます。MCN プロジェクトでは、開発者向け API リファレンスと MCN 管理者向けドキュメントの両方を検索します。検出結果を上書きするには target を渡してください。
search_mce_help同梱されている Marketing Cloud Engagement のセットアップ/運用ヘルプを検索します。product_focus を使用して、Engagement と Next のどちらを対象とするか指定します。
search_mcn_help同梱されている Marketing Cloud Next の開発者向け API ドキュメントを検索します(オブジェクト、フロー、セグメント、REST/SOAP API、MCN での AMPscript の動作)。

リソース

URI説明
sfmc://ampscript/functionsシグネチャを含むAMPscript関数の完全なカタログ
sfmc://ssjs/functionsSSJS関数の完全なカタログ
sfmc://ampscript/keywordsすべてのAMPscriptキーワード
sfmc://ssjs/unsupported-syntaxSFMC SSJSでサポートされていないES6以降の機能
sfmc://handlebars/helpersシグネチャ、由来、MCN APIバージョンを含むMCN Handlebarsヘルパーの完全なカタログ
sfmc://handlebars/bindingsMCN Handlebarsデータバインディング(テンプレートで使用できるコンテキスト変数)
sfmc://mce/product-contextMarketing Cloud EngagementとMarketing Cloud Nextの違い(どちらを使うべきか)
sfmc://mce/help-indexバンドルされているMCEヘルプファイルの一覧と、製品スコープごとのセクション数
sfmc://mcn/help-indexバンドルされているMCN開発者APIドキュメントファイルの一覧とチャンク数

プロンプト

VS Codeの/mcp.sfmc.writeAmpscriptなどからアクセスするか、プロンプトAPIを使用します。

プロンプト説明
writeAmpscript説明されたタスク向けの AMPscript コードを生成します。target: 'next' は MCN の制約(MCN でサポートされている関数のみ、Java の SimpleDateFormat パターン、SSJS は使用不可)を適用します。
writeSsjs説明されたタスク向けの SSJS コードを生成します。target: 'next' は代わりに AMPscript に切り替えます(MCN では SSJS を使用できません)。
reviewSfmcCodeAMPscript または SSJS コードのバグとベストプラクティス違反をレビューします。target: 'next' は MCN 互換性チェックリストを追加します。
rewrite_for_mcnMCN 移行の主要インターフェイスです。 まず rewrite_for_mcn ツールを内部で呼び出して、ルールに基づくすべての書き換えを行い、次に MANUAL_REWRITE_REQUIRED セクションごとに AI 推論を適用します。これにより、説明文による変更履歴付きの、完全に移行されたコードブロックを 1 つ生成します。ルールベースの処理と AI 処理を常に 1 回で実行できます。
convertSsjsToAmpscriptSSJS → AMPscript 変換の主要インターフェイスです。 まず convertSsjsToAmpscript ツールを内部で呼び出してルールベースの変換を行い、次にルールで処理できなかったセクションについて AI 推論を適用します。
convertAmpscriptToSsjsAMPscript → SSJS 変換の主要インターフェイスです。 まず convertAmpscriptToSsjs ツールを内部で呼び出してルールベースの変換を行い、次に AMPscript 専用としてフラグ付けされた構文に AI 推論を適用します。
writeHandlebars説明されたタスク向けに MCN Handlebars-in-HTML を生成し、ロックダウンされた MCN ヘルパーカタログの範囲内に制限します。ドラフトを handlebars-data に照らして検証し、サポートされていない構文を報告します。
convertAmpscriptToHandlebarsAMPscript → MCN Handlebars 変換の主要インターフェイスです。 まず convertAmpscriptToHandlebars ツールを内部で呼び出してルールベースの変換を行い、次に Handlebars に相当するものがない関数(ランタイムの機能不足や未サポートの関数)について AI 推論を適用します。
convertHandlebarsToAmpscriptMCN Handlebars → AMPscript 変換の主要インターフェイスです。 まず convertHandlebarsToAmpscript ツールを内部で呼び出してルールベースの変換を行い、次にブロックヘルパーやルールで処理できなかった構文について AI 推論を適用します。
convertSsjsToHandlebarsSSJS → MCN Handlebars 変換の主要インターフェイスです。 推移的な変換(SSJS → AMPscript → Handlebars)を行います。convertSsjsToHandlebars ツールを呼び出し、手動での書き換え対象としてフラグ付けされた命令型 SSJS に AI 推論を適用します。
answerMceHowTo管理者やセットアップに関する質問向けのガイド付きプロンプトです。バンドルされたヘルプを検索し、Engagement と Next を明確に区別します。

Marketing Cloud Next へのコードの移行

Marketing Cloud Next(MCN)は、155 個の AMPscript 関数のうち 41 個をサポートしており、SSJS はサポートしていません。サポート対象の関数のうち 3 個には、動作の違いがあります(下記参照)。移行ツールキットを使うと、分析から完全に書き換えた結果まで、移行を進められます。

推奨ワークフロー
1. detect_sfmc_platform  →  confirm the project targets MCN
2. check_mcn_compatibility  →  understand scope: which files need work, how hard
3. rewrite_for_mcn prompt  →  calls the rewrite_for_mcn tool internally, then applies AI
                               reasoning to any MANUAL_REWRITE_REQUIRED sections
4. validate_ampscript with target:'next'  →  verify the rewritten code is clean
check_mcn_compatibility の結果

1 つ以上の { filename, content } ペアを渡すと、次の結果が返されます。

  • 関数ごとの分類:AMPscript のすべての呼び出し箇所を分類します。
    • ✅ サポート対象 — そのまま動作します
    • ⚠️ 要確認 — サポート対象ですが、MCN では動作に違いがあります
    • ❌ サポート対象外 — MCN に相当するものがありません
  • SSJS ブロックの分析 — 「変換が必要」(AMPscript に相当するものがある)または「移行不可」(try/catch、forEach、正規表現などの JS ネイティブ構文を使用)に分類します
  • ファイルごとの移行難易度 — 対応不要/軽微な変更が必要/大幅な書き換え/移行不可
  • すべてのファイルの概要
rewrite_for_mcn の動作

rewrite_for_mcn プロンプトを使用してください。これが主要なインターフェースであり、1 回の手順で完全な結果が得られます。まず、すべての決定的な書き換えを行うために、内部で rewrite_for_mcn ツールを呼び出します。その後、ツールでは機械的に処理できなかったすべてのセクションに AI の推論を適用します。別々に呼び出すことなく、ルールベースの変換の正確性と AI による処理能力の両方を活用できます。

決定的な書き換え(ツールが内部で処理):

  • FormatDate() の呼び出しから StringToDate() のラッパーを削除します(FormatDate(StringToDate(@x), fmt) → FormatDate(@x, fmt))
  • .NET → Java SimpleDateFormat の書式文字列を変換します(例:tt → a)
  • 検索引数の数が奇数の Lookup() 呼び出しに注記を付けます
  • MCE 専用の AMPscript 関数に %%-- NOT SUPPORTED IN MCN %% を付けます
  • 変換可能な SSJS ブロックを AMPscript に変換します(Platform.Function.* → AMPscript の相当機能、Platform.Variable.GetValue/SetValue → @variable 参照)
  • JS ネイティブの SSJS 構文(try/catch、配列メソッド、正規表現、複雑なロジック)に MANUAL_REWRITE_REQUIRED のフラグを付けます

AI 推論レイヤー(プロンプトによって追加): MANUAL_REWRITE_REQUIRED の各セクションについて、プロンプトは AMPscript と SSJS の知識を使って完全な変換を試みるよう AI に指示します。その後、すべての変更を網羅する文章形式の変更履歴とともに、書き換え後のコードブロックを 1 つ出力します。

パイプラインおよびプログラムからの使用: AI レイヤーを介さずに構造化 JSON 出力({ rewrittenCode, changes[], nonMigratableItems[], difficulty, summary })が必要な場合は、rewrite_for_mcn ツールを直接呼び出してください。たとえば、結果を別のツールに渡す CI ステップで利用できます。

同じハイブリッド方式は convertSsjsToAmpscript と convertAmpscriptToSsjs にも適用されます。対話的に使用する場合は常にプロンプトを使用し、パイプラインで構造化出力が必要な場合はツールを使用してください。

注意すべきMCNの動作の違い
関数違い
FormatDateMCNでは.NETではなく、**JavaのSimpleDateFormat**パターンを使用します。例:.NET "M/d/yyyy h:mm:ss tt" → Java "M/d/yyyy h:mm:ss a"
Lookup検索引数は列と値のペアで指定する必要があります。MCNでは、引数の数が奇数だとエラーになります。すべてのフィルターキーで複合主キー全体を指定する必要があります。
StringToDateMCNでは、dateTimeオブジェクトではなく、ロケール形式の文字列(G標準形式、例:"5/15/2026 1:23:45 PM")を返します。MCNではFormatDate()に確実に渡すことができません。代わりに、元の日付文字列に対して直接FormatDate()を使用してください。
CloudPages関数 — 移行不可

CloudPagesのコンテキストに依存する関数(CloudPagesURL、RequestParameter、QueryParameter、Redirect、MicrositeURL)には、Marketing Cloud Nextに相当する機能がありません。check_mcn_compatibilityとrewrite_for_mcnは、これらを直ちに移行不可として判定します。

MCN Handlebars

Marketing Cloud Nextには、AMPscriptと並んで制限されたHandlebarsテンプレートレイヤー(Handlebars.Net)が組み込まれています。サーバーでは、完全なヘルパーカタログと変換ツールを公開しています。すべてhandlebars-dataとampscript-dataのhandlebarsEquivalent/handlebarsExactフィールドからデータ駆動で生成されており、手作業で維持されているものはありません。

作成と検索
1. list_handlebars_helpers       →  browse the catalog (filter by category / origin)
2. lookup_handlebars_helper      →  signature, parameters, origin, MCN API version
3. get_handlebars_completions    →  prefix-filtered completions
4. writeHandlebars prompt        →  generate Handlebars-in-HTML, validated against the catalog
5. validate_handlebars           →  helper names, arity, block balance, unsupported constructs

validate_handlebarsは、MCNエンジンが実装していない構文(パーシャル({{> name}})、デコレーター({{#* ...}})、制限されたランタイムに存在しない組み込みヘルパー)を拒否します。

変換カテゴリ

AMPscriptからHandlebarsへの変換では、ampscript-dataのすべての関数が次のように分類されます。

カテゴリ条件(ampscript-data内)出力
完全一致handlebarsEquivalentが設定され、かつhandlebarsExact !== false正規のMCN Handlebarsヘルパーにマッピングされます
近似handlebarsEquivalentが設定され、かつhandlebarsExact === false{{!-- MANUAL_REWRITE_REQUIRED: … (最も近いヘルパー名) --}}
なしHandlebarsに相当するものがない{{!-- MANUAL_REWRITE_REQUIRED: … Handlebarsに相当するものがありません --}}

「近似」の注記には最も近いヘルパーが記載されるため、呼び出し形式が異なるだけの関数(例:ContentBlockByKey → getContentBlock)と、MCNに相当するものがまったくない関数を区別できます。convertSsjsToHandlebarsは推移的に変換し(SSJS → AMPscript → Handlebars)、命令型SSJSには保守的に手動での書き換えが必要と判定します。

効果的なプロンプトを書く

ツールの自動使用

MCPのinstructionsフィールドに対応するクライアント(Cursor、Claude Desktop、GitHub Copilot Agentモード)は、MCEの管理や設定について質問すると、特別な言い回しを使わなくてもsearch_helpまたはsearch_mce_helpを自動的に呼び出します。クライアントがサーバーの指示を処理しない場合や、明示的に制御したい場合は、以下のテンプレートを利用できます。

クイックリファレンス:使用するツールまたはプロンプト
状況対応方法
MCE の管理に関する質問(従来の Engagement)自然な言葉で質問してください。サーバーが search_help(または search_mce_help を直接)呼び出します。または、assumeProduct: engagement を指定して answerMceHowTo プロンプトを使用してください。
Marketing Cloud Next の開発者向け API に関する質問サーバーが search_help または search_mcn_help を自動的に呼び出します。または、search_mcn_help を明示的に使用してください。
MCN の運用/移行/セットアップに関する質問product_focus: 'next' を指定して search_mce_help を使用するか、自然な言葉で質問してください。サーバーが適切な検索先に振り分けます。
対象の製品がわからない場合assumeProduct: unsure を指定して answerMceHowTo を使用するか、target を指定せずに search_help を使用してください。
AMPscript を作成または検証するwriteAmpscript プロンプトを使用するか、直接質問してください(サーバーが自動的に検証します)。MCN の場合は target: 'next' を追加してください。
SSJS を作成または検証するwriteSsjs プロンプトを使用するか、直接質問してください。注:MCN では SSJS はサポートされていません。
コードが MCN に対応しているか確認するファイルの内容を指定して check_mcn_compatibility を使用してください。
コードを Marketing Cloud Next に移行するrewrite_for_mcn プロンプトを使用してください。決定的な書き換えでは内部でツールを呼び出し、その後、残った手動対応が必要な部分に AI の推論を適用します。パイプラインで構造化 JSON 出力が必要な場合に限り、ツールを直接使用してください。
SSJS ↔ AMPscript を変換するconvertSsjsToAmpscript または convertAmpscriptToSsjs プロンプトを使用してください。同じハイブリッド方式で、まずツールを実行し、ルールで対応できなかった部分を AI が処理します。
MCN Handlebars を作成または検証する作成には writeHandlebars プロンプトを、既存のテンプレートコードの確認には validate_handlebars を使用してください。ヘルパーは lookup_handlebars_helper / list_handlebars_helpers で検索してください。
AMPscript ↔ Handlebars(または SSJS → Handlebars)を変換するconvertAmpscriptToHandlebars、convertHandlebarsToAmpscript、または convertSsjsToHandlebars プロンプトを使用してください。同じハイブリッド方式で、まずツールを実行し、ルールで対応できなかった部分を AI が処理します。
コードの差分をレビューするreviewSfmcCode プロンプトを使用するか、「次の差分をレビューしてください」と伝えてください。
コピー&ペースト用プロンプトテンプレート
Classic Engagement の管理(最も一般的)
Search the Marketing Cloud Engagement help (product_focus: engagement) and tell me:
<your question here>

Cite which product version your steps apply to and note if the bundled docs are incomplete.
Marketing Cloud Next — 開発者 API
Search the Marketing Cloud Next developer docs and tell me:
<your question here>

Confirm the steps apply to Marketing Cloud Next, not classic Engagement.
MCN 移行分析
Check these files for Marketing Cloud Next compatibility and give me an executive summary:
<paste file contents>
MCN 用にコードを書き換える

rewrite_for_mcn プロンプトを使用します。まず決定論的な書き換えツールを実行し、その後、AI の推論が必要なセクションに適用します。結果をワンステップでまとめて取得できます。

Rewrite the following AMPscript/HTML for Marketing Cloud Next:
<paste code>

Apply all deterministic fixes, convert convertible SSJS to AMPscript, and explain every change.
不明な製品/移行に関する質問
Search both Marketing Cloud Engagement and Next help (product_focus: any) and tell me:
<your question here>

Separate the steps for classic Engagement vs Marketing Cloud Next clearly.
answerMceHowTo プロンプトを明示的に使用する

MCP プロンプトに対応しているクライアント(例:/mcp.sfmc.answerMceHowTo コマンドを備えた VS Code)では、次のようにします。

/mcp.sfmc.answerMceHowTo
  question: "How do I create a child business unit and assign it a sender profile?"
  assumeProduct: engagement
MCE の管理とコードを組み合わせる
1. Use search_mce_help (product_focus: engagement) to find the correct Journey Builder entry event
   configuration steps, then
2. Write the AMPscript snippet that reads the data extension row inside the journey email.
AI に期待できること
  • AI はすべての回答で、製品の対象範囲(Engagement または Next)を明示します。
  • 同梱された抜粋で質問を十分に網羅できない場合、AI はその旨を伝え、Salesforce Help の最新情報で確認するよう提案します。
  • 関数シグネチャ(AMPscript/SSJS)は、必ず言語カタログを参照して提示され、トレーニングデータから取得されることはありません。

同梱ヘルプインデックスを更新する

Marketing Cloud Engagement のヘルプ

公開 npm パッケージには、npm run bundle-mce-help で生成された bundled/mce-help/chunks.json が含まれています。デフォルトでは、バンドラーは MCE_HELP_DOCS に指定されたパスを使用します(scripts/bundle-mce-help.mjs を参照)。メンテナーのデフォルトを使用しない場合は、ミラーした MCE Help の Markdown ツリーのルートに設定してください。

cd mcp-server-sfmc
npm run bundle-mce-help
npm run build
npm test

例:MCE_HELP_DOCS=/absolute/path/to/mce-help-mirror npm run bundle-mce-help

Marketing Cloud Next 開発者向けドキュメント

公開 npm パッケージには、npm run bundle-mcn-help で生成された bundled/mcn-help/chunks.json が含まれています。メンテナーのデフォルトを使用しない場合は、MCN_HELP_DOCS をミラーした MCN 開発者向けドキュメントツリーのルートに設定してください(scripts/bundle-mcn-help.mjs を参照)。

cd mcp-server-sfmc
npm run bundle-mcn-help
npm run build
npm test

両方のインデックスを1つのコマンドで再構築するには、npm run bundle-all を実行します。

プルリクエストでの AI コードレビュー

Cursor Bugbot

Cursor Bugbot はプルリクエスト(GitHub)とマージ リクエスト(GitLab)を自動的にレビューし、修正案をインラインコメントで残し、 Cursor Bugbot チェックを公開します。sfmc-review-diff 自体は実行しません。 次の2つの方法で SFMC に対応させます。

1. リポジトリルール(BUGBOT.md)— すべてのプラン。
ci-templates/BUGBOT.md をリポジトリのルートにある .cursor/BUGBOT.md にコピーします。このファイルでは、AMPscript、SSJS、SFMC HTML のレビュー方法を Bugbot に指示します。対象には、不明な関数、引数の数、区切り文字の対応、ES3 のみを対象とする SSJS、任意の Marketing Cloud Next 移行ルールが含まれます。Bugbot はルートのファイルに加え、変更されたファイルの近くにあるネストされた .cursor/BUGBOT.md ファイルも読み込むため、サブフォルダーごとにより厳格なルールを設定できます。

2. MCP ツール(mcp-server-sfmc)— Team/Enterprise プランのみ。
Bugbot はレビュー中に MCP ツールを呼び出し、エディターと同じ言語カタログに基づいて指摘を生成できます。

  1. Bugbot ダッシュボードで、リポジトリの Bugbot を有効にします。
  2. Bugbot の MCP 設定を開き、次のサーバーを追加します。
{
  "mcpServers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    }
  }
}
  1. ダッシュボードでツールを Bugbot に追加します。レビューに関連するツールは review_change、validate_ampscript、validate_ssjs、validate_sfmc_html、 suggest_fix です。上記の BUGBOT.md ルールで、これらのツールを呼び出す タイミングを Bugbot に指示します。

ブランチ保護:マージ前にレビューが実行されるよう、Cursor Bugbot チェックを 必須にしてください。指摘の結論はデフォルトで neutral です。指摘によって チェックを失敗させたい場合は、ダッシュボードで(利用可能な場合) fail-on-unresolved-issues を有効にしてください。

まずローカルで実行してください。 Cursor 3.7 以降では、プッシュする前に ブランチで /review-bugbot を実行します。同じ差分の場合、Bugbot はそのレビューを PR/MR で再利用し、重複した実行を避けます。

GitHub Copilot(クラウドエージェント)

このリポジトリの .github/agents/sfmc-reviewer.agent.md カスタムエージェントは、mcp-server-sfmc を使用して SFMC に対応した PR レビューを行う GitHub Copilot クラウドエージェントを設定します。

独自のリポジトリで有効にするには、次の手順に従います。

  1. .github/agents/sfmc-reviewer.agent.md を自分のリポジトリにコピーします。
  2. GitHub リポジトリの設定 → Copilot → Cloud agent → MCP configuration で、次を追加します。
{
  "mcpServers": {
    "sfmc": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"],
      "tools": ["*"]
    }
  }
}
  1. コメントでメンションするか、GitHub Copilot Chat で @sfmc-reviewer エージェントを使用して、プルリクエストに sfmc-reviewer エージェントを割り当てます。
GitHub Copilot(専用 PR レビュー)

このリポジトリの .github/copilot-instructions.md をプロジェクトにコピーします。GitHub Copilot の専用 PR レビュー機能はこのファイルを読み込み、PR を要約する際に SFMC の言語ルールを適用します。

GitLab Duo
  1. ci-templates/gitlab-duo-review-instructions.md の内容を、リポジトリ内の .gitlab/duo-instructions.md にコピーします。
  2. GitLab Duo Code Review は、すべてのマージリクエストに対してこれらの指示を適用します。

GitLab Duo の専用 MR レビューは MCP を直接サポートしていません。自動静的解析には以下の CI lint ジョブを使用し、AI によるレビューコメントには Duo の指示を使用してください。

CI リント(決定的なチェック)

決定的なブロッキング CI 検証には、ci-templates/ に用意されているテンプレートを使用してください。 各テンプレートはすべての PR/MR で2 つのチェックを実行します。変更されたファイルに対する eslint-plugin-sfmc と、統合差分に対する sfmc-review-diff(このパッケージ)です。そのため、Bugbot、Copilot、Duo のどの AI レビュアーが有効になっていても、検出事項があればジョブは失敗します。

プラットフォームファイル
GitHub Actionsci-templates/github-action.yml
GitLab CIci-templates/gitlab-ci.yml
Jenkinsci-templates/Jenkinsfile
Azure DevOpsci-templates/azure-pipelines.yml
Bitbucket Pipelinesci-templates/bitbucket-pipelines.yml

ESLint ジョブはリント結果を PR/MR のコメントとして投稿します。sfmc-review-diff ジョブは、デフォルトでは ERROR 診断があるとゼロ以外の終了コードを返します(より厳しくするには --fail-on warning|info を指定します)。 2 つのチェックの違いについては、ci-templates/README.md を参照してください。

ESLint + @eslint/mcp

MCP はサポートしていないものの、ツール呼び出しをサポートする AI アシスタントでは、eslint-plugin-sfmc と公式の @eslint/mcp サーバーを組み合わせることができます。mcp-server-sfmc と並べて追加します。

{
  "servers": {
    "sfmc": {
      "command": "npx",
      "args": ["-y", "mcp-server-sfmc@latest"]
    },
    "eslint": {
      "command": "npx",
      "args": ["-y", "@eslint/mcp@latest"]
    }
  }
}

プロジェクトのルートに eslint.config.mjs を作成します。

import sfmc from 'eslint-plugin-sfmc';
export default [...sfmc.configs.recommended];

@eslint/mcp サーバーは eslint_lint ツールを公開します。このツールを AI が呼び出すと、任意のファイルに対して、eslint-plugin-sfmc の AMPscript および SSJS のすべてのルールを含む ESLint のルールセット全体を実行できます。

アーキテクチャ

mcp-server-sfmc
    ├── sfmc-language-lsp   (language intelligence core)
    │       ├── ampscript-data   (AMPscript function catalog)
    │       ├── ssjs-data        (SSJS function catalog)
    │       └── handlebars-data  (MCN Handlebars helper catalog)
    ├── ampscript-data     (direct — conversion maps, mcnSince, handlebarsEquivalent)
    ├── ssjs-data          (direct — Platform.Function ↔ AMPscript mapping)
    └── handlebars-data    (direct — AMPscript ↔ Handlebars conversion)

vscode-sfmc-language (VS Code extension)
    └── sfmc-language-lsp   (same core, bundled via esbuild)

VS Code 拡張機能と MCP サーバーは、sfmc-language-lsp を通じて検証、補完、ホバー、検索のロジックを完全に共有しています。つまり、AI アシスタントにはエディターに表示されるものと同じエラーや候補が表示されます。

コントリビュート

CONTRIBUTING.md を参照してください。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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