Add Sprites to Cursor
Available on Any Cursor plan that allows MCP servers, on desktop and on Cursor web agents. You need a Sprites account with your channels already connected — the connector acts on that connection, so Cursor never handles a platform credential.
Write the config
Put the entry in ~/.cursor/mcp.json to have Sprites available in every project, or in .cursor/mcp.json inside one repo to scope it there.
~/.cursor/mcp.json{ "mcpServers": { "sprites": { "url": "https://mcp.sprites.ai/mcp" } } }Or add it from the UI
Cursor lists MCP servers under Customize in the sidebar; adding one there writes the same file.
CursorCustomizeMCPNew MCP serverSign in
Cursor finds the Sprites authorization server from the endpoint's protected-resource metadata, registers itself, and opens a browser for the consent screen. Desktop completes on http://localhost:8787/callback and web agents on cursor.com; both are pre-registered, so there is nothing to allowlist.
Spriteswants access on behalf of Cursor- Read your connected ad accounts and site data
- Draft campaigns, creatives and pages for your approval
- Apply only the changes you approve
AllowCancelKeep it in the repo, not in your dotfiles
A project-scoped .cursor/mcp.json is worth committing: every teammate who opens the repo gets the same connector and signs in as themselves. The file holds a URL and nothing else — the token is per person and never touches the config.
What Cursor can reach
All ten channels run through the one connector. Rows with a guide go deeper on that pairing; the rest are covered on the channel's own page.
| Channel | What Cursor does with it | Guide |
|---|---|---|
| Google Ads | Change the pricing copy and update the ads that quote it without a second tool. | Set up → |
| Meta | Creative and landing page reviewed together, since the mismatch between them is usually the problem. | Set up → |
| Cost per lead by job function, ABM account lists, sponsored content that converts. | Set up → | |
| TikTok | Hook-level hold rates, the next creative batch, and rotation before the CPA moves. | Set up → |
| Performance per subreddit, community-native copy, and the tourist traffic to cut. | Set up → | |
| GA4 | Live GA4 next to the instrumentation, which is the only place a tracking bug is cheap to find. | Set up → |
| SEO | Search Console evidence beside the template that produces the pages it is about. | Set up → |
| AEO | Who gets cited by ChatGPT and Perplexity for your prompts, and the pages that change it. | Set up → |
| Shopify | Profit per product after ad cost, collection pages, and catalogue-true creative. | Set up → |
| GBP | Performance per location, the listings missing fields, and posts that keep the map pack. | Set up → |
Marketing workflows worth doing in Cursor
The campaign and the page it points at live in the same window: change the pricing copy, then have Sprites update the ads that quote it, without a second tool.
Diagnose tracking against live GA4
Read what analytics actually recorded while looking at the code that fires it, instead of deploying and waiting to find out.
Update a landing page from campaign evidence
The search terms that are really converting, applied to the copy of the page they land on, in one pass.
Query Search Console while fixing templates
Which URLs on this template lost position, checked without leaving the file that generates them.
Build internal campaign dashboards
Real account data to develop against, so an internal reporting tool is built against the real shape rather than a fixture.
Permissions, approvals and authentication
You sign in with OAuth and the connector acts on your workspace. No API keys in a config file, no shared service account, and revoking the grant kills the very next call.
| Action | When it happens | What that covers |
|---|---|---|
| Read an account | On request | Spend, performance, search terms, rankings, catalogue |
| Draft a change | On request | Campaigns, creative, budgets, pages and posts |
| Apply a change | Only on your approval | Cursor returns the change as text; the approval waits for you in Sprites |
| Spend money | Only on your approval | New campaigns start paused unless you say otherwise |
| Revoke access | Instantly | The next call after a revoke fails, not the one after that |
Cursor MCP questions
Project config or global?
.cursor/mcp.json in a repo scopes it to that project and is worth committing — everyone gets the same connector and signs in as themselves. ~/.cursor/mcp.json gives it to you everywhere.
Is this a coding-server directory page?
No. It is for growth engineers and technical marketers who want live account data in the editor. Cursor's general MCP directory is a different thing.
The Connect button does nothing.
A known issue on some Cursor builds. Update Cursor, remove and re-add the server, and if it persists restart with the config already in place so the connection is made at startup.
Can it change my ad accounts on its own?
No. Reads happen on request; every write comes back as a change you approve first, and new campaigns start paused. Nothing is applied because a model decided it should be.
Does the token go in the committed file?
No. The file holds a URL. The token is per person, obtained through the browser and held by Cursor, so committing the config shares the connector without sharing access.
Point Cursor at your ad accounts
One URL, one sign-in, and the next question you ask Cursor about your marketing gets answered from the live account.