reddit-mcp
reddit-mcp
Conector MCP de solo lectura para la API de datos de Reddit, orientado al OAuth de tarjeta de conexión de Cursor / Grok Bot.
Se ejecuta como un Cloudflare Worker que utiliza MCP Streamable HTTP y pasa a través el token Authorization: Bearer del llamante a https://oauth.reddit.com.
Repositorio: https://github.com/pmsorhaindo/reddit-mcp
Arquitectura
Cursor / Grok Bot
│ OAuth (connect-card) against Reddit authorize/token
│ then MCP JSON-RPC with Bearer access token
▼
Cloudflare Worker (this repo)
│ POST /mcp → tools/list, tools/call
│ GET /.well-known/oauth-* → discovery pointing at Reddit
▼
https://oauth.reddit.com (User-Agent from env, Bearer passthrough)Ruta | Propósito |
| Sondeo de vida + mapa de endpoints |
| MCP Streamable HTTP (JSON-RPC: |
| Metadatos del servidor de autorización OAuth (autorización/token de Reddit) |
| Metadatos de recurso protegido para esta URL MCP |
| Solo página de desarrollo — no intercambia códigos |
¿Por qué JSON-RPC mínimo (no el SDK completo de MCP)?
@modelcontextprotocol/sdk históricamente apuntada a transportes de Node. Este Worker implementa una superficie JSON-RPC Streamable HTTP nativa para Workers y con pocas dependencias (initialize / tools/list / tools/call) que coincide con lo que Cursor/Grok necesitan para la llamada a herramientas, sin Durable Objects ni almacenes de sesión. Eso encaja con la transmisión de bearer: el Worker nunca guarda los tokens de refresco de Reddit.
Herramientas
Herramienta | API de Reddit | Alcances |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Todas las herramientas devuelven JSON compacto (campos de texto truncados). limit predetermina a 25, con máximo de 100.
Límite de tasa
Las llamadas salientes a Reddit se serializan por isolate de Worker (cadena de promesas).
Se respetan
X-Ratelimit-Remaining/X-Ratelimit-Resetantes de la siguiente llamada.Los HTTP 429 / 503 provocan reintentos limitados con
Retry-Aftero retroceso exponencial.
Higiene de secretos
Nunca subas secretos reales.
El
.gitignorerobusto cubre.env,.dev.vars,.wrangler/,node_modules/,dist/,credentials*.json,.mcp-auth/.Solo se suben los archivos de entorno de ejemplo:
.dev.vars.example,.env.example.wrangler.tomlno incluye secretos en línea.Los errores y los registros de
consolenunca incluyen cabecerasAuthorization, tokens ni valores de variables de entorno secretos.Los payloads de error de las tools son solo estado/mensaje — sin cuerpos de respuesta de aguas arriba que puedan reflejar credenciales.
Related MCP server: reddit-mcp
Configuración de la app de Reddit
Crea una app de Reddit en https://www.reddit.com/prefs/apps (tipo web app o installed app según lo que corresponda a tu cliente).
Añade las URIs de redirección:
http://localhost:8787/callback— wrangler local / pruebas manualeshttps://www.cursor.com/agents/mcp/oauth/callback— tarjeta de conexión de Cursor
Solicita los alcances (separados por comas en las URLs de autorización de Reddit):
identity,read,mysubreddits,history
Anota
client_id/client_secretpara el cliente OAuth (Cursor / tu gestor de secretos). No los pongas en este repositorio ni enwrangler.toml.
Supuestos de descubrimiento OAuth
/.well-known/oauth-authorization-serverpublica:authorization_endpoint:https://www.reddit.com/api/v1/authorizetoken_endpoint:https://www.reddit.com/api/v1/access_token
Este Worker no realiza el intercambio del código de autorización y no almacena tokens de refresco.
Cursor/Grok completan el OAuth con Reddit (usando las credenciales de la app de Reddit que configures en el cliente) y luego envían
Authorization: Bearer <access_token>en las solicitudes MCP.issueren los metadatos es el origen de este Worker para que los clientes MCP puedan descubrir la documentación desde la URL base del MCP; la autorización y el token siguen sucediendo en Reddit.Los alcances de Reddit se suelen separar con comas en la URL de autorización; the clientes deben unir los alcances en consecuencia.
Despliegue en Cloudflare
Requisitos previos: Node 22+, cuenta de Cloudflare y Wrangler con sesión iniciada (npx wrangler login).
git clone https://github.com/pmsorhaindo/reddit-mcp.git
cd reddit-mcp
npm install
# Local secrets (gitignored)
cp .dev.vars.example .dev.vars
# edit USER_AGENT — must identify you per Reddit API rules
npm run typecheck
npm run dev # http://127.0.0.1:8787
# Production secret (not committed)
npx wrangler secret put USER_AGENT
npm run deployEjemplo de forma de USER_AGENT (solo marcador de posición):
cloudflare-worker:reddit-mcp:0.1.0 (by /u/YOUR_REDDIT_USERNAME)Después del despliegue, registra la URL de workers.dev o del dominio personalizado, p. ej. https://reddit-mcp.<account>.workers.dev.
Añadir servidor MCP (Cursor / Grok)
Configura AddMcpServer (o la tarjeta de conexión equivalente) con:
Campo | Valor |
URL |
|
Auth | OAuth (tarjeta de conexión) |
Scopes |
|
Tu cliente debe usar el client id y el client secret de tu app de Reddit y la URI de redirección de Cursor mencionada arriba. Tras la autenticación, las llamadas a las herramientas de MCP deben incluir el token de acceso de Reddit como cabecera Bearer; este Worker lo reenvía al servicio aguas arriba.
Pruebas de humo
Reemplaza $BASE y $TOKEN localmente — no subas tokens.
BASE=http://127.0.0.1:8787
TOKEN=reddit_access_token_here
# Health
curl -sS "$BASE/health"
# OAuth metadata
curl -sS "$BASE/.well-known/oauth-authorization-server"
curl -sS "$BASE/.well-known/oauth-protected-resource"
# MCP initialize
curl -sS -X POST "$BASE/mcp" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}'
# tools/list
curl -sS -X POST "$BASE/mcp" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# tools/call get_me (requires valid Bearer)
curl -sS -X POST "$BASE/mcp" \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_me","arguments":{}}}'Resultado esperado: respuestas JSON-RPC; get_me devuelve campos de perfil compactos. Si falta el Bearer, error JSON-RPC Unauthorized sin filtrar cabeceras.
Scripts
Script | Comando |
|
|
|
|
|
|
Fuera de alcance
Escribir, votar, enviar mensajes, moderar o la API de Ads
Almacenar tokens de refresco de Reddit o secretos de cliente en el Worker
Realizar el intercambio del código OAuth en
/callbackSesiones completas de MCP resources/prompts/sampling/elicitation
Bóvedas de tokens multiusuario / almacenes de sesión de Durable Objects Storage
Garantizar una coordinación global del límite de tasa entre isolates (los límites son por isolate y dependen de las cabeceras de Reddit)
Licencia
Privada / sin publicar a menos que añadas un archivo de licencia.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Reddit MCP server: search posts, subreddit feeds, comments & user profiles as JSON. No API key.
Reddit MCP — public Reddit data via JSON endpoints (no auth required)
Reddit & X data for AI agents over MCP. Semantic search, hosted, no Reddit API.
Read-only Reddit search API for AI agents: posts, comments, comment trees, subreddit rules.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that provides both read-only and authenticated access to Reddit content and interactions without requiring a developer API key. It enables users to browse posts, search subreddits, and perform write actions like commenting and voting by leveraging browser session cookies.81The Unlicense
- FlicenseNot gradedqualityDmaintenanceA read-only Model Context Protocol server that enables browsing subreddits, searching within subreddits, retrieving comment trees, and looking up user activity on Reddit via natural language.
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that connects to the Reddit Data API to search posts, browse subreddits, read comments, view user profiles, and check trending content through the Model Context Protocol.121MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for public Reddit content using TypeScript. Enables listing posts, fetching post details and comments, and searching Reddit.322MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pmsorhaindo/reddit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server