Adobe Launch / Tags MCP Server
Adobe Launch / Tags MCP Server
Ein MCP-Server, der die Adobe Experience Platform Reactor API kapselt – die API hinter Adobe Launch, heute Adobe Experience Platform Tags genannt.
Er gibt einem Assistenten Lesezugriff auf Ihre Tag-Properties, Regeln, Datenelemente, Erweiterungen, Bibliotheken und Umgebungen sowie die Möglichkeit, Änderungen zu erstellen. Standardmäßig veröffentlicht er nichts. Nichts, was dieser Server tut, erreicht eine Live-Site, es sei denn, Sie aktivieren explizit den Modus dangerous und genehmigen einen Build.
Möchten Sie das jemandem präsentieren? In DEMO.md finden Sie einen 10-minütigen Rundgang.
Warum es das gibt
Die Reactor API ist eine JSON:API-Oberfläche mit etwa 240 Endpunkten und einigen Stolperfallen, die es unpraktisch machen, sie einem Modell roh zu übergeben:
Die Delegate-Konfiguration wird in einem
settings-Attribut gespeichert, das ein JSON-codierter String ist, kein Objekt. Die Übergabe eines Objekts liefert eine kryptische 422.Ressourcen sind umfangreich – eine Regelkomponente trägt etwa 20 Audit-Felder –, sodass eine Liste von 200 Regeln ein Kontextfenster überflutet.
Regeln sind ohne ihre Regelkomponenten bedeutungslos, die an einem separaten Endpunkt liegen.
Erstellen und Veröffentlichen sind völlig getrennte Belange, und es ist leicht, sie zu vermischen.
Dieser Wrapper behandelt alle vier: Er codiert und decodiert settings, reduziert Antworten auf das Wesentliche, verbindet Regeln mit ihren Komponenten und stellt das Veröffentlichen hinter eine explizite Opt-in-Entscheidung.
Related MCP server: adobe-custom
Einrichtung
1. OAuth-Server-zu-Server-Anmeldedaten erstellen
Adobe hat den Service-Account-(JWT-)Flow am 1. Januar 2025 eingestellt. Sie benötigen OAuth-Server-zu-Server-Anmeldedaten.
Gehen Sie zur Adobe Developer Console und melden Sie sich an.
Erstellen Sie ein neues Projekt (oder öffnen Sie ein bestehendes).
API hinzufügen → wählen Sie Adobe Experience Platform Launch API (unter Experience Cloud aufgeführt).
Wählen Sie OAuth Server-to-Server als Authentifizierungstyp.
Wählen Sie das/die Produktprofil(e), die Zugriff auf die Properties gewähren, die Sie benötigen. Produktprofile werden in der Adobe Admin Console verwaltet; wenn Sie kein Admin sind, fragen Sie Ihren, welches Profil Ihre Properties abdeckt. Dies ist die mit Abstand häufigste Ursache für leere Ergebnisse oder 403-Fehler – die Anmeldedaten können sich problemlos authentifizieren und trotzdem nichts sehen.
Kopieren Sie von der Seite der Anmeldedaten:
Client-ID →
REACTOR_CLIENT_IDClient-Secret →
REACTOR_CLIENT_SECRETOrganisations-ID (endet auf
@AdobeOrg) →REACTOR_ORG_IDScopes (die auf der Seite der Anmeldedaten angezeigte, durch Kommas getrennte Liste) →
REACTOR_SCOPES
Der Server tauscht diese gegen ein 24-Stunden-Zugriffstoken unter https://ims-na1.adobelogin.com/ims/token/v3 ein und erneuert es automatisch. Sie müssen nie selbst ein Token verwalten.
2. Installieren
Ein vorgefertigtes, abhängigkeitsfreies Bundle liegt unter build/adobe-launch-reactor-mcp.mjs. Es ist eine einzelne, eigenständige ESM-Datei – kein npm install erforderlich, um den Server auszuführen. Node 20+ ist die einzige Voraussetzung.
Um es aus dem Quellcode neu zu erstellen oder die Tests auszuführen:
npm install
npm run build # tsc -> dist/
npm run bundle # single file -> build/adobe-launch-reactor-mcp.mjs
npm testDer Server liest seine Anmeldedaten aus Umgebungsvariablen, die von Ihrem MCP-Client bereitgestellt werden. Er lädt keine
.env-Datei –.env.exampledient als Referenz dafür, welche Werte zu setzen sind.
3. MCP-Client konfigurieren
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.mjsFragen Sie dann: „Welche Regeln gibt es in meiner Acme-Web-Property, und welche sind unveröffentlicht?"
Konfiguration
Variable | Erforderlich | Standard | Zweck |
| ja | — | Client-ID aus der Developer Console; wird auch als |
| ja | — | Client-Secret. |
| ja | — | IMS-Organisations-ID, endet auf |
| nein |
| Durch Kommas getrennte Scopes. Kopieren Sie die exakte Liste von Ihrer Anmeldedaten-Seite – der Standard ist typisch, aber nicht universell. |
| nein |
|
|
| nein | — | Eine Property festlegen, damit Tools nicht bei jedem Aufruf |
| nein | — | Ein Unternehmen festlegen und einen Lookup-Aufruf überspringen. |
| nein |
| Überschreibung für Tests. |
| nein |
| Für Nicht-NA1-IMS-Regionen ändern. |
| nein |
| Obergrenze für eine einzelne Tool-Antwort vor der Kürzung. |
| nein |
| Timeout pro Anfrage. |
Schreibmodi
Modus | Kann | Kann nicht |
| Alles auflisten und abrufen, suchen, Audit-Ereignisse lesen | Jede Mutation |
| Alles aus | Löschen, Build, Veröffentlichen |
| Alles, einschließlich Löschen, | — |
Der Modus wird an zwei Stellen durchgesetzt: Schreib-Tools werden unterhalb ihrer Stufe einfach nicht registriert, und die reactor_request-Hintertür whitelistet HTTP-Methoden nach Modus – ein Modell kann die Stufe also nicht umgehen, indem es den rohen Endpunkt aufruft.
safe ist die richtige Standardeinstellung für die meisten Arbeiten. Das Erstellen in Reactor ist nicht destruktiv: Eine neue oder bearbeitete Regel liegt im Authoring-Zustand der Property und ändert nichts auf einer Live-Site, bis eine Bibliothek, die sie enthält, erstellt und veröffentlicht wird. Wenn das Veröffentlichen in einer separaten, explizit aktivierten Stufe bleibt, ist ein Fehler etwas, das Sie in der UI beheben, kein Vorfall.
Tools
Lesen (alle Modi)
Tool | What it does |
| Profil + sichtbare Unternehmen. Hier beginnen, um die Authentifizierung zu prüfen. |
| Properties in einem Unternehmen. |
| Ein Property mit seinen Plattform-Einstellungen. |
| Regeln in einem Property. |
| Eine Regel plus ihre Komponenten — damit beantworten Sie „Was macht diese Regel?“. |
| Events, Bedingungen und Aktionen einer Regel. |
| Datenelemente, mit dekodierten Einstellungen. |
| Installierte Erweiterungen und ihre Konfiguration. |
| Der Katalog installierbarer Erweiterungen. |
| Delegate-Deskriptoren, die eine Erweiterung bereitstellt — so finden Sie gültige |
| Libraries und ihr Workflow-Status. |
| Eine Library plus alle Regeln, Datenelemente und Erweiterungen, die sie enthält, sowie ihr letzter Build. |
| Build-Verlauf für eine Library. |
| Environments mit Embed-Codes. |
| Akamai-/SFTP-Hosts. |
| Wer hat was geändert, neueste zuerst. |
| Strukturierte Suche über Ressourcentypen hinweg, wenn Sie nicht wissen, in welchem Property etwas liegt. |
| Notizen, die an einer Ressource hängen. |
| Roher Passthrough für die ~200 Endpunkte ohne dediziertes Tool. Methodisch durch den Schreibmodus gesteuert. |
Authoring (safe und 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.
Destruktiv (nur dangerous)
reactor_create_build, reactor_transition_library, reactor_delete_resource. Alle drei erfordern ein explizites confirm: true-Argument und tragen die MCP-destructiveHint-Annotation, sodass ein konformer Client vor der Ausführung eine Rückfrage stellt.
Hinweise zur API
Filterung. Listen-Tools akzeptieren ein filter-Objekt, dessen Schlüssel Attribute sind, mit Werten der Form "OPERATOR value". Operatoren: EQ, NOT, LT, GT, BETWEEN, CONTAINS.
{ "filter": { "name": "CONTAINS checkout", "enabled": "EQ true" } }Adobe ignoriert Filter auf nicht filterbaren Attributen stillschweigend und gibt die vollständige Menge zurück. Ein Filter, der scheinbar nichts bewirkt, ist also meist ein Tippfehler oder ein nicht unterstütztes Attribut und kein wirklich leeres Ergebnis.
Filterbare Attribute nach Ressource:
rules, rule_components, data_elements:
name,enabled,dirty,published,published_at,revision_number,origin_id,created_at,updated_at(Regelkomponenten zusätzlichnegate)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
Paginierung. Standardmäßig 25 Datensätze pro Seite, maximal 100. Übergeben Sie fetch_all: true, um jede Seite zu durchlaufen (begrenzt auf 20 Seiten). Antworten, die größer als REACTOR_MAX_RESPONSE_CHARS sind, werden an einer Datensatzgrenze abgeschnitten, sodass das JSON parsebar bleibt und angibt, wie viel verworfen wurde.
Ratenlimits. Das weiche Limit von Reactor liegt bei etwa 120 Anfragen pro Minute und Integration. Der Client wiederholt 429 und 5xx mit exponentiellem Backoff und respektiert Retry-After.
Einstellungen. Reactor speichert die Delegate-Konfiguration als JSON-kodierten String. Die Schreib-Tools akzeptieren ein einfaches Objekt und kodieren es; die Lese-Tools dekodieren es zurück. Wenn Sie einen String übergeben, wird er unverändert durchgereicht.
Veröffentlichungsmodell. Authoring-Änderungen sind wirkungslos. Um eine Änderung live zu schalten: Ressourcen erstellen oder bearbeiten → zu einer Library hinzufügen → die Library bauen → in den Status published überführen. Die letzten beiden Schritte erfordern den dangerous-Modus; andernfalls führen Sie sie in der Launch-UI aus.
Entwicklung
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 tsxDie Testsuite deckt ab: Aufbau des Auth-Headers und Token-Caching, die Form des client_credentials-Grants, JSON:API-Filter-/Sortier-/Seiten-Kodierung, mehrseitiges Durchlaufen, Antwortformatierung und -kürzung, settings-Encode/Decode-Roundtrip, Konstruktion von Beziehungen, Schreibmodus-Gating (einschließlich der Tatsache, dass der rohe Passthrough nicht zur Umgehung genutzt werden kann) sowie die Qualität von Fehlermeldungen für 404/422/429/500.
Struktur
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 passthroughLizenz
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