Skip to main content
Glama

reddit-mcp-server

Reddit MCP Server ⚙️

A Model Context Protocol (MCP) that provides tools for fetching and creating Reddit content.

Note: This is a fork of the original reddit-mcp-server by Alexandros Lekkas, updated with pnpm, tsup build system, and npx execution support.

🔧 Available Tools (Features)

Read-only Tools (Client Credentials):

  • get_reddit_post(subreddit, post_id) - Get a specific Reddit post
  • get_top_posts(subreddit, time_filter, limit) - Get top posts from a subreddit
  • get_user_info(username) - Get information about a Reddit user
  • get_subreddit_info(subreddit_name) - Get information about a subreddit
  • get_trending_subreddits() - Get currently trending subreddits
  • search_reddit(query, subreddit?, sort?, time_filter?, limit?, type?) - Search for posts on Reddit
  • get_post_comments(post_id, subreddit, sort?, limit?) - Get comments for a specific Reddit post
  • get_user_posts(username, sort?, time_filter?, limit?) - Get posts submitted by a specific user
  • get_user_comments(username, sort?, time_filter?, limit?) - Get comments made by a specific user

Write Tools (User Credentials Required):

  • create_post(subreddit, title, content, is_self) - Create a new post in a subreddit
  • reply_to_post(post_id, content, subreddit?) - Post a reply to an existing Reddit post

🔌 Installation

Installing via Smithery

To install Reddit Content Integration Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install reddit-mcp-server --client claude

Manual Installation

  1. git clone https://github.com/jordanburke/reddit-mcp-server
  2. Create a Reddit app here

image

Make sure to select "script"!

  1. Copy the client ID and client secret
  2. Create a .env file based on .env.example

Do this with your REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET

If you want to write posts you need to include your REDDIT_USERNAME and REDDIT_PASSWORD

  1. Install dependencies with pnpm install
  2. Build the project with pnpm build
  3. Run with pnpm dev and open the inspection server (http://127.0.0.1:6274/)

image

  1. If the connection works, add this to your MCP config (for Cursor or Claude Desktop)
"mcpServers": { "reddit": { "command": "npx", "args": [ "reddit-mcp-server" ], "env": { "REDDIT_CLIENT_ID": "<YOUR_CLIENT_ID>", "REDDIT_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>", "REDDIT_USERNAME": "<YOUR_USERNAME_OPTIONAL>", "REDDIT_PASSWORD": "<YOUR_PASSWORD_OPTIONAL>" }, "autoApprove": [ "get_reddit_post", "get_top_posts", "get_user_info", "get_subreddit_info", "get_trending_subreddits", "search_reddit", "get_post_comments", "get_user_posts", "get_user_comments", "create_post", "reply_to_post" ] // You don't need to add this, but it makes it so that you don't have to keep clicking approve } }

🛠️ Development

Commands

# Install dependencies pnpm install # Build TypeScript to JavaScript pnpm build # Run the MCP inspector for development/testing pnpm inspect # Build and run inspector in one command pnpm dev # Run tests pnpm test # Lint code pnpm lint # Format code pnpm format

Version & Help

# Check version npx reddit-mcp-server --version # Show help npx reddit-mcp-server --help # Generate OAuth token for HTTP server npx reddit-mcp-server --generate-token

Streamable MCP Endpoint (Hono Server)

In addition to the standard npx execution, this server also supports a Streamable MCP endpoint via Hono for direct HTTP integration:

# Start the Hono server on port 3000 (default) pnpm serve # Start with custom port PORT=8080 pnpm serve # Development mode with auto-reload pnpm serve:dev

The server will be available at http://localhost:3000 with the MCP endpoint at http://localhost:3000/mcp.

OAuth Security (Optional)

The HTTP server supports optional OAuth protection to secure your endpoints:

Generate a secure token:

npx reddit-mcp-server --generate-token # Output: Generated OAuth token: A8f2Kp9x3NmQ7vR4tL6eZ1sW5yB8hC2j

Enable OAuth with generated token:

export OAUTH_ENABLED=true export OAUTH_TOKEN="A8f2Kp9x3NmQ7vR4tL6eZ1sW5yB8hC2j" pnpm serve

Make authenticated requests:

curl -H "Authorization: Bearer A8f2Kp9x3NmQ7vR4tL6eZ1sW5yB8hC2j" \ -H "Content-Type: application/json" \ -d '{"method":"tools/list","params":{}}' \ http://localhost:3000/mcp

OAuth Configuration:

  • OAUTH_ENABLED=true - Enables OAuth protection (disabled by default)
  • OAUTH_TOKEN=your-token - Your custom token (or use --generate-token)
  • Without OAuth, the server is accessible without authentication
  • Health check (/) is always unprotected; only /mcp requires authentication
MCP Client Configuration

For MCP clients connecting to an OAuth-protected server, configure according to the MCP Authorization specification:

HTTP-based MCP Clients (e.g., web applications):

// Example using fetch API const response = await fetch('http://localhost:3000/mcp', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list", params: {} }) }); const result = await response.json();

Direct HTTP MCP Client:

const client = new MCP.Client({ transport: new MCP.HTTPTransport({ url: 'http://localhost:3000/mcp', headers: { 'Authorization': 'Bearer YOUR_TOKEN' } }) });

Custom MCP Client Implementation:

import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { HTTPTransport } from '@modelcontextprotocol/sdk/client/http.js'; const transport = new HTTPTransport({ url: 'http://localhost:3000/mcp', headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' } }); const client = new Client({ name: "reddit-client", version: "1.0.0" }, { capabilities: {} }); await client.connect(transport);

Important Notes:

  • Replace YOUR_TOKEN with your generated OAuth token
  • Authorization header MUST be included in every request to /mcp
  • Tokens MUST NOT be included in URI query strings per MCP specification
  • Use HTTPS in production for secure token transmission

For Remote/Deployed Servers: When connecting to a remote Reddit MCP server (e.g., deployed on your infrastructure):

// Production server with OAuth const response = await fetch('https://your-server.com/mcp', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list", params: {} }) });

MCP Client Configuration for Remote Server:

import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { HTTPTransport } from '@modelcontextprotocol/sdk/client/http.js'; // For your deployed server const transport = new HTTPTransport({ url: 'https://your-reddit-mcp.company.com/mcp', headers: { 'Authorization': 'Bearer YOUR_GENERATED_TOKEN', 'Content-Type': 'application/json' } }); const client = new Client({ name: "reddit-client", version: "1.0.0" }, { capabilities: {} }); await client.connect(transport);

Claude Desktop/Cursor with Remote Server (HTTP): For remote servers, you can use a proxy approach:

{ "mcpServers": { "reddit-remote": { "command": "node", "args": [ "-e", "const http = require('https'); const req = http.request('https://your-server.com/mcp', {method:'POST',headers:{'Authorization':'Bearer YOUR_TOKEN','Content-Type':'application/json'}}, res => res.pipe(process.stdout)); process.stdin.pipe(req);" ], "env": {} } } }

For Claude Desktop/Cursor (stdio transport): OAuth is not applicable when using the traditional npx execution method. Use the stdio configuration instead:

{ "mcpServers": { "reddit": { "command": "npx", "args": ["reddit-mcp-server"], "env": { "REDDIT_CLIENT_ID": "your_client_id", "REDDIT_CLIENT_SECRET": "your_client_secret" } } } }
Remote Deployment Examples

Deploy to your infrastructure and share the URL:

  1. Generate secure token:
    npx reddit-mcp-server --generate-token # Output: Generated OAuth token: xyz123abc456def789
  2. Deploy with Docker on your server:
    docker run -d \ --name reddit-mcp \ -p 3000:3000 \ -e REDDIT_CLIENT_ID=your_reddit_client_id \ -e REDDIT_CLIENT_SECRET=your_reddit_client_secret \ -e OAUTH_ENABLED=true \ -e OAUTH_TOKEN=xyz123abc456def789 \ ghcr.io/jordanburke/reddit-mcp-server:latest
  3. Share with your team:
    Server URL: https://your-server.com/mcp OAuth Token: xyz123abc456def789
  4. Team members connect:
    const client = new Client(...); const transport = new HTTPTransport({ url: 'https://your-server.com/mcp', headers: { 'Authorization': 'Bearer xyz123abc456def789' } }); await client.connect(transport);

This allows integration with systems that support HTTP-based MCP communication, similar to the cq-api and agent-todo implementations.

🐳 Docker Usage

Pull from GitHub Container Registry

# Pull the latest image docker pull ghcr.io/jordanburke/reddit-mcp-server:latest # Pull a specific version docker pull ghcr.io/jordanburke/reddit-mcp-server:v1.0.10

Run with Docker

# Run the HTTP server (recommended) docker run -d \ --name reddit-mcp \ -p 3000:3000 \ -e REDDIT_CLIENT_ID=your_client_id \ -e REDDIT_CLIENT_SECRET=your_client_secret \ -e REDDIT_USERNAME=your_username \ -e REDDIT_PASSWORD=your_password \ ghcr.io/jordanburke/reddit-mcp-server:latest # Run with OAuth enabled (secure) docker run -d \ --name reddit-mcp \ -p 3000:3000 \ -e REDDIT_CLIENT_ID=your_client_id \ -e REDDIT_CLIENT_SECRET=your_client_secret \ -e OAUTH_ENABLED=true \ -e OAUTH_TOKEN=your_generated_token \ ghcr.io/jordanburke/reddit-mcp-server:latest # Run with custom port docker run -d \ --name reddit-mcp \ -p 8080:3000 \ --env-file .env \ ghcr.io/jordanburke/reddit-mcp-server:latest # Generate token using Docker docker run --rm \ ghcr.io/jordanburke/reddit-mcp-server:latest \ node dist/bin.js --generate-token # Run as stdio MCP server (for direct integration) docker run -it \ --env-file .env \ ghcr.io/jordanburke/reddit-mcp-server:latest \ node dist/index.js

Build Locally

# Build the image docker build -t reddit-mcp-server . # Run the locally built image docker run -d \ --name reddit-mcp \ -p 3000:3000 \ --env-file .env \ reddit-mcp-server

Docker Compose Example

version: '3.8' services: reddit-mcp: image: ghcr.io/jordanburke/reddit-mcp-server:latest ports: - "3000:3000" environment: - REDDIT_CLIENT_ID=${REDDIT_CLIENT_ID} - REDDIT_CLIENT_SECRET=${REDDIT_CLIENT_SECRET} - REDDIT_USERNAME=${REDDIT_USERNAME} - REDDIT_PASSWORD=${REDDIT_PASSWORD} # Optional OAuth settings - OAUTH_ENABLED=${OAUTH_ENABLED:-false} - OAUTH_TOKEN=${OAUTH_TOKEN} restart: unless-stopped

📚 Credits

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A Model Context Protocol (MCP) that provides tools for fetching and creating Reddit content.

  1. 🔧 Available Tools (Features)
    1. 🔌 Installation
      1. Installing via Smithery
      2. Manual Installation
    2. 🛠️ Development
      1. Commands
      2. Version & Help
      3. Streamable MCP Endpoint (Hono Server)
    3. 🐳 Docker Usage
      1. Pull from GitHub Container Registry
      2. Run with Docker
      3. Build Locally
      4. Docker Compose Example
    4. 📚 Credits

      Related MCP Servers

      • A
        security
        A
        license
        A
        quality
        A Model Context Protocol (MCP) server for managing social media posts, currently supporting X (formerly Twitter).
        Last updated -
        3
        8
        JavaScript
        MIT License
      • A
        security
        A
        license
        A
        quality
        Model Context Protocol (MCP) is a new, standardized protocol for managing context between large language models (LLMs) and external systems. In this repository, we provide an installer as well as an MCP Server for Upstash Developer API's.
        Last updated -
        16
        73
        43
        TypeScript
        MIT License
        • Linux
        • Apple
      • -
        security
        A
        license
        -
        quality
        A tool for Model Context Protocol (MCP) that allows you to analyze web content and add it to your knowledge base, storing content as Markdown files for easy viewing with tools like Obsidian.
        Last updated -
        9
        Python
        MIT License
      • A
        security
        A
        license
        A
        quality
        A Model Context Protocol (MCP) server designed to easily dump your codebase context into Large Language Models (LLMs).
        Last updated -
        1
        9
        1
        JavaScript
        Apache 2.0

      View all related MCP servers

      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/jordanburke/reddit-mcp-server'

      If you have feedback or need assistance with the MCP directory API, please join our Discord server