Skip to main content
Glama
mercuryadvising

Adobe Launch / Tags MCP Server

Adobe Launch / Tags MCP Server

Adobe Experience Platform Reactor API をラップする MCP サーバーです。この API は Adobe Launch(現在は Adobe Experience Platform Tags と呼ばれています)の背後にある API です。

アシスタントに、タグプロパティ、ルール、データ要素、拡張機能、ライブラリ、環境への読み取りアクセスと、変更の作成機能を提供します。デフォルトでは何も公開しません。 このサーバーが行う操作がライブサイトに影響を与えるのは、明示的に dangerous モードを有効にしてビルドを承認した場合のみです。


なぜこれが存在するのか

Reactor API は JSON:API サーフェスで、約 240 のエンドポイントがあり、モデルにそのまま渡すには厄介な点がいくつかあります。

  • デリゲート設定は settings 属性に格納されますが、これは JSON エンコードされた文字列 であり、オブジェクトではありません。オブジェクトを渡すと、不可解な 422 が返ります。

  • リソースは肥大化しています。ルールコンポーネントには約 20 の監査フィールドがあるため、200 件のルールのリストはコンテキストウィンドウを圧迫します。

  • ルールは、別のエンドポイントにあるルールコンポーネントなしでは意味がありません。

  • オーサリングと公開は完全に別の関心事であり、混同しがちです。

このラッパーはこれら 4 つすべてを処理します。settings のエンコード/デコード、重要事項に絞ったレスポンスの整形、ルールとそのコンポーネントの結合、公開の明示的なオプトインによるゲートです。


セットアップ

1. OAuth Server-to-Server 資格情報を作成する

Adobe は 2025 年 1 月 1 日に Service Account (JWT) フローを廃止しました。OAuth Server-to-Server 資格情報が必要です。

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

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

  3. API を追加Adobe Experience Platform Launch API(Experience Cloud の下にあります)を選択します。

  4. 認証タイプとして OAuth Server-to-Server を選択します。

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

  6. 資格情報のページから以下をコピーします。

    • クライアント IDREACTOR_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 Desktopclaude_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 Codeclaude 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

readsafe、または 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_buildreactor_transition_library(送信/承認/公開)を含むすべて

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

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


ツール

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

ツール

機能

reactor_whoami

プロファイル + 表示可能な会社。認証を確認するにはここから始めます。

reactor_list_properties

会社内のプロパティ。

reactor_get_property

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

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_rulereactor_update_rulereactor_create_rule_componentreactor_update_rule_componentreactor_create_data_elementreactor_update_data_elementreactor_install_extensionreactor_update_extensionreactor_create_libraryreactor_update_libraryreactor_library_add_resourcesreactor_library_remove_resourcesreactor_create_note

破壊的操作(dangerous のみ)

reactor_create_buildreactor_transition_libraryreactor_delete_resource。これら3つはすべて明示的な confirm: true 引数を必要とし、MCP の destructiveHint アノテーションを持つため、正しく動作するクライアントは実行前にプロンプトを表示します。


APIに関する注意点

フィルタリング。 リストツールは属性をキーとする filter オブジェクトを受け取り、値は "OPERATOR value" の形式です。演算子: EQNOTLTGTBETWEENCONTAINS

{ "filter": { "name": "CONTAINS checkout", "enabled": "EQ true" } }

Adobe はフィルタリング不可能な属性に対するフィルタを黙って無視し、完全なセットを返します。そのため、何も効果がないように見えるフィルタは、実際に空の結果であるというよりも、通常はタイプミスまたはサポートされていない属性によるものです。

リソースごとのフィルタリング可能な属性:

  • rulesrule_componentsdata_elements: nameenableddirtypublishedpublished_atrevision_numberorigin_idcreated_atupdated_at(rule components にも negate があります)

  • properties: nameplatformenabledtokencreated_atupdated_at

  • extensions: namedisplay_nameversionenableddirtypublishedrevision_numbercreated_atupdated_at

  • libraries: namestatestalepublished_atcreated_atupdated_at

  • environments: namestagearchivetokencreated_atupdated_at

  • builds: statustokencreated_atupdated_at

  • hosts: nametype_ofcreated_atupdated_at

ページネーション。 デフォルトでは1ページあたり25件、最大100件です。fetch_all: true を渡すとすべてのページを巡回します(最大20ページ)。REACTOR_MAX_RESPONSE_CHARS より大きいレスポンスはレコード境界で切り詰められるため、JSON は解析可能な状態を保ち、破棄された量が示されます。

レート制限。 Reactor のソフト制限は、統合ごとに毎分およそ120リクエストです。クライアントは指数バックオフで 4295xx を再試行し、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 のエンコード/デコードのラウンドトリップ、リレーションシップの構築、書き込みモードのゲーティング(raw パススルーを使用してそれを回避できないことも含む)、および 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.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Direct access to your Sanity projects (content, datasets, releases, schemas) and agent rules

  • An agent-friendly API for product changelogs. A unified registry via CLI, API, or MCP.

  • Build and manage Cloudgate workflow-APIs: controllers, actions, workflow graphs, and databases.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mercuryadvising/adobe-launch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server