MCP server for the Reddit Ads API v3: working write operations, tiered safety controls, and built-in OAuth setup.
MCP Server for Reddit Ads (mcp-server-reddit-ads)
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A Reddit Ads API v3 MCP server with working write operations and tiered safety controls, built and dogfooded by an actual Reddit advertiser. It gives an MCP client read access to campaigns, ad groups, ads, and performance reports, plus gated write tools for pausing, creating, budget and bid changes, targeting edits, and copying ads between ad groups.
Requirements
- A Reddit Ads account, with business-admin access so you can register an app.
- Node.js 20 or newer.
- An MCP client (Claude Code, Claude Desktop, or any other).
Getting started
Pick the path that matches your setup: a paste-one-prompt route for Claude Code or Claude Desktop, or the manual steps for any other client. Every path installs read-only and cannot change anything in your account until you deliberately turn on writes (the last step).
Simple setup with Claude Code (recommended)
If you use Claude Code, let it do the mechanical work. Copy this whole prompt and paste it into Claude Code:
Claude reads this README, tells you exactly what to do for the parts only you can do, runs npx mcp-server-reddit-ads auth, writes your .mcp.json, and confirms the server loads. Later, when you want to make changes, just ask it to raise the write tier.
Simple setup with Claude Desktop
Claude Desktop can't run terminal commands for you, so this prompt has it act as a patient guide while you run one command and edit one config file. Paste it into a new Claude Desktop chat:
Either way, you still register the Reddit app (step 1 below) and approve the browser login yourself - those cannot be automated.
Advanced setup (manual)
The full process, for other MCP clients or if you prefer to do it by hand. It takes about five minutes.
1. Register a Reddit app
1. Open the Reddit Ads dashboard at ads.reddit.com and sign in with an account that has business-admin access.
2. Open **Business settings** (the gear / settings menu, top right), then **Developer Applications**, then **Create App**.
3. Give the app a name, set the **redirect URI** to exactly http://localhost:8080, and choose a primary contact (a business admin). Save it.
Reddit then shows the two values you need in step 2:
- **Client ID** - the short string (roughly 22 characters, for example Ab3xK9zQ1rStUvWxYzAbCd) displayed directly under the app's name. Reddit often shows it without a "client ID" label, so it is easy to miss; it is the code beneath the app title, not the app name itself.
- **Client secret** - the longer value shown in the field explicitly labeled **secret**. Copy it right away; if you lose it you can regenerate a new secret from the same page.
Do not use reddit.com/prefs/apps: it silently rejects new apps under the Responsible Builder Policy, so the Ads developer portal is the only working path for advertisers.
2. Mint a refresh token
Run the built-in setup helper:
It asks for the client ID and secret from step 1 (or reads them from REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET if you have set them), opens the Reddit authorization page in your browser, and waits on http://localhost:8080 for you to approve.
Once you approve, it offers to save the configuration for you:
Pick [1] or [2] and it writes the credentials straight to disk (backing up any existing file to .bak and leaving other servers untouched), so nothing sensitive has to pass through your MCP client. If you prefer to place it yourself, pick [3] and it prints a ready-to-paste block instead. When it can't detect a TTY (for example, piped output), it skips the menu and prints the block.
If it fails, it tells you how to fix the two common causes: port 8080 already in use, and a redirect-URI mismatch (the app's redirect URI must be exactly http://localhost:8080).
3. Add the server to your MCP client
If you picked [1] or [2] in step 2, this is already done - skip to step 4. Otherwise, paste the printed block into your client's config. It has this shape, with the three credential values already populated by the auth command: