
Reddit Ads
io.github.camlowe由 GitHub 账号 camlowe 发布v0.5.5更新于 Oct 24, 2026
Reddit Ads API v3: campaigns, ad groups, ads, reports, plus working writes with safety tiers.
概览
面向 Reddit Ads API v3 的本地 MCP 服务器,让助手读取广告系列、广告组、广告与报表,并在分级控制下执行写入操作。
- 可以做什么
- 读取账户、广告系列、广告组、广告与广告创意,支持状态筛选和实体查找
- 获取效果报表、每日表现,以及时段或广告对比,指标名使用易读的小写名称
- 查询定向数据:子版块、兴趣类别和地域定向
- 创建广告系列、广告组和广告,暂停或重命名条目,修改广告评论,并在广告组之间复制广告
- 恢复投放、调整预算、出价、定向和广告链接(仅在 spend 级别)
- 适用场景
- 适合管理 Reddit 广告投放、希望助手在聊天客户端内汇总账户表现、回答报表问题,或完成暂停、创建、复制广告等日常操作的场景。
- 运行要求
- 通过 npx 在本机运行,需要 Node.js 20 或更高版本以及一个 MCP 客户端。需要具备 business-admin 权限的 Reddit Ads 账户来注册应用,并设置 REDDIT_CLIENT_ID、REDDIT_CLIENT_SECRET 和 REDDIT_REFRESH_TOKEN,可用该包的 auth 命令生成。可选 REDDIT_ADS_ACCOUNT_ID 和 REDDIT_ADS_WRITE_TIER。
安装
在 SourceWeft 中
- 打开 控制台中的 Reddit Ads,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
MCP Server for Reddit Ads (mcp-server-reddit-ads)
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
- Open the Reddit Ads dashboard at ads.reddit.com and sign in with an account that has business-admin access.
- Open Business settings (the gear / settings menu, top right), then Developer Applications, then Create App.
- 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 <file>.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:
Claude Code users can register it from the command line instead:
4. Restart and verify
Restart your client so it picks up the server (in Claude Code, approve the server when prompted, and confirm it loaded with /mcp). Then ask it to list your Reddit ad accounts. You should see your account id (a2_...). If you manage a single account, set REDDIT_ADS_ACCOUNT_ID to that id in the config and restart, so you never have to name the account in a request again.
5. Try some read-only queries
You are connected and read-only. Good first questions:
- "Give me an overview of my Reddit ad account."
- "Show the last 7 days of performance by campaign."
- "Which of my ad groups are currently active?"
Most people stay here day to day. When you want to make changes, turn on writes.
6. Turn on writes when you need them
A fresh install cannot pause, create, or edit anything. To allow changes, raise REDDIT_ADS_WRITE_TIER in your config and restart. Start with safe (nothing at that level can start or grow spend) and move to spend only when you intend to resume delivery or change budgets, bids, or targeting. See Write tiers for exactly what each level unlocks.
Write tiers
Writes are off by default. REDDIT_ADS_WRITE_TIER opens them in two steps, so an accident at the read or safe tier cannot start spending money.
Tools above the configured tier are not just refused - they are hidden from the client's tool list entirely. A read-only session exposes 18 tools; the model cannot even attempt update_budget because it does not know the tool exists. If a hidden tool is somehow called anyway, the server refuses it with an error naming the tier that would unlock it.
Environment variables
Tools
Notes:
get_campaigns,get_ad_groups, andget_adstake an optionalstatusfilter (ACTIVE,PAUSED, orARCHIVED), applied client-side onconfigured_status.- Tool results are capped at 200,000 characters; a truncated result says so and suggests narrowing the query.
get_performance_reporttakes friendly lowercase metric names (impressions,clicks,spend,cpc,conversion_page_visit_clicks, and so on) and validates them locally before the call, suggesting the closest match on a typo.create_ad_grouprequires aconversion_pixel_id, andcreate_campaignrequires one when campaign budget optimization is on (a Reddit mandate since 2026-07-13). The pixel id is in the Reddit Ads dashboard under Events Manager; in observed data it equals the ad account id.copy_adsduplicates ads into another ad group (Reddit creates a duplicate promoted post per copy) with an option to rewriteutm_campaignand other click-URL query params.- Ad copy (headline, body) is immutable via the Reddit API - the only editable post property is
allow_comments. To change what an ad says, create a new ad with the new copy, enable it, and pause the old one.
Reddit API gotchas
The client encodes behaviors verified against the live API. The ones that cause the most confusion:
- Updates use
PATCH, neverPUT, and Reddit returns 404 (not 405) for the wrong verb. A verb bug looks exactly like a missing resource. This is the bug that breaks every write in the upstream package. - Single resources live on bare paths (
/ads/{id}); collections and creates use account-scoped paths (/ad_accounts/{id}/ads). Mixing them returns 404. - All money values are microcurrency (one millionth of the currency unit). This server converts them to USD on read and back on write, so tool inputs and outputs are in dollars.
- Report metric names are UPPERCASE enums in requests but lowercase in responses, with inconsistent spelling (
CONVERSION_SIGN_UP_CLICKSvsCONVERSION_SIGNUP_TOTAL_VALUE). Use the friendly lowercase names; the server validates and maps them. - After a write, trust
configured_status, noteffective_status. The configured value updates immediately; the effective value can lag by minutes. - Ad copy cannot be edited. The creative lives on a promoted post, and
PATCH /posts/{id}permits exactly one field:allow_comments. Headline and body are rejected outright. Changing copy means shipping a new ad (create_ad, born paused) and pausing the old one - which also keeps performance history per message, so it is the right workflow anyway.
Development
Disclaimer
This software is provided "as is" and "as available", without warranty of any kind, as set out in the LICENSE. It may contain bugs or errors, and any safeguards or controls it provides may fail or behave unexpectedly. Use it at your own risk.
This tool can create, rename, pause, resume, and reconfigure live Reddit advertising entities, and can change budgets, bids, and targeting. These actions can start, increase, or otherwise affect real ad spend. You are solely responsible for:
- any charges, ad spend, or financial outcomes that result from using this server;
- independently reviewing and verifying every change it makes to your account;
- keeping your Reddit API credentials secure; and
- your use of the Reddit Ads API in line with Reddit's terms.
The author accepts no liability for lost or unintended ad spend, misconfigured or paused campaigns, unintended changes, or any other damages arising from use of this software, including any failure of its safety controls to prevent an action.
This project is an independent, unofficial client. It is not affiliated with, endorsed by, or sponsored by Reddit, Inc.
License
MIT
来源:README.md,提交 a9b5639
工具
0版本历史
1- v0.5.5最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分