Reddit Ads MCP
mcpotherio.github.mkerchenski/reddit-ads-mcp · v1.1.1
MCP server for the Reddit Ads API. List accounts, campaigns, ads, and pull reports.
run it
on your own machines, one way per deploy methodgenerated from the record, not tested yet
# once, as root:
# as_mcp DIR COMMAND...: runs COMMAND as the mcp user in DIR, its home, sandboxed as the
# units are: a package's install scripts can write to DIR only, as the server later can
as_mcp() {
local dir="$1"; shift
systemd-run --quiet --wait --pipe --collect --uid=mcp --gid=mcp \
-p WorkingDirectory="$dir" -p Environment=HOME="$dir" -p ReadWritePaths="$dir" \
-p NoNewPrivileges=true -p ProtectSystem=strict -p ProtectHome=true -p PrivateTmp=true \
-- "$@" </dev/null
}
install -d -m 0750 -o mcp -g mcp /var/lib/mcp/reddit-ads
# reddit-ads: its packages, installed whole before its unit starts (no session installs)
systemctl stop mcp-my-agent-reddit-ads.service 2>/dev/null || true
as_mcp /var/lib/mcp/reddit-ads uv tool install mcp-proxy
#!/usr/bin/env bash
# reddit-ads (io.github.mkerchenski/reddit-ads-mcp), recipe baremetal (generated).
# Generated by Hub for toolset "my-agent"; started by mcp-my-agent-reddit-ads.service.
set -euo pipefail
export HOST=127.0.0.1 PORT=8101
exec uvx mcp-proxy --host 127.0.0.1 --port 8101 --pass-environment -- dnx [email protected] --yes
[Unit]
Description=MCP server reddit-ads (toolset my-agent), generated by Hub
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=mcp
Group=mcp
EnvironmentFile=/etc/mcp/my-agent.env
Environment=HOME=/var/lib/mcp/reddit-ads
WorkingDirectory=/var/lib/mcp/reddit-ads
ExecStart=/opt/mcp/my-agent/bin/reddit-ads.sh
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/mcp/reddit-ads
[Install]
WantedBy=multi-user.target
connect to it
copy what your client needsdnx [email protected] --yes # env: REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_REFRESH_TOKEN, REDDIT_ACCOUNT_ID
{
"mcpServers": {
"reddit-ads": {
"command": "dnx",
"args": [
"[email protected]",
"--yes"
],
"env": {
"REDDIT_CLIENT_ID": "${REDDIT_CLIENT_ID}",
"REDDIT_CLIENT_SECRET": "${REDDIT_CLIENT_SECRET}",
"REDDIT_REFRESH_TOKEN": "${REDDIT_REFRESH_TOKEN}",
"REDDIT_ACCOUNT_ID": "${REDDIT_ACCOUNT_ID}"
}
}
}
}
#!/usr/bin/env bash
# Registers every server with Claude Code (run once; `claude mcp list` to check).
set -euo pipefail
set -a; [ -f .env ] && source .env; set +a
claude mcp add reddit-ads -e "REDDIT_CLIENT_ID=${REDDIT_CLIENT_ID}" -e "REDDIT_CLIENT_SECRET=${REDDIT_CLIENT_SECRET}" -e "REDDIT_REFRESH_TOKEN=${REDDIT_REFRESH_TOKEN}" -e "REDDIT_ACCOUNT_ID=${REDDIT_ACCOUNT_ID}" -- dnx [email protected] --yes
{
"mcpServers": {
"reddit-ads": {
"command": "dnx",
"args": [
"[email protected]",
"--yes"
],
"env": {
"REDDIT_CLIENT_ID": "${REDDIT_CLIENT_ID}",
"REDDIT_CLIENT_SECRET": "${REDDIT_CLIENT_SECRET}",
"REDDIT_REFRESH_TOKEN": "${REDDIT_REFRESH_TOKEN}",
"REDDIT_ACCOUNT_ID": "${REDDIT_ACCOUNT_ID}"
}
}
}
}
{
"servers": {
"reddit-ads": {
"type": "stdio",
"command": "dnx",
"args": [
"[email protected]",
"--yes"
],
"env": {
"REDDIT_CLIENT_ID": "${REDDIT_CLIENT_ID}",
"REDDIT_CLIENT_SECRET": "${REDDIT_CLIENT_SECRET}",
"REDDIT_REFRESH_TOKEN": "${REDDIT_REFRESH_TOKEN}",
"REDDIT_ACCOUNT_ID": "${REDDIT_ACCOUNT_ID}"
}
}
}
}
name: my-agent target: local servers: - hub: io.github.mkerchenski/reddit-ads-mcp
- not probed yet: tools unpinned, ingest lists them
tools
Not probed yetThe tools appear once the hub or its worker has listed this entry. Running it still works: your client lists them on first start.