Skip to main content
Glama
mercuryadvising

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 サーバー間認証情報が必要です。

  1. Adobe Developer Console に移動してサインインします。

  2. 新しいプロジェクトを作成するか(または既存のプロジェクトを開きます)。

  3. API を追加 → Adobe Experience Platform Launch API を選択します(Experience Cloud の下にリストされています)。

  4. 認証タイプとして OAuth サーバー間 を選択します。

  5. 対象のプロパティへのアクセスを許可する製品プロファイルを選択します。製品プロファイルは Adobe Admin Console で管理されています。管理者でない場合は、どのプロファイルが自分のプロパティをカバーしているかを管理者に確認してください。これは空の結果や 403 の最も一般的な原因です — 認証情報は正常に認証できても、何も見えないことがあります。

  6. 認証情報のページから以下をコピーします:

    • クライアント 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 プロパティにはどのようなルールがあり、公開されていないものはどれですか?」


設定

変数

必須

デフォルト

目的

REACTOR_CLIENT_ID

はい

—

Developer Console のクライアント ID。x-api-key としても送信されます。

REACTOR_CLIENT_SECRET

はい

—

クライアントシークレット。

REACTOR_ORG_ID

はい

—

IMS 組織 ID。@AdobeOrg で終わります。

REACTOR_SCOPES

いいえ

openid,AdobeID,read_organizations,additional_info.projectedProductContext,additional_info.roles,session

カンマ区切りのスコープ。認証情報ページから正確なリストをコピーしてください — デフォルトは一般的ですが、普遍的ではありません。

REACTOR_WRITE_MODE

いいえ

read

read、safe、または dangerous。以下を参照してください。

REACTOR_DEFAULT_PROPERTY_ID

いいえ

—

プロパティを固定して、ツールが毎回 property_id を必要としないようにします。

REACTOR_DEFAULT_COMPANY_ID

いいえ

—

会社を固定して、ルックアップ呼び出しをスキップします。

REACTOR_BASE_URL

いいえ

https://reactor.adobe.io

テスト用のオーバーライド。

REACTOR_IMS_TOKEN_URL

いいえ

https://ims-na1.adobelogin.com/ims/token/v3

NA1 以外の IMS リージョン用に変更します。

REACTOR_MAX_RESPONSE_CHARS

いいえ

60000

切り捨て前の単一ツールレスポンスの上限。

REACTOR_TIMEOUT_MS

いいえ

30000

リクエストごとのタイムアウト。

書き込みモード

モード

実行可能

実行不可

read(デフォルト)

すべてのリスト取得と取得、検索、監査イベントの読み取り

すべての変更操作

safe

read のすべてに加え、ルール、ルールコンポーネント、データ要素、拡張機能、ライブラリ、ノートの作成/更新、ライブラリコンテンツの組み立て

削除、ビルド、公開

dangerous

削除、reactor_create_build、reactor_transition_library(送信/承認/公開)を含むすべて

—

モードは 2 か所で強制されます: 書き込みツールはその階層未満では単に登録されず、reactor_request エスケープハッチはモードによって HTTP メソッドをホワイトリスト化します — そのため、モデルが生のエンドポイントを呼び出して階層を迂回することはできません。

safe はほとんどの作業で適切なデフォルトです。Reactor でのオーサリングは非破壊的です: 新規または編集されたルールはプロパティのオーサリング状態に置かれ、それを含むライブラリがビルドされて公開されるまで、ライブサイトの何も変更しません。公開を別の明示的に有効化された階層に保持することで、ミスはインシデントではなく UI で修正するものになります。


ツール

読み取り(すべてのモード)

Tool

機能

reactor_whoami

プロフィール+表示中の企業。認証確認はここから始める。

reactor_list_properties

企業内のプロパティ。

reactor_get_property

プラットフォーム設定を含む単一のプロパティ。

reactor_list_rules

プロパティ内のルール。

reactor_get_rule

ルールとそのコンポーネントを取得 — 「このルールは何をするのか」という質問に答えるために使用する。

reactor_list_rule_components

ルールのイベント、条件、アクション。

reactor_list_data_elements / reactor_get_data_element

データ要素(設定はデコード済み)。

reactor_list_extensions / reactor_get_extension

インストール済み拡張機能とその設定。

reactor_list_extension_packages

インストール可能な拡張機能のカタログ。

reactor_get_extension_package

拡張機能が提供するデリゲート記述子 — 有効な delegate_descriptor_id 値を見つける方法。

reactor_list_libraries

ライブラリとそのワークフロー状態。

reactor_get_library

ライブラリと、そこに含まれるすべてのルール、データ要素、拡張機能、および最後のビルド。

reactor_list_builds

ライブラリのビルド履歴。

reactor_list_environments

埋め込みコード付きの環境。

reactor_list_hosts

Akamai / SFTP ホスト。

reactor_list_audit_events

誰が何を変更したか(新しい順)。

reactor_search

リソースがどのプロパティにあるか不明な場合の、リソースタイプ横断の構造化検索。

reactor_list_notes

リソースに添付されたメモ。

reactor_request

専用ツールのない約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_at

  • extensions: name、display_name、version、enabled、dirty、published、revision_number、created_at、updated_at

  • libraries: name、state、stale、published_at、created_at、updated_at

  • environments: name、stage、archive、token、created_at、updated_at

  • builds: status、token、created_at、updated_at

  • hosts: 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。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    The 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 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables full Google Tag Manager management via the GTM API v2, including tags, triggers, variables, and version publishing, with workspace-based change tracking.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    12
    Apache 2.0