Adobe Target MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Adobe Target MCPlist my live A/B activities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Adobe Target MCP
A Model Context Protocol server for Adobe Target. Lets AI assistants manage A/B and Experience Targeting activities through the Adobe Target Admin API, with automatic Adobe IMS OAuth token handling (fetch, cache, refresh).
Quickstart
Via Claude Code:
claude mcp add adobe-target \
-e ADOBE_CLIENT_ID=your-client-id \
-e ADOBE_API_KEY=your-client-id \
-e ADOBE_CLIENT_SECRET=your-client-secret \
-e ADOBE_TENANT=your-tenant \
-- npx -y @upendra_sengar/adobe-target-mcpRelated MCP server: hackle-mcp
Requirements
Node.js >= 18
An Adobe Developer Console project with:
The Adobe Target API enabled
OAuth Server-to-Server credentials (client ID + client secret)
Your Adobe Target tenant name (the subdomain in
mc.adobe.io/<tenant>/target/...)
Configuration
All configuration is passed as environment variables — no keys are ever stored in this package.
Variable | Required | Description |
| ✅ | Client ID from your Adobe Developer Console project |
| ✅ | API key sent as |
| ✅ | Client secret from your Adobe Developer Console project |
| ✅ | Adobe Target tenant subdomain |
| — | Port for SSE / Streamable HTTP modes (default |
| — |
|
| — | File path for logs in stdio mode |
For local development you can copy .env.example to .env instead.
Installation
These clients all use the same mcpServers format:
{
"mcpServers": {
"adobe-target": {
"command": "npx",
"args": ["-y", "@upendra_sengar/adobe-target-mcp"],
"env": {
"ADOBE_CLIENT_ID": "your-client-id",
"ADOBE_API_KEY": "your-client-id",
"ADOBE_CLIENT_SECRET": "your-client-secret",
"ADOBE_TENANT": "your-tenant"
}
}
}
}Add to your workspace .vscode/mcp.json:
{
"servers": {
"adobe-target": {
"command": "npx",
"args": ["-y", "@upendra_sengar/adobe-target-mcp"],
"env": {
"ADOBE_CLIENT_ID": "your-client-id",
"ADOBE_API_KEY": "your-client-id",
"ADOBE_CLIENT_SECRET": "your-client-secret",
"ADOBE_TENANT": "your-tenant"
}
}
}
}Transports
Mode | Command | Use case |
stdio (default) |
| Local MCP clients (Claude Desktop, Cursor, …) |
Streamable HTTP |
| Remote / shared deployments ( |
SSE |
| Legacy SSE clients ( |
HTTP modes listen on PORT (default 3001).
Tools
Tool | Description |
| List activities with filters (state, name, type, priority) and pagination |
| Get full details of an A/B activity |
| Create a new A/B activity |
| Update an existing activity |
| Rename an activity |
| Update the DOM selector of an activity's experience location |
Authentication flow
The server exchanges your client credentials for an Adobe IMS access token (ims-na1.adobelogin.com), caches it, and refreshes it automatically 5 minutes before expiry. Tokens are held in memory only — nothing is written to disk.
Docker
docker build -t adobe-target-mcp .
docker run -i --rm \
-e ADOBE_CLIENT_ID=your-client-id \
-e ADOBE_API_KEY=your-client-id \
-e ADOBE_CLIENT_SECRET=your-client-secret \
-e ADOBE_TENANT=your-tenant \
adobe-target-mcpLicense
Available Tools
6 toolscreate_ab_activityB
Create an AB activity in Adobe Target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the AB activity. | |
| metrics | Yes | The metrics for the AB activity. | |
| options | Yes | The options for the AB activity. | |
| locations | Yes | The locations for the AB activity. | |
| workspace | Yes | The workspace ID. | |
| experiences | Yes | The experiences for the AB activity. | |
| propertyIds | Yes | The property IDs associated with the activity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only says 'Create an AB activity,' without disclosing side effects, required permissions, rate limits, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly conveys the tool's purpose with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 required params, nested objects, no output schema), the description is too minimal. It lacks context on behavior, return values, or expected usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('AB activity') in Adobe Target, distinguishing it from sibling tools like update_activity or list_activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update_activity for modifications) or any prerequisites, such as requiring a workspace or property IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activity_by_idA
Get an Adobe Target activity by ID. Supports both AB and XT activity types. API key and tenant are loaded from environment variables automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| activityId | Yes | The ID of the activity to retrieve. | |
| activityType | No | The activity type: "ab" (default) or "xt". | ab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that it supports both AB and XT types and that auth credentials are auto-loaded. This adds value beyond the schema. As a read operation, no destructive effects are expected, and the description is consistent with read-only behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second provides auth context. Every sentence carries essential information with no redundancy. The structure is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not describe the return value or response structure. For a simple retrieval tool this may be adequate, but it lacks completeness regarding what the agent can expect to receive. Given the tool's simplicity and sibling context, a score of 3 reflects this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that the tool supports both activity types (AB and XT), which aligns with the schema enum but reinforces meaning. It also implies the activityId parameter by stating 'by ID'. The schema already describes each parameter adequately; the description provides marginal added clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get an Adobe Target activity by ID' and specifies it supports both AB and XT activity types. This verb-resource combination is specific and distinguishes it from siblings like list_activities (list) or create_ab_activity (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions automatic loading of API key and tenant from environment variables, providing context for setup. However, it does not explicitly state when to use this tool versus alternatives (e.g., when not to use it) or compare to siblings like list_activities. The usage context is implied but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_activitiesC
List activities from Adobe Target. API key and tenant are loaded from environment variables automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by activity name (exact name or substring match). | |
| type | No | Filter by activity type. | |
| limit | No | Maximum number of activities to return (default: 10). | |
| state | No | Filter by activity state (approved, deactivated, paused, saved, deleted). | |
| offset | No | Number of activities to skip for pagination (default: 0). | |
| priority | No | Filter by activity priority. Allowed values: 0-999 for regular activities, -10 for monitoring activities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It implies a read-only operation (listing) but does not explicitly state that it is safe or non-destructive. It also fails to mention rate limits, pagination behavior beyond what the schema provides, or the format of the returned data. Score 2 because it adds minimal behavioral context beyond the implicit listing action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences: one for the core purpose and one for credential setup. It is efficient and front-loaded, with no extraneous information. Every sentence serves a defined role, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 100% schema coverage, the description lacks an overview of the tool's behavior (e.g., it returns a list of activities matching optional filters) and does not describe the output format. For a list tool with six parameters and no output schema, the description should provide more context. Score 2 because it is minimal and misses key contextual elements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add any extra meaning to the parameters beyond the schema's own descriptions. The mention of automatic credential loading is not parameter-specific. Baseline score 3 is appropriate since the description adds no additional parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List activities from Adobe Target,' specifying the verb 'list' and the resource 'activities.' It does not explicitly distinguish from sibling tools like get_activity_by_id or create_ab_activity, but the purpose is evident. Score 4 because it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions automatic loading of API key and tenant from environment variables, providing some context. However, it offers no guidance on when to use this tool versus alternatives (e.g., get_activity_by_id for a single activity, create_ab_activity for creation), nor does it state prerequisites or conditions. Score 2 due to minimal usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_activityA
Update an Adobe Target activity by injecting new HTML/JS code into a named experience. API key and tenant are loaded from environment variables automatically. Handles: deep-clone of payload, creating new option slots (optionLocalId=0), orphan pruning, offerContent deduplication (prevents UniqueElements AT error), and supports both AB and XT activity types.
| Name | Required | Description | Default |
|---|---|---|---|
| newCode | Yes | The new HTML/JavaScript code to inject into the target experience. | |
| activityId | Yes | The ID of the Adobe Target activity to update (MANDATORY). | |
| activityType | No | The activity type: "ab" (default) or "xt". | ab |
| experienceName | Yes | The Adobe Target experience name to update (e.g. "MCP Banner"). Matched case-insensitively. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and lists important behaviors such as deep-cloning, orphan pruning, deduplication, and support for activity types. However, it does not cover permissions, failure modes, or idempotency, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise at 3-4 sentences, front-loaded with the main action before listing handling details. It could be slightly more structured (e.g., bulleted list for behaviors) but is still clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and 100% schema coverage, the description covers the main behaviors (cloning, deduplication, type support) necessary for agent invocation. However, it omits details on error handling, idempotency, or what happens if the experience is not found, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema coverage is 100%, the baseline is 3. The description adds value by noting that experienceName is matched case-insensitively and that activityType supports 'ab' and 'xt', which complements the schema. It also mentions automatic env variable loading for API key/tenant, which are not parameters but helpful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an Adobe Target activity by injecting new HTML/JS code into a named experience, which is a specific and distinct action from sibling tools like update_activity_name or update_activity_selector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for code injection into AB or XT activities but lacks explicit guidance on when not to use it or how it differs from alternatives. No direct exclusions or recommendations are provided, relying on the user to infer from the list of siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_activity_nameA
Update the name of an activity in Adobe Target. API key and tenant are loaded from environment variables automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name for the activity. | |
| activityId | Yes | The ID of the activity to update. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that API key and tenant are loaded from env vars automatically, which is useful authentication context. It does not detail side effects or reversibility, but for a simple rename, this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence delivers the core purpose immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with good schema and no output schema, the description covers purpose and authentication. It lacks return value details, but that is not mandated given the lack of output schema. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning or usage details for the parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'the name of an activity in Adobe Target'. It is specific and immediately distinguishes from sibling tools like update_activity (which likely updates other fields) and update_activity_selector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to rename an activity) but does not provide explicit guidance on when not to use or differentiate from alternatives like update_activity. The mention of environment variables is helpful but does not address usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_activity_selectorA
Update one or more location selectors in an Adobe Target activity. Use this when the activity's primary location selector (e.g. "BODY > *:eq(0)") does not match the intended CSS injection target (e.g. "#business"). Returns a list of available location names if the specified name is not found. API key and tenant are loaded from environment variables automatically. Supports both AB and XT activity types.
| Name | Required | Description | Default |
|---|---|---|---|
| activityId | Yes | The ID of the Adobe Target activity to update (MANDATORY). | |
| activityType | No | The activity type: "ab" (default) or "xt". | ab |
| selectorUpdates | Yes | List of location selector updates to apply. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses one error case (returns available names if location not found), supports both AB and XT, and mentions env vars. Missing details on success response, permissions, destructive nature, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences covering purpose, usage, edge case, environment, and type support. Concise without being terse; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, nested objects, and no output schema, the description covers purpose, when to use, an error behavior, and environment setup. Missing success response details but otherwise complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are thorough. The description adds context about when to use the tool but doesn't enrich individual parameter meanings beyond what's in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates location selectors in an Adobe Target activity, with an example use case (when primary selector doesn't match intended target). It differentiates from siblings like update_activity_name but doesn't explicitly contrast with update_activity, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use ('Use this when the activity's primary location selector does not match...'). Does not give when-not-to-use or alternatives, but the context is sufficient. The mention of automatic environment loading is helpful setup info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
create_ab_activity - First observed
get_activity_by_id - First observed
list_activities - First observed
update_activity - First observed
update_activity_name - First observed
update_activity_selector
TDQS
Each tool targets a distinct action: listing, getting by ID, creating AB activities, updating the name, injecting HTML/JS code, or modifying selectors. No two tools overlap in purpose.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_activities, update_activity_name, create_ab_activity). No mixing of conventions.
With 6 tools, the set is well-scoped for an Adobe Target MCP server. It provides core operations without being excessive or sparse.
The set covers create, read, and update operations, but notably lacks a delete activity tool. This creates a gap in basic lifecycle management.
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
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol server for todo.vu task management and time tracking.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables interaction with the Tradovate API for managing trading contracts, positions, orders, and accounts.1MIT

hackle-mcpofficial
AlicenseBqualityCmaintenanceA Model Context Protocol server for Hackle API providing tools and resources for querying A/B Test data.195203MIT- AlicenseCqualityFmaintenanceA Model Context Protocol server for Adobe Experience Manager that provides REST/JSON-RPC APIs for content, component, and asset management with AI, chatbot, and automation integrations.4814AGPL 3.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server that integrates with the Harvest API v2, enabling time tracking management including listing, creating, updating, and deleting time entries, as well as managing projects, tasks, users and generating reports.1727MIT
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/Upendrasengar/adobe-target-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server