From 0f16be867dae6b55e5d097b7ef3f7b20fd5e567f Mon Sep 17 00:00:00 2001 From: Liam Ilan Date: Sun, 18 Oct 2026 16:51:54 -0700 Subject: [PATCH] feat(third_party): add Meta Ads plugin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../meta-ads/.cursor-plugin/plugin.json | 38 ++++++++++ third_party/meta-ads/CHANGELOG.md | 9 +++ third_party/meta-ads/LICENSE | 21 ++++++ third_party/meta-ads/README.md | 69 ++++++++++++++++++ third_party/meta-ads/assets/logo.png | Bin 0 -> 6127 bytes third_party/meta-ads/mcp.json | 11 +++ 8 files changed, 154 insertions(+) create mode 100644 third_party/meta-ads/.cursor-plugin/plugin.json create mode 100644 third_party/meta-ads/CHANGELOG.md create mode 100644 third_party/meta-ads/LICENSE create mode 100644 third_party/meta-ads/README.md create mode 100644 third_party/meta-ads/assets/logo.png create mode 100644 third_party/meta-ads/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index f3c174882..e78d8044f 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -393,6 +393,11 @@ "source": "third_party/x-ads", "description": "Manage ad campaigns, create ads, track conversions, and pull performance stats." }, + { + "name": "meta-ads", + "source": "third_party/meta-ads", + "description": "Manage campaigns, ads, audiences, and catalogs, and pull performance insights." + }, { "name": "attio", "source": "third_party/attio", diff --git a/README.md b/README.md index 7a286ba9d..17c115d34 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `similarweb` | [Similarweb](third_party/similarweb/) | Cursor | Integrations | Analyze website traffic, audiences, and competitors. | | `xero` | [Xero](third_party/xero/) | Cursor | Integrations | Read and write invoices, contacts, reports, and payroll. | | `x-ads` | [X Ads](third_party/x-ads/) | Cursor | Integrations | Manage ad campaigns, create ads, track conversions, and pull performance stats. | +| `meta-ads` | [Meta Ads](third_party/meta-ads/) | Cursor | Integrations | Manage campaigns, ads, audiences, and catalogs, and pull performance insights. | | `attio` | [Attio](third_party/attio/) | Cursor | Integrations | Search and update CRM records, lists, notes, and tasks. | | `hunter` | [Hunter](third_party/hunter/) | Cursor | Integrations | Find and verify emails, discover companies, and save leads. | | `gamma` | [Gamma](third_party/gamma/) | Cursor | Integrations | Generate presentations, documents, and webpages. | diff --git a/third_party/meta-ads/.cursor-plugin/plugin.json b/third_party/meta-ads/.cursor-plugin/plugin.json new file mode 100644 index 000000000..49bb44d13 --- /dev/null +++ b/third_party/meta-ads/.cursor-plugin/plugin.json @@ -0,0 +1,38 @@ +{ + "name": "meta-ads", + "displayName": "Meta Ads", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Manage campaigns, ads, audiences, and catalogs, and pull performance insights.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-get-started", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "meta", + "facebook", + "instagram", + "ads", + "advertising", + "campaigns", + "audiences", + "catalog", + "insights", + "mcp" + ], + "category": "integrations", + "tags": [ + "meta", + "facebook", + "ads", + "advertising", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/meta-ads/CHANGELOG.md b/third_party/meta-ads/CHANGELOG.md new file mode 100644 index 000000000..11f43a2f1 --- /dev/null +++ b/third_party/meta-ads/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `meta-ads` MCP server pointing at `https://mcp.facebook.com/ads`. +- OAuth sign-in through Facebook Login for Business using Cursor's Meta app ID as a pre-registered client, because Meta's authorization server does not accept dynamic client registration from Cursor. +- Logo: Meta's mark in Meta blue, on a white tile. diff --git a/third_party/meta-ads/LICENSE b/third_party/meta-ads/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/meta-ads/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/meta-ads/README.md b/third_party/meta-ads/README.md new file mode 100644 index 000000000..66e053049 --- /dev/null +++ b/third_party/meta-ads/README.md @@ -0,0 +1,69 @@ +# Meta Ads + +Cursor plugin that connects agents to [Meta's ads platform](https://www.facebook.com/business/ads) through Meta's official hosted [Model Context Protocol](https://modelcontextprotocol.io/) server at `https://mcp.facebook.com/ads`. + +This plugin signs you in with Facebook Login for Business and works with the business portfolios and ad accounts you choose to share. Agents can manage campaigns, ad sets, ads, audiences, and catalogs, and pull performance insights across Facebook and Instagram. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Meta Ads**. +3. Click **Install**, then complete the Facebook sign-in when prompted. + +Or run `/add-plugin meta-ads` in chat. + +## MCP + +```json +{ + "mcpServers": { + "meta-ads": { + "type": "http", + "url": "https://mcp.facebook.com/ads", + "auth": { + "CLIENT_ID": "1854843612533787" + } + } + } +} +``` + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Accounts | Read the ad accounts and business portfolios you shared | +| Insights | Pull performance insights | +| Campaigns | Create, update, and read campaigns | +| Ad sets | Create, update, and read ad sets | +| Ads & creatives | Create and manage ads and creatives | +| Audiences | Read and manage audiences | +| Datasets & pixels | Read and manage datasets and pixels | +| Catalogs | Read and manage product catalogs | + +The hosted server is the source of truth for tool names and schemas. + +## Setup + +No token to paste. The plugin ships Cursor's Meta app ID, because Meta does not accept dynamic client registration from Cursor. A Meta app ID is public, and the plugin needs no client secret. + +On first use, Cursor opens a browser window for Facebook Login for Business. Sign in, pick the business portfolios and ad accounts to share, and approve access. Requests run as you, against only the assets you shared. + +You can revoke access at any time on Facebook under **Settings → Business Integrations**. + +## Notes + +- Meta calls the server beta and rolls it out per ad account and per tool. If a tool reports `is_ads_mcp_enabled = false`, that ad account does not have access yet. +- The server can write, including creating campaigns and changing budgets. Review every tool call before you approve it. +- Calls share the Marketing API's rate limits for each ad account. + +## Docs + +- Ads MCP server, get started: https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-get-started +- Meta Business Help Center: https://www.facebook.com/business/help/1456422242197840 + +Logo is Meta's mark from [Simple Icons](https://simpleicons.org/), in Meta blue (`#0081FB`) on a white tile. + +## License + +MIT diff --git a/third_party/meta-ads/assets/logo.png b/third_party/meta-ads/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eed6a88e2fb00093b30de2c1b745c5e2ce7b25ad GIT binary patch literal 6127 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 literal 0 HcmV?d00001 diff --git a/third_party/meta-ads/mcp.json b/third_party/meta-ads/mcp.json new file mode 100644 index 000000000..c40760d78 --- /dev/null +++ b/third_party/meta-ads/mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "meta-ads": { + "type": "http", + "url": "https://mcp.facebook.com/ads", + "auth": { + "CLIENT_ID": "1854843612533787" + } + } + } +}