Docs

Connect AI assistants to DropCPL (MCP)

Connect Claude, ChatGPT, Codex or Cursor to the DropCPL MCP server: read Meta ads, CPL by creative and landing pages, and act on them with OAuth.

DropCPL runs a public MCP server (Model Context Protocol). Connect your AI assistant once and it can read your DropCPL data (campaigns, Meta ads with their spend, landing pages and their performance) and, if you allow it, act on them through the same tools the in-app AI agent uses. Everything stays scoped to the subaccount you choose when you connect.

Server URL:

https://mcp.dropcpl.com/mcp

There are no API keys or tokens to copy: you connect with your normal DropCPL login (OAuth) and choose read-only or read + write access on the consent screen.

Quick setup

If you have npx (it comes with Node.js), one command configures every installed client that supports MCP:

npx -y add-mcp https://mcp.dropcpl.com/mcp

It detects Claude Code, Cursor, VS Code Copilot and other supported tools, writes their configuration and opens the browser for authorization.

Connect Claude

Claude Code

claude mcp add --transport http dropcpl https://mcp.dropcpl.com/mcp

Then run /mcp inside Claude Code and complete the authorization (a browser opens with your DropCPL login). Prompts to try:

  • “List my campaigns and their landing pages.”
  • “Which creative and landing page combination has the lowest CPL this week?”

Claude (web and desktop)

  1. Open Customize → Connectors.
  2. Click + Add, then Add custom connector.
  3. Name: dropcpl · URL: https://mcp.dropcpl.com/mcp
  4. Keep the detected OAuth sign-in and approve the authorization in the browser.
  5. In a chat, enable the connector from the + button → Connectors.

Custom connectors are available on every Claude plan; the Free plan is limited to one. On Team and Enterprise plans an Owner adds the connector under Organization settings → Connectors, then members click Connect. Source: Anthropic’s custom connector guide.

Connect ChatGPT and Codex

ChatGPT

  1. Open chatgpt.com/plugins.
  2. Click +, then Add custom MCP server.
  3. Name it dropcpl, choose a public HTTPS endpoint and paste https://mcp.dropcpl.com/mcp.
  4. Set authentication to OAuth, read the risk warning and confirm.
  5. Click Create as a plugin, review the tools ChatGPT discovers, then approve the sign-in in the browser.

Your account or workspace policies decide whether custom MCP servers are allowed. Source: OpenAI’s guide to connecting ChatGPT.

Codex CLI

codex mcp add dropcpl --url https://mcp.dropcpl.com/mcp
codex mcp login dropcpl        # opens the browser: approve with your DropCPL login

Codex registers itself as an OAuth client on first login (dynamic client registration), so there is no client ID to request and no key to paste. Codex also reads MCP servers from ~/.codex/config.toml, or from a project-scoped .codex/config.toml in trusted projects:

[mcp_servers.dropcpl]
url = "https://mcp.dropcpl.com/mcp"

The CLI, the IDE extension and the ChatGPT desktop app share this configuration.

Connect any other MCP client

Clients configured with JSON (Cursor, VS Code Copilot, Windsurf)

{
  "mcpServers": {
    "dropcpl": {
      "url": "https://mcp.dropcpl.com/mcp"
    }
  }
}

Restart the client: the first tool call opens the OAuth flow.

Clients that only support stdio

Use the mcp-remote bridge:

{
  "mcpServers": {
    "dropcpl": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.dropcpl.com/mcp"]
    }
  }
}

Clients that resolve OAuth by themselves

Paste these two documents only if the client asks for them:

https://mcp.dropcpl.com/.well-known/oauth-protected-resource/mcp   (RFC 9728)
https://app.dropcpl.com/.well-known/oauth-authorization-server      (RFC 8414)

The second one advertises the authorization, token and registration endpoints. Registration is dynamic, so the client creates its own credentials when it connects.

What the assistant can do

GroupToolsNeeds write access?
Campaignslist campaigns, stats, setup statusNo
Landing pages (read)list landing pages by campaign, status, one landing page with its full HTML, search inside that HTML or read a range of lines, versions, publish state, public URLs, live checkNo
Domains (read)the subaccount’s domains and their verification stateNo
Meta ads (read)Meta connection (ad account, Page, pixel, token, optional pre-flight check), campaigns on the ad account, a campaign’s ads by ad set with spend and linked creative, live ad setsNo
Custom valueslist placeholdersNo
Domains (write)add a domain, start its verificationYes
Landing pages (write)create a landing page, replace its HTML, patch it with exact text replacements, save/list/revert versions, validate before publishing, publish, unpublish, archiveYes
Landing pages (destructive)delete a landing page; flagged as destructive, so the client asks for approvalYes
Meta ads (write)set the Page and pixel for ads, create a Meta campaign or link an existing one, add a creative from a public URL, create an ad set, launch a creative as an ad (everything is created paused), link an ad to a creative, sync nowYes
Meta ads (delivery)activate or pause an ad; flagged as destructive, so the client asks for approval (activating spends budget)Yes
Custom values (write)create or update placeholdersYes

The whole landing page lifecycle runs from the assistant, with no repository and no server access: connect a domain → create the landing page → write its HTML → validate → publish → check that the public URL responds. The live check answers with a verdict (not-reachable plus a hint) when DNS or SSL is not ready yet, so a landing page that does not resolve is a result to read, not a failed call.

To change a word, a headline or a price on an existing landing page, ask for the fragment to be patched: the assistant searches the HTML and sends only the exact text and its replacement. Asking it to “rewrite the landing page” regenerates the whole document, which is slow and easy to get wrong on a large landing page. The patch keeps the same validation, saves a version first, and is refused if the searched text is missing or appears more than once.

Budget and targeting edits after creation, and deleting ads, are not available through MCP: they stay in Meta Ads Manager. Campaigns and ad sets created through MCP stay paused until you activate them in Ads Manager; MCP switches individual ads on or off.

Security and access

  • Read-only is the default. The assistant sees what you can see in the app, nothing more.
  • Write access is opt-in and applies only to the subaccount you select during consent. Deleting a landing page and switching an ad on or off are flagged as destructive tools: MCP clients ask you to approve them, so do not set those tools to “always allow”.
  • OAuth 2.1 with PKCE: no long-lived API keys in configuration files. Access tokens expire and the assistant refreshes them silently.
  • Every write action is logged in your DropCPL Action Log.
  • Revoking: disconnect the server from the client’s MCP settings, or revoke the connection in DropCPL under AI Connections (agency area at /mcp, subaccount area at /<subaccount>/mcp).

What the assistant can do is always bounded by your own section permissions on that subaccount, whatever scope you approved.

Troubleshooting

SymptomFix
401 invalid_tokenRe-authorize: disconnect and connect the server again in your client.
forbidden: write scope requiredThe connection was authorized read-only. Disconnect and re-authorize with write access.
forbidden: no "…" permissionYour DropCPL role does not allow that section for the selected subaccount: ask your agency owner.
Tools do not appear after connectingRestart the client: most clients load MCP tools at startup.
“Connector not approved” (Claude)On Team and Enterprise plans an Owner must add the connector first; on the Free plan you can have only one custom connector.

Reference

  • Protocol: Model Context Protocol, remote server, Streamable HTTP (spec 2026-07-28, stateless).
  • Discovery: https://mcp.dropcpl.com/.well-known/oauth-protected-resource/mcp
  • What the AI agent does inside the app: AI agent. How ads are created and synced: Meta Ads.
  • Comparing the ways to connect an assistant to Meta ads (Meta’s official server, third-party servers, DropCPL): Meta Ads MCP.

Last updated:

FAQ

What is the DropCPL MCP server URL?+

https://mcp.dropcpl.com/mcp. It is a remote MCP server over Streamable HTTP: add it to your AI assistant and sign in with your DropCPL account when the browser opens.

Do I need an API key?+

No. The connection uses OAuth 2.1 with PKCE and dynamic client registration: you approve it with your normal DropCPL login and the assistant refreshes its token by itself.

Can the assistant spend money on Meta?+

Only with write access. Campaigns, ad sets and ads created through MCP are created paused. Activating or pausing an ad is flagged as a destructive tool, so MCP clients ask you to approve the call unless you have set them to always allow it. Budget and targeting changes after creation stay in Meta Ads Manager.

Which AI assistants work with it?+

Any client that speaks MCP over Streamable HTTP: Claude Code, Claude custom connectors (web and desktop), Codex, ChatGPT custom MCP servers, Cursor, VS Code Copilot and Windsurf. Clients that only support stdio can use the mcp-remote bridge.

Can the assistant see other clients of my agency?+

No. Every connection is scoped to the subaccount you select on the consent screen, and it stays bounded by your own permissions on that subaccount.

Ready to find out what
converts, for real?

Free to start.

Start free →