Skip to main content
Glama
Upendrasengar

Adobe Target MCP

Adobe Target MCP

npm version npm downloads Node License

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-mcp

Related 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

ADOBE_CLIENT_ID

Client ID from your Adobe Developer Console project

ADOBE_API_KEY

API key sent as X-Api-Key (same value as the client ID)

ADOBE_CLIENT_SECRET

Client secret from your Adobe Developer Console project

ADOBE_TENANT

Adobe Target tenant subdomain

PORT

Port for SSE / Streamable HTTP modes (default 3001)

MCP_TOOL_LOGGING

true to enable verbose per-tool logging

MCP_LOG_FILE

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)

npx -y @upendra_sengar/adobe-target-mcp

Local MCP clients (Claude Desktop, Cursor, …)

Streamable HTTP

npx -y @upendra_sengar/adobe-target-mcp --streamable-http

Remote / shared deployments (POST /mcp)

SSE

npx -y @upendra_sengar/adobe-target-mcp --sse

Legacy SSE clients (GET /sse, POST /messages)

HTTP modes listen on PORT (default 3001).

Tools

Tool

Description

list_activities

List activities with filters (state, name, type, priority) and pagination

get_ab_activity_by_id

Get full details of an A/B activity

create_ab_activity

Create a new A/B activity

update_activity

Update an existing activity

update_activity_name

Rename an activity

update_activity_selector

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-mcp

License

MIT

Available Tools

6 tools
create_ab_activityB

Create an AB activity in Adobe Target.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the AB activity.
metricsYesThe metrics for the AB activity.
optionsYesThe options for the AB activity.
locationsYesThe locations for the AB activity.
workspaceYesThe workspace ID.
experiencesYesThe experiences for the AB activity.
propertyIdsYesThe property IDs associated with the activity.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
activityIdYesThe ID of the activity to retrieve.
activityTypeNoThe activity type: "ab" (default) or "xt".ab

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by activity name (exact name or substring match).
typeNoFilter by activity type.
limitNoMaximum number of activities to return (default: 10).
stateNoFilter by activity state (approved, deactivated, paused, saved, deleted).
offsetNoNumber of activities to skip for pagination (default: 0).
priorityNoFilter by activity priority. Allowed values: 0-999 for regular activities, -10 for monitoring activities.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
newCodeYesThe new HTML/JavaScript code to inject into the target experience.
activityIdYesThe ID of the Adobe Target activity to update (MANDATORY).
activityTypeNoThe activity type: "ab" (default) or "xt".ab
experienceNameYesThe Adobe Target experience name to update (e.g. "MCP Banner"). Matched case-insensitively.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe new name for the activity.
activityIdYesThe ID of the activity to update.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
activityIdYesThe ID of the Adobe Target activity to update (MANDATORY).
activityTypeNoThe activity type: "ab" (default) or "xt".ab
selectorUpdatesYesList of location selector updates to apply.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 6 tool updatesv0.1.0
    • First observedcreate_ab_activity
    • First observedget_activity_by_id
    • First observedlist_activities
    • First observedupdate_activity
    • First observedupdate_activity_name
    • First observedupdate_activity_selector

TDQS

A3.7/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

With 6 tools, the set is well-scoped for an Adobe Target MCP server. It provides core operations without being excessive or sparse.

Completeness3/5

The set covers create, read, and update operations, but notably lacks a delete activity tool. This creates a gap in basic lifecycle management.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables interaction with the Tradovate API for managing trading contracts, positions, orders, and accounts.
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol server for Hackle API providing tools and resources for querying A/B Test data.
    19
    520
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A 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.
    17
    27
    MIT

Latest Blog Posts

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