Adobe Launch / Tags MCP Server
Adobe Launch / Tags MCP Server
一个封装了 Adobe Experience Platform Reactor API 的 MCP 服务器——即 Adobe Launch(现称为 Adobe Experience Platform Tags)背后的 API。
它让助手可以读取你的标记属性、规则、数据元素、扩展、库和环境,并具备创作更改的能力。默认情况下,它不会发布任何内容。 除非你显式启用 dangerous 模式并批准构建,否则此服务器的任何操作都不会影响线上站点。
为什么存在
Reactor API 是一个 JSON:API 接口,有约 240 个端点和一些棘手之处,导致直接把它交给模型使用会很不方便:
委托配置存储在
settings属性中,它是一个 JSON 编码的字符串,而不是对象。传入对象会返回一个含义不明的 422 错误。资源很臃肿——一个规则组件携带约 20 个审计字段——因此 200 条规则的列表会淹没上下文窗口。
规则如果没有规则组件就没有意义,而规则组件位于另一个独立的端点。
创作和发布是完全不同的关注点,很容易混淆。
这个封装解决了以上四个问题:它对 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 区域更改。 |
| 否 |
| 单个工具响应在截断前的最大字符数。 |
| 否 |
| 每个请求的超时时间。 |
写入模式
模式 | 可以执行 | 不能执行 |
| 列出并获取所有内容、搜索、读取审计事件 | 任何变更操作 |
|
| 删除、构建、发布 |
| 所有操作,包括删除、 | — |
该模式在两个层面强制执行:写入工具在低于其所需层级时根本不会被注册,而且 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 对象,其值的形式为 "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
分页。 默认每页 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 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