Skip to main content

A Model Context Protocol Server for Reddit — browse, search, and read Reddit from any MCP client. No API keys required.

Project description

Reddit MCP Server

PyPI License: MIT

A Model Context Protocol (MCP) server that provides AI assistants with access to Reddit data. Built on top of redd — no API keys required.

Features

  • 🔍 Search — Search all of Reddit or within a specific subreddit
  • 📰 Subreddit Posts — Browse hot, top, new, or rising posts from any subreddit
  • 📖 Post Details — Get full post content with nested comment trees
  • 👤 User Activity — View a user's recent posts and comments
  • 📝 User Posts — Get a user's submitted posts

No API keys, no authentication, no browser required. Just install and run.

Quick Start

Install & Run

The fastest way to run the server is with uvx:

# stdio transport (default, for Claude Desktop / Cursor / etc.)
uvx reddit-no-auth-mcp-server

# HTTP transport
uvx reddit-no-auth-mcp-server --transport streamable-http --port 8000
From source
git clone https://github.com/eliasbiondo/reddit-mcp-server.git
cd reddit-mcp-server
uv sync
reddit-mcp-server

Configure with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "reddit": {
      "command": "uvx",
      "args": ["reddit-no-auth-mcp-server"]
    }
  }
}

Configure with Cursor

Add to your .cursor/mcp.json:

{
  "mcpServers": {
    "reddit": {
      "command": "uvx",
      "args": ["reddit-no-auth-mcp-server"]
    }
  }
}

Available Tools

Tool Description Key Arguments
search Search Reddit for posts query, limit, sort
search_subreddit Search within a subreddit subreddit, query, limit, sort
get_post Get post details + comment tree permalink
get_subreddit_posts Get subreddit listing subreddit, limit, category, time_filter
get_user Get user's activity feed username, limit
get_user_posts Get user's submitted posts username, limit, category, time_filter

Tool Details

search

Search all of Reddit for posts matching a query.

query: "python async programming"
limit: 10
sort: "relevance"  # relevance, hot, top, new, comments

search_subreddit

Search within a specific subreddit.

subreddit: "Python"
query: "web scraping"
limit: 10
sort: "top"

get_post

Get full details of a Reddit post including its comment tree.

permalink: "/r/Python/comments/abc123/my_post/"

get_subreddit_posts

Get posts from a subreddit listing.

subreddit: "MachineLearning"
limit: 25
category: "hot"       # hot, top, new, rising
time_filter: "week"   # hour, day, week, month, year, all

get_user

Get a user's recent public activity (posts and comments).

username: "spez"
limit: 10

get_user_posts

Get a user's submitted posts.

username: "spez"
limit: 10
category: "top"       # hot, top, new
time_filter: "all"    # hour, day, week, month, year, all

Configuration

All settings can be configured via environment variables:

Variable Default Description
REDDIT_TRANSPORT stdio MCP transport (stdio, streamable-http)
REDDIT_HOST 127.0.0.1 Host for HTTP transport
REDDIT_PORT 8000 Port for HTTP transport
REDDIT_PATH /mcp Path for HTTP transport
REDDIT_LOG_LEVEL WARNING Log level (DEBUG, INFO, WARNING, ERROR)
REDDIT_PROXY HTTP/HTTPS proxy URL
REDDIT_TIMEOUT 10.0 Request timeout in seconds
REDDIT_THROTTLE_MIN 1.0 Min delay between paginated requests (seconds)
REDDIT_THROTTLE_MAX 2.0 Max delay between paginated requests (seconds)

CLI arguments take precedence over environment variables:

reddit-mcp-server --transport streamable-http --port 9000 --log-level DEBUG

Architecture

This project follows hexagonal architecture (ports & adapters):

src/reddit_mcp_server/
├── domain/              # Pure business logic, no framework imports
│   ├── exceptions.py    # Domain exception hierarchy
│   └── value_objects.py # Immutable config objects
├── ports/               # Abstract interfaces (contracts)
│   ├── config.py        # ConfigPort
│   └── reddit.py        # RedditPort
├── application/         # Use cases (orchestration)
│   ├── search.py
│   ├── search_subreddit.py
│   ├── get_post.py
│   ├── get_user.py
│   ├── get_subreddit_posts.py
│   └── get_user_posts.py
├── adapters/
│   ├── inbound/         # Presentation layer
│   │   ├── cli.py       # CLI entry point
│   │   ├── mcp_server.py
│   │   ├── error_mapping.py
│   │   ├── serialization.py
│   │   └── mcp_tools/   # MCP tool definitions
│   └── outbound/        # Infrastructure layer
│       ├── env_config.py  # ConfigPort implementation
│       └── redd_client.py # RedditPort implementation (wraps redd)
└── container.py         # DI composition root

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reddit_no_auth_mcp_server-0.1.0.tar.gz (87.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reddit_no_auth_mcp_server-0.1.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file reddit_no_auth_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: reddit_no_auth_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 87.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for reddit_no_auth_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0963d330051b4a15de56fdcdc1b5ccfb4eb9fa3e245d126425f1066dc72ee461
MD5 0a19e93c456e823a2893d6447a295521
BLAKE2b-256 bb59640b69dfcb1109b3c4155639901251327d313b8d8900eb0fbe914b36e4ef

See more details on using hashes here.

File details

Details for the file reddit_no_auth_mcp_server-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: reddit_no_auth_mcp_server-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for reddit_no_auth_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e233fb671b8240a3729db8805e38d6e2ba9c28ba5307577568778270b83f345
MD5 3029fd4a35218b0fbbb396b3cb1e56de
BLAKE2b-256 f6c427d688dfc453c57d10d0e837828e2340af205a508282753007bda5d852f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page