AdKit — Ads MCP

Run ad campaigns and browse ad libraries on Meta, Google, and TikTok — directly from AI coding agents like Claude, Cursor, and Windsurf.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Adkit Projects: List the user's AdKit projects. Call this FIRST — most tools (manage, library, studio, status, setup) require a projectId. Single-project users auto-resolve; users with several project
  • Adkit Status: Return project context, connected platforms, available ad accounts, and Studio setup. Requires projectId from adkit_projects.
  • Adkit Setup: Launch browser-based AdKit setup flows. Requires projectId from adkit_projects. Returns dashboard URLs the user can open.

What data it sees

Do you need an account

No: the server works without sign-in

Run ad campaigns and browse ad libraries on Meta, Google, and TikTok — directly from AI coding agents like Claude, Cursor, and Windsurf.

AdKit is a remote MCP server that connects your AI agent to the major ad platforms. Create campaigns, analyze performance, spy on competitor creatives, and generate AI ad copy — all without leaving your editor.

Key capabilities

  • Campaign management — Create, edit, pause, and monitor ad campaigns across Meta Ads, Google Ads, and TikTok Ads
  • Ad library browser — Search competitor ads on Meta Ad Library, Google Ads Transparency Center, and TikTok Creative Center
  • Performance analytics — Pull real-time metrics, spending data, and conversion stats
  • AI creative generation — Generate ad copy, headlines, and descriptions optimized for each platform

No API keys required — authenticate via OAuth in seconds. Works with any MCP-compatible client.

How to connect

How to connect AdKit — Ads MCP to Claude

The server address to paste into Claude settings:

https://ads--adkit.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect AdKit — Ads MCP to ChatGPT

The server address to paste into ChatGPT settings:

https://ads--adkit.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect AdKit — Ads MCP to Cursor

The server address to paste into Cursor settings:

https://ads--adkit.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (9)

Raw names from tools/list. Only developers need these.

adkit_projectsList the user's AdKit projects. Call this FIRST — most tools (manage, library, studio, status, setup) require a projectId. Single-project users auto-resolve; users with several projects must pick one.
adkit_statusReturn project context, connected platforms, available ad accounts, and Studio setup. Requires projectId from adkit_projects.
adkit_setupLaunch browser-based AdKit setup flows. Requires projectId from adkit_projects. Returns dashboard URLs the user can open.
adkit_checkinOnboarding only. Record that this agent successfully used AdKit after setup. Use only when explicitly asked during setup or connection verification.
adkit_feedbackReport AdKit bugs, confusing behavior, missing capabilities, feature requests, etc to AdKit. This is a fire-and-forget, don't block the main task. Use immediately when you notice a problem/bug or have a suggestion etc.
adkit_helpDiscover the AdKit MCP contract with progressive drill-down. Top-level paths: "manage" (campaigns/ads/reporting on Meta, Google, and TikTok, plus drafts), "library" (browse ads library and advertiser list), and "studio" (AI static ad generation). Start with adkit_help() for the root overview, or drill down like adkit_help({ path: "manage google campaigns create" }).
adkit_manageMeta, Google, and TikTok ads management. Each platform has different coverage — call adkit_help({ path: "manage <platform>" }) to see what is available. For Google placement performance, use platform: "google", entity: "results", action: "placements". IMPORTANT: Normalized params use AdKit field names — NOT raw platform API fields. For batch/full AdKit request bodies, pass data as a top-level tool argument, not inside params. Call adkit_help first for the exact params each entity/action expects. File uploads: use entity:"media" action:"request_upload_url" to get a signed PUT URL, upload bytes there, then call media upload with source:"temporary_upload" and the returned uploadId. Avoid base64 for large files. Mutations create drafts by default; only set publish: true with explicit user approval. Drafts are editable — prefer entity: "drafts", action: "update" over delete-and-recreate. All platforms support raw API access via entity "platform-api-request" with action "mutate" for features AdKit does not cover yet. Requires project-level opt-in — call adkit_help({ path: "manage platform-api-request" }) for usage.
adkit_libraryBrowse 200k+ ads from 500+ advertisers across Meta, Google, and LinkedIn. Discover proven ads, research competitors, and add new advertisers to track. NOT for managing your own campaigns - use adkit_manage for that. When presenting results, prefer a compact markdown table (if the client supports it) in a nice and readable format.
adkit_studioAI ad generation workspace. Create ad briefs, generate images (create/clone/resize/edit), list ad media, inspect media items, and share briefs. Use entity "ads" + action "generate" to generate images. Omit id to auto-create an ad, or provide id to add variants to an existing ad. To use a user's own photo as a clone/edit reference: entity:"media" action:"request_upload_url" → PUT file bytes → pass { type:"temporary_upload", id:<uploadId> } in generate references. NOT for live campaign data, spend, or performance reporting — use adkit_manage. Studio ads are creative drafts, not launched ads.