Adobe Launch / Tags MCP Server
Adobe Launch / Tags MCP サーバー
Adobe Experience Platform Reactor API をラップする MCP サーバーです。この API は Adobe Launch(現在は Adobe Experience Platform Tags と呼ばれています)の背後にある API です。
アシスタントにタグプロパティ、ルール、データ要素、拡張機能、ライブラリ、環境への読み取りアクセスを提供し、さらに変更の作成も可能にします。デフォルトでは何も公開しません。 このサーバーが行う操作がライブサイトに影響を与えるのは、dangerous モードを明示的に有効にしてビルドを承認した場合のみです。
これを誰かに紹介する場合? 10 分間のウォークスルーについては DEMO.md を参照してください。
これが存在する理由
Reactor API は約 240 のエンドポイントを持つ JSON:API サーフェスであり、モデルにそのまま渡すには扱いにくいいくつかの鋭いエッジがあります:
デリゲート設定は
settings属性に保存されますが、これは JSON エンコードされた文字列 であり、オブジェクトではありません。オブジェクトを渡すと不可解な 422 が返されます。リソースは肥大化しています — ルールコンポーネントには約 20 の監査フィールドがあります — そのため、200 件のルールのリストはコンテキストウィンドウを圧迫します。
ルールは、別のエンドポイントにあるルールコンポーネントなしでは意味がありません。
オーサリングと公開は完全に別の関心事であり、混同しがちです。
このラッパーはこれら 4 つすべてを処理します: settings のエンコードとデコード、重要なものだけに絞ったレスポンスの整形、ルールとそのコンポーネントの結合、そして公開を明示的なオプトインの背後にゲートします。
Related MCP server: adobe-custom
セットアップ
1. OAuth サーバー間認証情報を作成する
Adobe は 2025 年 1 月 1 日に Service Account (JWT) フローを廃止しました。OAuth サーバー間認証情報が必要です。
Adobe Developer Console に移動してサインインします。
新しいプロジェクトを作成するか(または既存のプロジェクトを開きます)。
API を追加 → Adobe Experience Platform Launch API を選択します(Experience Cloud の下にリストされています)。
認証タイプとして OAuth サーバー間 を選択します。
対象のプロパティへのアクセスを許可する製品プロファイルを選択します。製品プロファイルは Adobe Admin Console で管理されています。管理者でない場合は、どのプロファイルが自分のプロパティをカバーしているかを管理者に確認してください。これは空の結果や 403 の最も一般的な原因です — 認証情報は正常に認証できても、何も見えないことがあります。
認証情報のページから以下をコピーします:
クライアント ID →
REACTOR_CLIENT_IDクライアントシークレット →
REACTOR_CLIENT_SECRET組織 ID(
@AdobeOrgで終わる)→REACTOR_ORG_IDスコープ(認証情報ページに表示されるカンマ区切りのリスト)→
REACTOR_SCOPES
サーバーはこれらを https://ims-na1.adobelogin.com/ims/token/v3 で 24 時間のアクセストークンと交換し、自動的に更新します。トークンを自分で扱う必要はありません。
2. インストール
ビルド済みの依存関係不要のバンドルが build/adobe-launch-reactor-mcp.mjs に同梱されています。これは単一の自己完結型 ESM ファイルです — サーバーを実行するために npm install は不要 です。Node 20+ が唯一の前提条件です。
ソースから再ビルドする場合、またはテストを実行する場合:
npm install
npm run build # tsc -> dist/
npm run bundle # single file -> build/adobe-launch-reactor-mcp.mjs
npm testサーバーは MCP クライアントから提供される環境変数 から認証情報を読み取ります。
.envファイルは読み込みません —.env.exampleは設定する値の参照用です。
3. MCP クライアントを設定する
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"adobe-launch": {
"command": "node",
"args": ["/absolute/path/to/launch-mcp/build/adobe-launch-reactor-mcp.mjs"],
"env": {
"REACTOR_CLIENT_ID": "your-client-id",
"REACTOR_CLIENT_SECRET": "your-client-secret",
"REACTOR_ORG_ID": "XXXXXXXXXXXX@AdobeOrg",
"REACTOR_SCOPES": "openid,AdobeID,read_organizations,additional_info.projectedProductContext,additional_info.roles,session",
"REACTOR_WRITE_MODE": "read"
}
}
}
}Claude Code — claude mcp add:
claude mcp add adobe-launch \
--env REACTOR_CLIENT_ID=... \
--env REACTOR_CLIENT_SECRET=... \
--env REACTOR_ORG_ID=...@AdobeOrg \
--env REACTOR_WRITE_MODE=safe \
-- node /absolute/path/to/launch-mcp/build/adobe-launch-reactor-mcp.mjs次に、次のように尋ねます: 「私の Acme Web プロパティにはどのようなルールがあり、公開されていないものはどれですか?」
設定
変数 | 必須 | デフォルト | 目的 |
| はい | — | Developer Console のクライアント ID。 |
| はい | — | クライアントシークレット。 |
| はい | — | IMS 組織 ID。 |
| いいえ |
| カンマ区切りのスコープ。認証情報ページから正確なリストをコピーしてください — デフォルトは一般的ですが、普遍的ではありません。 |
| いいえ |
|
|
| いいえ | — | プロパティを固定して、ツールが毎回 |
| いいえ | — | 会社を固定して、ルックアップ呼び出しをスキップします。 |
| いいえ |
| テスト用のオーバーライド。 |
| いいえ |
| NA1 以外の IMS リージョン用に変更します。 |
| いいえ |
| 切り捨て前の単一ツールレスポンスの上限。 |
| いいえ |
| リクエストごとのタイムアウト。 |
書き込みモード
モード | 実行可能 | 実行不可 |
| すべてのリスト取得と取得、検索、監査イベントの読み取り | すべての変更操作 |
|
| 削除、ビルド、公開 |
| 削除、 | — |
モードは 2 か所で強制されます: 書き込みツールはその階層未満では単に登録されず、reactor_request エスケープハッチはモードによって HTTP メソッドをホワイトリスト化します — そのため、モデルが生のエンドポイントを呼び出して階層を迂回することはできません。
safe はほとんどの作業で適切なデフォルトです。Reactor でのオーサリングは非破壊的です: 新規または編集されたルールはプロパティのオーサリング状態に置かれ、それを含むライブラリがビルドされて公開されるまで、ライブサイトの何も変更しません。公開を別の明示的に有効化された階層に保持することで、ミスはインシデントではなく UI で修正するものになります。
ツール
読み取り(すべてのモード)
Tool | 機能 |
| プロフィール+表示中の企業。認証確認はここから始める。 |
| 企業内のプロパティ。 |
| プラットフォーム設定を含む単一のプロパティ。 |
| プロパティ内のルール。 |
| ルールとそのコンポーネントを取得 — 「このルールは何をするのか」という質問に答えるために使用する。 |
| ルールのイベント、条件、アクション。 |
| データ要素(設定はデコード済み)。 |
| インストール済み拡張機能とその設定。 |
| インストール可能な拡張機能のカタログ。 |
| 拡張機能が提供するデリゲート記述子 — 有効な |
| ライブラリとそのワークフロー状態。 |
| ライブラリと、そこに含まれるすべてのルール、データ要素、拡張機能、および最後のビルド。 |
| ライブラリのビルド履歴。 |
| 埋め込みコード付きの環境。 |
| Akamai / SFTP ホスト。 |
| 誰が何を変更したか(新しい順)。 |
| リソースがどのプロパティにあるか不明な場合の、リソースタイプ横断の構造化検索。 |
| リソースに添付されたメモ。 |
| 専用ツールのない約200エンドポイントへの生パススルー。書き込みモードによってメソッドが制限される。 |
作成(safe および dangerous)
reactor_create_rule、reactor_update_rule、reactor_create_rule_component、reactor_update_rule_component、reactor_create_data_element、reactor_update_data_element、reactor_install_extension、reactor_update_extension、reactor_create_library、reactor_update_library、reactor_library_add_resources、reactor_library_remove_resources、reactor_create_note。
破壊的操作(dangerous のみ)
reactor_create_build、reactor_transition_library、reactor_delete_resource。これら3つはすべて明示的な confirm: true 引数が必要で、MCP の destructiveHint アノテーションが付いているため、適切に動作するクライアントは実行前にプロンプトを表示する。
API に関する注意事項
フィルタリング。 リストツールは属性をキーとする filter オブジェクトを受け取り、値は "OPERATOR value" の形式。演算子: EQ、NOT、LT、GT、BETWEEN、CONTAINS。
{ "filter": { "name": "CONTAINS checkout", "enabled": "EQ true" } }Adobe はフィルタリング不可の属性に対するフィルタを黙って無視し、全セットを返すため、何もしていないように見えるフィルタは、通常はタイプミスかサポートされていない属性であり、実際に空の結果であることはほとんどない。
リソースタイプ別のフィルタリング可能な属性:
rules、rule_components、data_elements:
name、enabled、dirty、published、published_at、revision_number、origin_id、created_at、updated_at(rule components にはnegateも)properties:
name、platform、enabled、token、created_at、updated_atextensions:
name、display_name、version、enabled、dirty、published、revision_number、created_at、updated_atlibraries:
name、state、stale、published_at、created_at、updated_atenvironments:
name、stage、archive、token、created_at、updated_atbuilds:
status、token、created_at、updated_athosts:
name、type_of、created_at、updated_at
ページネーション。 デフォルトで1ページあたり25レコード、最大100。fetch_all: true を渡すと全ページを走査する(最大20ページ)。REACTOR_MAX_RESPONSE_CHARS より大きいレスポンスはレコード境界で切り詰められるため、JSON は解析可能なまま維持され、どれだけ破棄されたかが示される。
レート制限。 Reactor のソフト制限は、統合あたり毎分約120リクエスト。クライアントは指数バックオフで 429 と 5xx を再試行し、Retry-After を尊重する。
設定。 Reactor はデリゲート設定を JSON エンコードされた文字列として保存する。書き込みツールはプレーンオブジェクトを受け取ってエンコードし、読み取りツールはそれをデコードして戻す。文字列を渡した場合はそのまま通過する。
公開モデル。 作成・編集の変更は不活性。変更を公開するには: リソースを作成または編集 → ライブラリに追加 → ライブラリをビルド → published に遷移させる。最後の2ステップは dangerous モードが必要。それ以外の場合は Launch UI で行う。
開発
npm run typecheck # tsc --noEmit
npm test # 35 tests against an in-memory mock of IMS + Reactor
npm run build # compile to dist/
npm run dev # run from source via tsxテストスイートは、認証ヘッダー構築とトークンキャッシュ、client_credentials グラントの形状、JSON:API のフィルタ/ソート/ページエンコーディング、複数ページの走査、レスポンスの整形と切り詰め、settings のエンコード/デコードのラウンドトリップ、リレーションシップ構築、書き込みモードのゲーティング(生パススルーでそれを回避できないことを含む)、および 404/422/429/500 のエラーメッセージ品質をカバーする。
構造
src/
config.ts env parsing, write-mode tiers
auth.ts IMS OAuth S2S token manager with caching + refresh collapsing
client.ts JSON:API client: headers, query encoding, retry, pagination, error formatting
format.ts response shaping and size-capped serialization
server.ts MCP server assembly
index.ts stdio entrypoint
tools/
common.ts shared argument schemas and helpers
read.ts read-only tools
write.ts authoring tools + dangerous tier
raw.ts method-gated passthroughライセンス
MIT。
This server cannot be deployed
Maintenance
Related MCP Connectors
Read and write Drupal JSON:API nodes, taxonomy terms, users and files.
Manage repositories, users, releases, and automate GitHub workflows
Discover audiences, build segments, match and deliver data. Some actions may incur billable usage.
Search, read, and automate TextMine documents, records, workflows, integrations, and agent tasks.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceThe first full-featured MCP server for Adobe Experience Platform: 29 tools across schemas, datasets, profiles, segments, query service, and GDPR/CCPA privacy operations. Extends Adobe's read-only beta with production-grade write operations.72 npmApache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables Adobe Experience Platform and AEM content operations through a shared tool registry, exposing health checks, fragment search, sandbox management, dataset queries, and content fragment fetching via MCP and web interfaces.-
- AlicenseNot gradedqualityCmaintenanceEnables full Google Tag Manager management via the GTM API v2, including tags, triggers, variables, and version publishing, with workspace-based change tracking.MIT
- AlicenseAqualityCmaintenanceEnables policy-aware access to the Productive.io API v2 for managing projects, tasks, time tracking, resource planning, financials, CRM, and reports, with safe defaults and staged writes for sensitive operations.12Apache 2.0