Official Meta Ads MCP OAuth fails: Dynamic registration is not available for this client

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Official Meta Ads MCP fails OAuth before any browser login appears. Connection dies with:

Dynamic registration is not available for this client.

No consent window opens. MCP stays in error / unauthenticated. Same failure path applies to Cursor CLI (same loopback redirect).

Steps to Reproduce

  1. Add to ~/.cursor/mcp.json:
{
  "mcpServers": {
    "meta-ads": {
      "url": "https://mcp.facebook.com/ads"
    }
  }
}
  1. Reload Cursor / MCP servers.
  2. Open Customize → MCPs and try to connect/authenticate meta-ads, or trigger mcp_auth from Agent.
  3. Observe: no browser OAuth UI; server fails during Dynamic Client Registration.

Expected Behavior

  1. Cursor starts OAuth against Meta Ads MCP.
  2. Browser opens Meta Business login/consent.
  3. Redirect returns to Cursor (http://localhost:8787/callback or the cursor.com agents MCP OAuth callback).
  4. Official Meta Ads tools become available.

Operating System

Windows 10/11

Version Information

Version: 3.12.10
VSCode Version: 1.128.0
Commit: 24a12dbd9cabf48956ce5bb3dbd234e41385b3d0
Date: 2026-07-16T03:15:48.538Z
OS: Windows_NT x64 10.0.26200

For AI issues: which model did you use?

N/A (MCP OAuth / connectivity issue, not model-specific)

For AI issues: add Request ID with privacy disabled

N/A (failure happens before tool use; reproducible from MCP connection alone)

Additional Information

Cursor MCP log:

Transient error connecting to streamableHttp server: Dynamic registration is not available for this client.
Connection failed: Dynamic registration is not available for this client.

Meta OAuth discovery paths under the same host:

  • /.well-known/oauth-protected-resource/ads
  • /.well-known/oauth-authorization-server/ads
  • /.well-known/register/ads

Direct POST to Meta’s registration endpoint:

redirect_uri Result
Claude AI MCP auth callback 200 (client_id 4510005499318155)
Claude.com MCP auth callback 200 (same client_id)
ChatGPT connector OAuth callback 200 (client_id 1718457352668935)
http://localhost:8787/callback 400 Dynamic registration is not available for this client
Cursor agents MCP OAuth callback 400 same
cursor://anysphere.cursor-mcp/oauth/callback 400 same

Also verified: Meta Graph / System User Bearer tokens are rejected by the Ads MCP with 401 Authentication Required, so Marketing API tokens cannot bypass this.

Ask: Please coordinate with Meta Ads AI Connectors to allowlist Cursor as an OAuth client for the official Ads MCP, including at least:

  1. http://localhost:8787/callback (desktop/CLI)
  2. Cursor agents MCP OAuth callback (web/agents)

Claude and ChatGPT appear allowlisted; Cursor does not. Until Meta accepts Cursor’s redirect URIs (or Cursor ships a Meta-approved static client_id), the official Meta Ads MCP cannot authenticate in Cursor.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @Victorguz,

This isn’t on your end or in Cursor’s OAuth flow: Meta’s registration endpoint is rejecting Cursor’s redirect URIs (while it has Claude’s and ChatGPT’s pre-registered), so the official Meta Ads MCP can’t finish auth in Cursor until Meta allowlists us. There’s no client-side workaround in the meantime - static credentials only help once Meta issues a client that includes Cursor’s redirect URIs.

We’ve let the team know so we can pursue this with Meta. I’ll post back here as soon as there’s an update.

A lot of thanks Mohit

any updates here @mohitjain it has been a while