mcp-server-sfmc について
mcp-server-sfmcは、AMPscript、SSJS、GTLを扱うSalesforce Marketing Cloud開発者向けの言語ツールと検索可能なドキュメントを提供します。Marketing Cloud Nextの互換性チェック、Handlebarsの検証、移行にも対応します。
主な機能
- 01AMPscriptとSSJSの検証と補完
- 02MCEとMCNのドキュメント検索
- 03MCN互換性の確認とコード移行
- 04Handlebarsテンプレートの検証と変換
- 05変更行を対象とした差分レビュー
活用シーン
- 01Marketing Cloudコードの作成やレビュー
- 02MCN移行に向けたプロジェクト準備状況の評価
- 03MCE管理情報やMCN開発ドキュメントの検索
MCP 対応
言語検証、検索、コードレビュー、移行のツール、リソース、プロンプトをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
28掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| code | string | はい | 検証する AMPscript コード。HTML コンテキストを含めることができます。 |
| target | enum | いいえ | 対象プラットフォーム。'next' を指定すると、Marketing Cloud Next でサポートされない AMPscript 関数にフラグを付けます。engagement | next |
| maxProblems | integer | いいえ | 返す問題の最大数(デフォルト: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-sfmc | npx と同じ 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 Handlebars | handlebars-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_ampscript | AMPscript コードを検証します — 不明な関数、引数の数、区切り文字の対応、コメント構文を確認します。target: 'next' を指定すると、MCN 非対応の関数を警告します。 |
validate_ssjs | SSJS を検証します — ES6 以降の構文、Platform.Load の欠落、不正な API 呼び出しを確認します。target: 'next' を指定すると、すべての SSJS を非対応として警告します。 |
validate_sfmc_html | AMPscript、SSJS、GTL ブロックを含む HTML を検証します。target: 'next' を指定すると、MCN 検証が有効になります。 |
lookup_ampscript_function | 完全なシグネチャ、パラメーター、戻り値の型、MCN 互換性バッジ(API バージョン)、MCN での動作に関する注記、および例を表示します。 |
lookup_ssjs_function | SSJS 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_completions | SSJS Platform API の補完候補を一覧表示します。プレフィックスで絞り込むこともできます。target: 'next' を指定すると、AMPscript の補完候補に切り替わります。 |
format_sfmc_code | 基本的な書式規則を適用します(キーワードの大文字・小文字、引用符の正規化)。 |
detect_sfmc_platform | プロジェクトの対象プラットフォームを検出します — .mcdevrc.json(→ "engagement")または sfdx-project.json(→ "next")を確認します。 |
check_mcn_compatibility | 1 つ以上の 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_handlebars | MCN Handlebars テンプレートコードを検証します — ヘルパー名、引数の数、ブロックの対応、および非対応の構文(パーシャル、デコレーター、制限された MCN エンジンに含まれない組み込みヘルパー)を確認します。 |
lookup_handlebars_helper | MCN Handlebars ヘルパー 1 つのシグネチャ、パラメーター、説明、由来、および MCN API バージョンを表示します(大文字・小文字を区別しません)。 |
list_handlebars_helpers | すべての MCN Handlebars ヘルパーを一覧表示します。category および/または origin(handlebars-builtin、mcn-helper、mcn-platform)で絞り込むこともできます。 |
get_handlebars_completions | MCN Handlebars ヘルパーの補完候補を一覧表示します。プレフィックスで絞り込むこともできます。 |
convertAmpscriptToHandlebars | ルールベースの AMPscript → MCN Handlebars 変換です。同等の機能がある場合は関数をヘルパーに対応付け、非対応関数や実行時の制約には MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertAmpscriptToHandlebars プロンプトを優先してください。 |
convertHandlebarsToAmpscript | ルールベースの MCN Handlebars → AMPscript 変換です。ヘルパーとバインディングを AMPscript に戻して対応付け、ブロックヘルパーには MANUAL_REWRITE_REQUIRED の印を付けます。対話的な利用には convertHandlebarsToAmpscript プロンプトを優先してください。 |
convertSsjsToHandlebars | SSJS → AMPscript → MCN Handlebars の連続変換です。命令型の SSJS は、慎重に判断して手動書き換えが必要であることを示します。対話的な利用には convertSsjsToHandlebars プロンプトを優先してください。 |
write_handlebars | MCN 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/functions | SSJS関数の完全なカタログ |
sfmc://ampscript/keywords | すべてのAMPscriptキーワード |
sfmc://ssjs/unsupported-syntax | SFMC SSJSでサポートされていないES6以降の機能 |
sfmc://handlebars/helpers | シグネチャ、由来、MCN APIバージョンを含むMCN Handlebarsヘルパーの完全なカタログ |
sfmc://handlebars/bindings | MCN Handlebarsデータバインディング(テンプレートで使用できるコンテキスト変数) |
sfmc://mce/product-context | Marketing 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 を使用できません)。 |
reviewSfmcCode | AMPscript または SSJS コードのバグとベストプラクティス違反をレビューします。target: 'next' は MCN 互換性チェックリストを追加します。 |
rewrite_for_mcn | MCN 移行の主要インターフェイスです。 まず rewrite_for_mcn ツールを内部で呼び出して、ルールに基づくすべての書き換えを行い、次に MANUAL_REWRITE_REQUIRED セクションごとに AI 推論を適用します。これにより、説明文による変更履歴付きの、完全に移行されたコードブロックを 1 つ生成します。ルールベースの処理と AI 処理を常に 1 回で実行できます。 |
convertSsjsToAmpscript | SSJS → AMPscript 変換の主要インターフェイスです。 まず convertSsjsToAmpscript ツールを内部で呼び出してルールベースの変換を行い、次にルールで処理できなかったセクションについて AI 推論を適用します。 |
convertAmpscriptToSsjs | AMPscript → SSJS 変換の主要インターフェイスです。 まず convertAmpscriptToSsjs ツールを内部で呼び出してルールベースの変換を行い、次に AMPscript 専用としてフラグ付けされた構文に AI 推論を適用します。 |
writeHandlebars | 説明されたタスク向けに MCN Handlebars-in-HTML を生成し、ロックダウンされた MCN ヘルパーカタログの範囲内に制限します。ドラフトを handlebars-data に照らして検証し、サポートされていない構文を報告します。 |
convertAmpscriptToHandlebars | AMPscript → MCN Handlebars 変換の主要インターフェイスです。 まず convertAmpscriptToHandlebars ツールを内部で呼び出してルールベースの変換を行い、次に Handlebars に相当するものがない関数(ランタイムの機能不足や未サポートの関数)について AI 推論を適用します。 |
convertHandlebarsToAmpscript | MCN Handlebars → AMPscript 変換の主要インターフェイスです。 まず convertHandlebarsToAmpscript ツールを内部で呼び出してルールベースの変換を行い、次にブロックヘルパーやルールで処理できなかった構文について AI 推論を適用します。 |
convertSsjsToHandlebars | SSJS → 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の動作の違い
| 関数 | 違い |
|---|---|
FormatDate | MCNでは.NETではなく、**JavaのSimpleDateFormat**パターンを使用します。例:.NET "M/d/yyyy h:mm:ss tt" → Java "M/d/yyyy h:mm:ss a" |
Lookup | 検索引数は列と値のペアで指定する必要があります。MCNでは、引数の数が奇数だとエラーになります。すべてのフィルターキーで複合主キー全体を指定する必要があります。 |
StringToDate | MCNでは、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 ツールを呼び出し、エディターと同じ言語カタログに基づいて指摘を生成できます。
- Bugbot ダッシュボードで、リポジトリの Bugbot を有効にします。
- Bugbot の MCP 設定を開き、次のサーバーを追加します。
{
"mcpServers": {
"sfmc": {
"command": "npx",
"args": ["-y", "mcp-server-sfmc@latest"]
}
}
}
- ダッシュボードでツールを 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 クラウドエージェントを設定します。
独自のリポジトリで有効にするには、次の手順に従います。
.github/agents/sfmc-reviewer.agent.mdを自分のリポジトリにコピーします。- GitHub リポジトリの設定 → Copilot → Cloud agent → MCP configuration で、次を追加します。
{
"mcpServers": {
"sfmc": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-server-sfmc@latest"],
"tools": ["*"]
}
}
}
- コメントでメンションするか、GitHub Copilot Chat で @sfmc-reviewer エージェントを使用して、プルリクエストに
sfmc-reviewerエージェントを割り当てます。
GitHub Copilot(専用 PR レビュー)
このリポジトリの .github/copilot-instructions.md をプロジェクトにコピーします。GitHub Copilot の専用 PR レビュー機能はこのファイルを読み込み、PR を要約する際に SFMC の言語ルールを適用します。
GitLab Duo
ci-templates/gitlab-duo-review-instructions.mdの内容を、リポジトリ内の.gitlab/duo-instructions.mdにコピーします。- 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 Actions | ci-templates/github-action.yml |
| GitLab CI | ci-templates/gitlab-ci.yml |
| Jenkins | ci-templates/Jenkinsfile |
| Azure DevOps | ci-templates/azure-pipelines.yml |
| Bitbucket Pipelines | ci-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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。