Skip to main content
Glama

CDP MCP 服务器

一个 MCP (Model Context Protocol) 服务器,让您的 LLM 能够触手可及地使用 Acquia 客户数据平台 (Customer Data Platform)。将 Claude、Copilot 或任何支持 MCP 的客户端指向此服务器,它就可以读取您的租户、驱动营销活动、操作工作流、查询报告,并处理那些繁琐的行政工作,让您无需亲自动手。

构建它的初衷是:凌晨两点在 CDP 界面上点来点去并不是什么有趣的体验。


您将获得

  • 约 300 个工具,涵盖权限、数据仓库、营销活动、配置、连接器、报告、预测、邮件发送、可发送邮件页面、安全、缓存和状态 API — 请参阅 SUPPORTED_TOOLS.md 获取完整目录

  • 8 个剧本资源,教导 LLM 如何对真实的多步骤流程进行排序(营销活动向导、C360 个人资料渲染、工作流创作、连接器入职、UDMP 模式编辑等)——这些资源源自对 Vega 和配置 UI 的逆向工程,因此模型不再需要猜测

  • 两种认证模式:OAuth2 密码授权(自动刷新、401 重试、锁序列化)或静态 Bearer 令牌(如果您已有)

  • 开发 / QA / 生产 环境切换,通过单个 CDP_ENVIRONMENT 变量实现

  • Stdio 传输,可直接接入 Claude Desktop、VS Code Copilot、Continue、mcphost、Open WebUI(通过 supergateway)或 MCP Inspector

如果上述内容听起来像天书,请浏览 TUTORIAL.md —— 它通过可复制粘贴的命令引导您完成每个部分。有关工具名称及其功能的完整列表,请参阅 SUPPORTED_TOOLS.md


快速入门

# 1. Clone and install
git clone https://github.com/atharva-joshi77/cdp-mcp.git
cd cdp-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

# 2. Configure
cp .env.example .env
# edit .env: CDP_ENVIRONMENT, CDP_TENANT_ID, and either
#   CDP_CLIENT_ID/SECRET + CDP_USERNAME/PASSWORD  (OAuth2)
# or CDP_AUTH_TOKEN                                (static token)

# 3. Run
cdp-mcp

cdp-mcp 通过 stdio 使用 JSON-RPC 通信,因此直接运行它看起来会像挂起一样 —— 这是正常的。将其连接到 MCP 客户端(见下文),它就会开始工作。

连接到 Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "cdp": {
      "command": "/absolute/path/to/cdp-mcp/.venv/bin/cdp-mcp",
      "env": {
        "CDP_ENVIRONMENT": "dev",
        "CDP_TENANT_ID": "12345",
        "CDP_CLIENT_ID": "...",
        "CDP_CLIENT_SECRET": "...",
        "CDP_USERNAME": "...",
        "CDP_PASSWORD": "..."
      }
    }
  }
}

重启 Claude,您应该会在工具选择器中看到约 300 个 cdp_* 工具。对于 VS Code、Continue、Ollama/Open WebUI 和 MCP Inspector 的设置,完整的方案位于 TUTORIAL.md §5


要求

项目

最低要求

Python

3.11+

pip

23.0+

带有 API 凭据的 CDP 租户

是的,抱歉

依赖项(自动安装):

  • mcp>=1.13.0 — FastMCP 框架

  • httpx>=0.27.0 — 异步 HTTP

  • pydantic + pydantic-settings — 配置 + 验证

  • python-dotenv.env 加载


项目布局

src/cdp_mcp/
├── __main__.py           # entry point: `cdp-mcp` / `python -m cdp_mcp`
├── server.py             # FastMCP server, registers tools + resources
├── config.py             # env/.env loader
├── auth/                 # OAuth2 + static-token provider
├── utils/                # shared httpx client, error helpers
├── resources/            # MCP resource URIs (tenant/*, docs/*)
├── docs/                 # the eight playbooks, shipped as resources
├── types/                # pydantic request/response models
└── tools/                # one subpackage per CDP service area
    ├── permissions/      users, roles, clients
    ├── dw/               data warehouse, A360, audiences, offers, trackers
    ├── campaign/         defs, audiences, messages, dispatches, runs, exports
    ├── config_api/       tenants, workflows, schedules, UDMP, DQE, clusters…
    ├── connectors/       input + output connectors, templates
    ├── reports/          dashboards, widgets, cubes, QL
    ├── predictions/      prediction defs + content templates
    ├── mailer/           accounts, subusers, identifiers, batches
    ├── emailable_pages/  emailable-pages CRUD
    ├── security/         token, auth, SSO, password reset
    ├── cache/            cache ops
    ├── spam/             spam score
    ├── status/           status + orchestration/purge status
    ├── provisions/       self-service provisioning
    ├── global_actions/   platform-wide actions
    └── alerts/           stub (real Alerts API lives in a different stack)

每个工具共享一个带有池化 httpx 连接的 HttpClient、一个共享的认证令牌缓存、围绕刷新的 asyncio.Lock、一次性 401 重试、URL 编码的租户 ID 以及 logger.info 请求/响应跟踪。如果感觉不对劲,日志通常会说明真相。


剧本(秘密武器)

仅有工具列表是不够的 —— 许多 CDP 流程是“POST 一个定义,然后 POST ?action=publish,然后 GET 状态,然后可能使用单独的计划 ID POST ?action=schedule”。如果任由其自行处理,LLM 经常会弄错这些步骤。

因此,该服务器将八个 Markdown 剧本作为 MCP 资源提供:

资源

涵盖内容

cdp://docs/campaign-playbook

完整的 Vega 营销活动向导生命周期、folderId 规则、批量与触发式发布、datasetDef 复制恢复、数据导出保存→运行、异步受众规模计算

cdp://docs/orchestration-playbook

计划 CRUD、连接器/报告/导出/营销活动运行、sQueryDef 验证→保存、配置器、压缩、删除前清空

cdp://docs/customer360-playbook

三并行获取个人资料加载、布局深度合并、实时轮询、fq 搜索编码、GDPR 清除

cdp://docs/admin-ops-playbook

DQE 批量写入、A360 三阶段保存、状态页面作业控制、GDPR 管理员覆盖

cdp://docs/reports-dashboards-playbook

数组包装 POST、多维数据集元数据遍历、即席与缓存执行、双重新鲜度检查

cdp://docs/workflow-authoring-playbook

符号 workflowId 与数字 workflowDBId、图形加载、步骤 + 边缘批处理、动词分类法

cdp://docs/connector-wizard-playbook

输入/输出连接器拆分、4 或 5 步向导、referenceIdentityId 计划陷阱

cdp://docs/udmp-metadata-playbook

嵌套读取/扁平写入形状、级联、发布顺序、自定义属性白名单

MCP 客户端在连接时会自动发现它们,并且服务器的 instructions 块会将模型指向每一个资源。


认证说明

  • OAuth2(推荐):提供程序使用标头中的凭据调用 POST {baseUrl}/token?action=create,将令牌缓存在内存中,在 asyncio.Lock 后序列化并发刷新,并在过期前约 60 秒刷新。来自下游调用的任何 401 都会触发一次性强制刷新 + 重试。

  • 静态令牌:设置 CDP_AUTH_TOKEN,则完全跳过 OAuth2 路径。您需要自行负责轮换。

切勿将真实密钥放入此存储库中。.env 已被 gitignore 忽略。


开发

# smoke test: should print the server's capabilities + tool list
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' | cdp-mcp

# interactive tool browser
npx @modelcontextprotocol/inspector cdp-mcp

# verify tool count
python3 -c "from cdp_mcp.server import create_server; import asyncio; \
  print(len(asyncio.run(create_server().list_tools())))"

TUTORIAL.md §9 中有一个更完整的故障排除矩阵(服务器无法启动、401 错误、客户端无法连接等)。


状态

  • 工具数量:301,跨越 12 个 CDP 服务

  • 剧本资源:8

  • 警报工具被有意存根 —— 真正的警报 API 位于单独的 MuleSoft/Go 堆栈上,需要其自己的基础 URL 和认证(欢迎提交 PR)

  • 集成测试工具正在开发中(脚手架已存在,完整的合同覆盖率作为后续跟踪)


贡献

  1. Fork、创建分支、修改。

  2. 运行 ./gradlew-equivalent —— 没关系,只需 pip install -e . 和上面的冒烟测试即可。

  3. 如果添加工具,请将其连接到匹配的 tools/<area>/__init__.py 注册器中。

  4. 如果添加多步骤流程,请在 src/cdp_mcp/docs/ 下为其编写剧本,并在 resources/resource_providers.py 中注册该资源。

  5. 提交 PR。在描述中保持友好。


许可证

内部/专有 —— 在您自己的租户之外使用此功能前,请咨询 Acquia。


httpxpydantic 以及对不稳定的 CDP 向导的怨念共同构建。

Install Server
A
security – no known vulnerabilities
F
license - not found
C
quality - C tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/atharva-joshi77/cdp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server