aep — Claude Code MCP server: write access to Adobe Experience Platform
An MCP server with 61 tools that lets your agent create schemas, load batches and activate audiences in Adobe Experience Platform, not just read them.
claude mcp add --env AEP_CLIENT_ID=<AEP_CLIENT_ID> --env AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> --env AEP_ORG_ID=<AEP_ORG_ID> --env AEP_SANDBOX_NAME=<AEP_SANDBOX_NAME> --env AEP_MODE=<AEP_MODE> --transport stdio aep -- npx -y @focusgts/aep-mcp-serverWhat aep does
The server calls live Adobe APIs over OAuth Server-to-Server. Your agent gets tools for schemas, datasets, batch ingestion, segments and privacy erasure requests, and a single credential covers Experience Platform, Journey Optimizer and Customer Journey Analytics. The JO and CJA tools only read.
Writes stay off until you turn them on. The default safe posture allows changes only in a sandbox Adobe itself tags as development, and the server checks that tag through the Sandbox Management API before every write. If the type cannot be determined, the write is refused. An unrecognised AEP_MODE falls back to safe as well. A sandbox named prod is rejected before the mode is even resolved. On top of that, AEP_ALLOW_MUTATIONS=true is required, otherwise nothing changes at all.
Irreversible calls ask for a confirmation string tied to the target. Record deletion starts with dryRun: true, and real submission accepts only a phrase such as DELETE RECORDS <datasetId> <identityDigest>, where the digest matches the exact identity set. Segment and dataset deletion plus batch completion follow the same pattern. You need AEP_CLIENT_ID, AEP_CLIENT_SECRET, AEP_ORG_ID and a sandbox name to start.
What it helps with
- compose a schema from field groups and build a dataset on it
- upload an NDJSON file and follow the batch until it lands
- assemble a segment and push it to a destination
- handle a personal data erasure without touching extra records
- check how much data lifecycle quota is left
Example prompts for the agent
- Create a schema with the Demographic Details field group and a dataset on top of it.
- Delete every record tied to this email address, dry run first.
How to install aep
Platform CLI
claude mcp add --env AEP_CLIENT_ID=<AEP_CLIENT_ID> --env AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> --env AEP_ORG_ID=<AEP_ORG_ID> --env AEP_SANDBOX_NAME=<AEP_SANDBOX_NAME> --env AEP_MODE=<AEP_MODE> --transport stdio aep -- npx -y @focusgts/aep-mcp-serverReplace <…> with your own values. 1 more environment variable is in the server README
Platform CLI
codex mcp add aep --env AEP_CLIENT_ID=<AEP_CLIENT_ID> --env AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> --env AEP_ORG_ID=<AEP_ORG_ID> --env AEP_SANDBOX_NAME=<AEP_SANDBOX_NAME> --env AEP_MODE=<AEP_MODE> -- npx -y @focusgts/aep-mcp-serverReplace <…> with your own values. 1 more environment variable is in the server README
Config file
{
"mcpServers": {
"aep": {
"command": "npx",
"args": [
"-y",
"@focusgts/aep-mcp-server"
],
"env": {
"AEP_CLIENT_ID": "<AEP_CLIENT_ID>",
"AEP_CLIENT_SECRET": "<AEP_CLIENT_SECRET>",
"AEP_ORG_ID": "<AEP_ORG_ID>",
"AEP_SANDBOX_NAME": "<AEP_SANDBOX_NAME>",
"AEP_MODE": "<AEP_MODE>"
}
}
}
}Replace <…> with your own values. 1 more environment variable is in the server README
Config file
{
"servers": {
"aep": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@focusgts/aep-mcp-server"
],
"env": {
"AEP_CLIENT_ID": "<AEP_CLIENT_ID>",
"AEP_CLIENT_SECRET": "<AEP_CLIENT_SECRET>",
"AEP_ORG_ID": "<AEP_ORG_ID>",
"AEP_SANDBOX_NAME": "<AEP_SANDBOX_NAME>",
"AEP_MODE": "<AEP_MODE>"
}
}
}
}Replace <…> with your own values. 1 more environment variable is in the server README
Platform CLI
gemini mcp add -e AEP_CLIENT_ID=<AEP_CLIENT_ID> -e AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> -e AEP_ORG_ID=<AEP_ORG_ID> -e AEP_SANDBOX_NAME=<AEP_SANDBOX_NAME> -e AEP_MODE=<AEP_MODE> aep npx -y @focusgts/aep-mcp-serverReplace <…> with your own values. 1 more environment variable is in the server README
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about aep
How do I install aep in Claude Code?
Run `claude mcp add aep -e AEP_CLIENT_ID=<AEP_CLIENT_ID> -e AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> -e AEP_ORG_ID=<AEP_ORG_ID> -- npx -y @focusgts/aep-mcp-server. For a setup that also sets AEP_SANDBOX_NAME and AEP_MODE, use claude mcp add --env AEP_CLIENT_ID=<AEP_CLIENT_ID> --env AEP_CLIENT_SECRET=<AEP_CLIENT_SECRET> --env AEP_ORG_ID=<AEP_ORG_ID> --env AEP_SANDBOX_NAME=<AEP_SANDBOX_NAME> --env AEP_MODE=<AEP_MODE> --transport stdio aep -- npx -y @focusgts/aep-mcp-server`.
What does aep do?
It gives the agent Adobe Experience Platform tools: schemas, datasets, ingestion, segments and erasure requests. The server exposes 61 tools in 14 categories.
Why does aep refuse my write?
Under safe, writes go through only when Adobe classifies the sandbox as development. When the type cannot be confirmed, the change is blocked. AEP_ALLOW_MUTATIONS=true has to be set too.