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 模式并批准构建,否则此服务器所做的任何事情都不会触及线上站点。
要向别人展示?请参阅 DEMO.md 获取 10 分钟演示。
为什么存在
Reactor API 是一个 JSON:API 接口,约有 240 个端点,还有一些棘手之处,使得直接把它交给模型使用很不方便:
委托配置存储在
settings属性中,该属性是一个 JSON 编码的字符串,而不是对象。传入对象会返回令人费解的 422 错误。资源很臃肿——一个规则组件带有约 20 个审计字段——因此 200 条规则的列表会淹没上下文窗口。
没有规则组件,规则就毫无意义,而规则组件位于单独的端点。
编写和发布是完全独立的关注点,很容易混淆它们。
这个封装处理了全部四个问题:它编码和解码 settings,将响应精简为关键内容,将规则与其组件关联起来,并将发布置于显式选择加入之后。
Related MCP server: adobe-custom
设置
1. 创建 OAuth Server-to-Server 凭据
Adobe 于 2025 年 1 月 1 日停用了 Service Account (JWT) 流程。你需要一个 OAuth Server-to-Server 凭据。
前往 Adobe Developer Console 并登录。
创建新项目(或打开现有项目)。
Add API → 选择 Adobe Experience Platform Launch API(列在 Experience Cloud 下)。
选择 OAuth Server-to-Server 作为认证类型。
选择授予对你关心的属性访问权限的产品配置文件。产品配置文件在 Adobe Admin Console 中管理;如果你不是管理员,请询问你的管理员哪个配置文件涵盖你的属性。这是空结果或 403 错误最常见的原因——凭据可以正常认证,但仍然什么都看不到。
从凭据页面复制:
Client ID →
REACTOR_CLIENT_IDClient Secret →
REACTOR_CLIENT_SECRETOrganization ID(以
@AdobeOrg结尾)→REACTOR_ORG_IDScopes(凭据页面上显示的逗号分隔列表)→
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 区域更改。 |
| 否 |
| 单个工具响应在截断前的上限。 |
| 否 |
| 每次请求的超时时间。 |
写入模式
模式 | 可以 | 不可以 |
| 列出和获取所有内容、搜索、读取审计事件 | 任何修改 |
|
| 删除、构建、发布 |
| 所有内容,包括删除、 | — |
该模式在两个地方强制执行:写入工具在其层级以下根本不会注册,reactor_request 逃生舱按模式白名单化 HTTP 方法——因此模型无法通过调用原始端点绕过层级。
safe 是大多数工作的正确默认值。Reactor 中的编写是非破坏性的:新建或编辑的规则处于属性的编写状态,在包含它的库被构建和发布之前,不会对线上站点产生任何更改。将发布放在单独的、显式启用的层级中,意味着错误是你在 UI 中修复的事情,而不是事故。
工具
读取(所有模式)
工具 | 功能 |
| 个人资料 + 可见的公司。从这里开始验证身份验证。 |
| 公司中的属性。 |
| 单个属性及其平台设置。 |
| 属性中的规则。 |
| 一条规则及其组件——使用此工具来回答"这条规则是做什么的?"。 |
| 规则的事件、条件和操作。 |
| 数据元素,设置已解码。 |
| 已安装的扩展及其配置。 |
| 可安装扩展的目录。 |
| 扩展提供的委托描述符——这是你发现有效 |
| 库及其工作流状态。 |
| 一个库及其包含的每条规则、数据元素和扩展,以及其最后一次构建。 |
| 库的构建历史。 |
| 带有嵌入代码的环境。 |
| 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。这三个都需要显式的 confirm: true 参数,并带有 MCP destructiveHint 注解,因此行为良好的客户端会在运行前提示确认。
API 说明
过滤。 列表工具接受一个以属性为键的 filter 对象,值的形式为 "操作符 值"。操作符: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
分页。 默认每页 25 条记录,最多 100 条。传入 fetch_all: true 可遍历所有页面(上限为 20 页)。大于 REACTOR_MAX_RESPONSE_CHARS 的响应会在记录边界处截断,因此 JSON 保持可解析,并说明丢弃了多少内容。
速率限制。 Reactor 的软限制约为每个集成每分钟 120 个请求。客户端使用指数退避重试 429 和 5xx,并遵循 Retry-After。
设置。 Reactor 将委托配置存储为 JSON 编码的字符串。写入工具接受普通对象并对其进行编码;读取工具将其解码回来。如果你传入字符串,它将原样传递。
发布模型。 编写更改是无效的。要使更改生效:创建或编辑资源 → 将其添加到库 → 构建库 → 将其转换为 published。最后两步需要 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