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 資格情報が必要です。
Adobe Developer Console に移動してサインインします。
新しいプロジェクトを作成するか、既存のプロジェクトを開きます。
API を追加 → Adobe Experience Platform Launch API(Experience Cloud の下にあります)を選択します。
認証タイプとして OAuth Server-to-Server を選択します。
対象のプロパティへのアクセスを許可する製品プロファイルを選択します。製品プロファイルは 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 で修正できるものになります。
ツール
読み取り(すべてのモード)
ツール | 機能 |
| プロファイル + 表示可能な会社。認証を確認するにはここから始めます。 |
| 会社内のプロパティ。 |
| プラットフォーム設定を含む 1 つのプロパティ。 |
| プロパティ内のルール。 |
| ルール とそのコンポーネント — 「このルールは何をするのか」という質問に答えるために使用します。 |
| ルールのイベント、条件、アクション。 |
| 設定がデコードされたデータ要素。 |
| インストール済みの拡張機能とその設定。 |
| インストール可能な拡張機能のカタログ。 |
| 拡張機能が提供するデリゲート記述子 — 有効な |
| ライブラリとそのワークフロー状態。 |
| ライブラリと、それに含まれるすべてのルール、データ要素、拡張機能、および最後のビルド。 |
| ライブラリのビルド履歴。 |
| 埋め込みコード付きの環境。 |
| 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 のエンコード/デコードのラウンドトリップ、リレーションシップの構築、書き込みモードのゲーティング(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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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