Meta ads bulk launcher: upload creatives, edit builds, preview, and create paused ads.
Ads Uploader takes an existing ad you already run, turns its settings into a reusable template, and builds brand-new ads on top of it — new media, copy, CTA, and targeting — in bulk. It also duplicates existing ads by post so social proof is preserved. Point your AI agent at it and describe the ads you want.
Agent-assisted vs fully agentic. For agent-assisted launches, we recommend having your agent assemble a saved build rather than creating ads headlessly — the build is accessible, editable, and launchable from the Ads Uploader web app, so you keep a human review-and-launch step in the polished UI.
Requires an existing paid Ads Uploader account with MCP access and a connected Meta account with the necessary permissions. MCP access is not included in trials.
This repository contains public documentation and connector configuration. Ads Uploader is a proprietary product; its application, backend and MCP server implementation are not included here. See License for the scope of reuse permissions.
Founded on a decade of hands-on Meta advertising, Ads Uploader gives an agent the deepest, most complete Meta (Facebook & Instagram) ad-creation workflows available — everything needed to actually ship campaigns end to end:
Built by a team that runs Meta ads at scale, and trusted by performance marketers and agencies managing serious Meta budgets.
claude mcp add --transport http ads-uploader https://adsuploader.com/api/mcp
Settings → Connectors → Add custom connector → paste the URL, then complete sign-in and consent in your browser:
https://adsuploader.com/api/mcp
Settings → Connectors (custom MCP) → add the server URL https://adsuploader.com/api/mcp → sign in when prompted.
This repository includes an Agent Plugins plugin.json and mcp.json, plus a .mcp.json compatibility file for directory discovery. The plugin connects to the hosted server; authentication happens in your browser.
Add to ~/.cursor/mcp.json (or a project .cursor/mcp.json):
{
"mcpServers": {
"ads-uploader": {
"url": "https://adsuploader.com/api/mcp"
}
}
}
After adding the server, complete the Ads Uploader sign-in and consent prompt. Ask the agent to list your ad accounts to check the connection.
Open Grok Connectors, choose New Connector → Custom, and enter https://adsuploader.com/api/mcp. Follow the authentication prompt. See the Grok connection guide for prerequisites and example prompts; this host connection is awaiting an end-to-end test.
Add to ~/.codex/config.toml:
[mcp_servers.ads-uploader]
command = "npx"
args = ["mcp-remote", "https://adsuploader.com/api/mcp"]
For hosts that need to upload files directly from disk. Requires Node.js 18+.
npm install -g @adsuploader/cli @adsuploader/mcp
ads login
{
"mcpServers": {
"ads-uploader": {
"command": "ads-mcp"
}
}
}
The hosted server authenticates through OAuth in your browser — no token copying. The local package reads the credentials saved by ads login. Ask the agent to list my ad accounts to confirm the connection.
Every tool carries a display title and read-only / destructive hints so your host can show the right guardrails.
Accounts & discovery (read-only)
| Tool | What it does |
|---|---|
ads_whoami | Show which Ads Uploader user this session is authenticated as |
ads_list_accounts | List Meta ad accounts available to you |
ads_list_campaigns | List campaigns in an ad account (name/status filters) |
ads_list_adsets | List ad sets in a campaign |
ads_list_ads | List ads in an ad set |
ads_get_ad | Get one ad with its creative details |
ads_list_pages | List Facebook Pages and their connected Instagram accounts |
ads_search_targeting | Search Meta targeting values for a build |
Presets & saved builds
| Tool | What it does |
|---|---|
ads_list_presets / ads_get_preset | Browse saved API and ad-text presets |
ads_save_preset | Save an existing ad as a reusable preset |
ads_list_builds / ads_get_build | Browse saved uploader builds |
ads_save_build / ads_update_build | Create or edit a durable saved build |
ads_fork_build | Fork a saved build into a new draft |
ads_delete_build | Delete a saved build |
Media
| Tool | What it does |
|---|---|
ads_upload | Upload media from URLs, a Google Drive folder, or disk |
ads_upload_finalize | Finalize a presigned upload batch |
ads_list_uploads / ads_get_upload | List batches or poll an ingest job |
Create & duplicate
| Tool | What it does |
|---|---|
ads_create | Create ads from a full AdSpec or saved build, incl. partnership ads |
ads_preview | Resolve a spec, check Meta permissions and partnership sponsors, without creating anything |
ads_duplicate_by_post | Duplicate ads by Page post ID, preserving social proof |
ads_duplicate_by_post_preview | Preview a post-ID duplication |
ads_get_job / ads_get_duplication | Poll or resume a running job |
ads_cancel_job | Cancel a creation or ingest job |
See SKILL.md for the full per-parameter reference agents should follow.
ads_create and ads_preview support partnership ads two ways:
Previews report the effective sponsors per ad and check partnership authorization for the First Identity before anything is created. Facebook post imports, mixed post/upload batches, and Threads on imported posts are not supported.
ads_preview resolves posts, media, and permissions using read and validate-only calls — it never creates ads or stores codes.still_running with a jobId after ~60s so tool calls stay under proxy deadlines; resume with ads_get_job.Questions or issues: support@adsuploader.com
The documentation, examples and connector configuration explicitly listed in LICENSE are available under the MIT License. You can reuse and adapt those files while retaining the license and copyright notice. The license field in plugin.json refers only to this public connector package and the files covered by that license.
Ads Uploader remains proprietary. The hosted product, application and backend source code, MCP server implementation, API/CLI implementation, and separately distributed npm packages (including @adsuploader/mcp and @adsuploader/cli) are outside this license. Linking to a package or service does not license its implementation. Service use remains subject to your subscription, permissions and Terms of Service.
The assets/ directory, logos, brand artwork and trademarks are excluded from the MIT license. All rights in excluded material are reserved by their respective owners. No right to imply affiliation or endorsement is granted.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @adsuploader/mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-adsuploader-mcp": {
"command": "npx",
"args": [
"-y",
"@adsuploader/mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@adsuploader/mcpnpmAds Uploader works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.