reddit-mcp
Summary: A read-only, no-API-key MCP server that lets an LLM client browse, search, and read public Reddit content via Reddit's Atom/RSS feeds.
Search Reddit (
search_reddit): find posts by query, optionally limited to one subreddit, with sort (relevance/hot/top/new/comments) and time filter. Covers post titles and bodies, not comment text.Browse a subreddit (
browse_subreddit): see a community's current activity byhot/new/top/rising/controversial, with a time filter for top/controversial. Good for very recent posts that search hasn't indexed.Read a thread (
get_post): pull the full post text plus its comments (flat list, no reply tree), given a post URL or permalink.Fetch other feed shapes (
fetch_json): read user feeds (/user/<name>), multireddits (/r/a+b), and domain feeds (/domain/<site>).Work in common MCP clients: Claude Code, Codex CLI, ChatGPT Desktop, Claude Desktop, and Cowork, via
uvxor a local clone.No credentials needed: no API key, app registration, or account.
Not available: scores, upvote ratios, and comment counts (they only exist in Reddit's gated API), and fetching non-Reddit URLs unless the operator sets REDDIT_MCP_ALLOW_ANY_URL=1.
Allows reading Reddit content (subreddit posts, single posts with comments, and search results) via Reddit's public RSS feeds, with no authentication required.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@reddit-mcp show me the top posts from r/programming today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
reddit-mcp
Read Reddit from local MCP-compatible clients, including Claude Code, Codex, and ChatGPT Desktop, without an API key. No app registration, no account.
Reddit's data API is effectively closed. New apps need a stated moderation use
case and manual approval, anonymous .json access is blocked, and the free tier
that third-party tools were built on is gone. Most "Reddit for LLMs" integrations
now start with a credentials dance you can't complete.
Reddit still publishes public Atom/RSS feeds for every subreddit, thread, user and search. This small local MCP server makes those feeds available as tools to compatible clients: browse a subreddit, read a thread and its comments, search across the site.
Those feeds are published to be fetched, which is why this keeps working. It reads a supported path in a format frozen since 2005, so there is no markup to break when Reddit ships its next redesign.
What you don't get: scores, upvote ratios, comment counts. Those exist only in the gated API, and nothing here fakes them. Titles, authors, timestamps, and the full text of posts and comments all come through.
Install
reddit-rss-mcp is on PyPI (the plain reddit-mcp name belongs to an unrelated
project). You need uv on your machine; it handles
Python and dependencies itself, and there is nothing else to set up.
Claude Code:
claude mcp add reddit --scope user -- uvx reddit-rss-mcpVerify with claude mcp get reddit or claude mcp list. If Claude Code cannot
find uvx, use its absolute path (which uvx) instead of the bare command.
Codex CLI:
codex mcp add reddit -- uvx reddit-rss-mcpVerify with codex mcp list. To use a local checkout instead, run:
codex mcp add reddit -- uv --directory "$(pwd)" run server.pyCodex also supports a project-scoped .codex/config.toml, but this repository
does not include one because it would configure and launch the server
automatically for every trusted checkout.
ChatGPT Desktop: it shares MCP configuration with Codex, so the Codex command
above also installs Reddit for ChatGPT Desktop. Restart the ChatGPT app, then use
/mcp to see the connected server. You can also add it in Settings → MCP
servers → Add server, choose STDIO, and enter uvx reddit-rss-mcp.
ChatGPT Work on the web: it does not read your local MCP configuration. It uses plugins and their remote MCP tools instead.
Claude Desktop, one click: download reddit-rss-mcp.mcpb from the
latest release, then
double-click it, drag it into Claude Desktop, or choose Settings → Extensions →
Advanced settings → Install Extension. No JSON editing or absolute paths. (It
runs uvx reddit-rss-mcp, so uv still needs to be on your PATH.)
Claude Desktop, manual local-server configuration: add this to
~/Library/Application Support/Claude/claude_desktop_config.json, using the
absolute path from which uvx (the app doesn't inherit your shell PATH):
{
"mcpServers": {
"reddit": {
"command": "/absolute/path/to/uvx",
"args": ["reddit-rss-mcp"]
}
}
}If the file already has other top-level keys, add mcpServers alongside them
rather than overwriting the file. Then:
Fully quit the app (
Cmd+Q, not just closing the window). The running app rewrites this file, so an edit made while it's open can be discarded.Relaunch. It may take a couple of restarts before the server registers.
Grant permission when the app prompts to run the server.
Cowork: install the .mcpb bundle above through Claude Desktop Extensions.
Cowork does not load local servers from claude_desktop_config.json, so use the
bundle rather than the manual configuration.
Related MCP server: mcp-reddit
Tools
Tool | What it does |
| Search Reddit discussions for real user opinions and experiences on a topic. |
| What a community is posting right now ( |
| One thread in full: the post plus its comments (a flat list; the reply tree isn't in the feed). |
| The remaining Reddit feed shapes: |
fetch_json is deliberately not a general web fetcher. URLs on other hosts are
refused unless you start the server with REDDIT_MCP_ALLOW_ANY_URL=1, so an
unrelated fetch tool doesn't sit in the client's tool list waiting to be picked at the
wrong moment.
Other ways to install
As a plugin
The plugin/ directory is a plugin in the format Claude Code, Codex and RK share: it
runs uvx reddit-rss-mcp, the latest release. It is in a subdirectory rather than at the
repository root so that opening this repository in Claude Code does not offer to start the
server. RK lists it in its built-in marketplace; any marketplace can list it with a
git-subdir source:
{ "name": "reddit", "source": { "source": "git-subdir", "url": "jorgen-k/reddit-mcp", "path": "plugin" } }From GitHub (latest main, no clone)
To run unreleased changes, point uvx at the repo and the reddit-rss-mcp entry
point. Append @vX.Y.Z (or any tag) to pin a release instead of tracking main:
claude mcp add reddit --scope user -- uvx --from git+https://github.com/jorgen-k/reddit-mcp reddit-rss-mcp
codex mcp add reddit -- uvx --from git+https://github.com/jorgen-k/reddit-mcp reddit-rss-mcpFrom a local clone
Prefer this if you want to edit the code:
git clone https://github.com/jorgen-k/reddit-mcp.git
cd reddit-mcp
claude mcp add reddit --scope user -- uv --directory "$(pwd)" run server.py
codex mcp add reddit -- uv --directory "$(pwd)" run server.pyFor Claude Desktop, use the same config file as above, with absolute paths from
which uv and pwd:
{
"mcpServers": {
"reddit": {
"command": "/absolute/path/to/uv",
"args": ["--directory", "/absolute/path/to/reddit-mcp", "run", "server.py"]
}
}
}Updating after a code change
The server is a long-lived process, spawned once when the client connects. Editing
server.py does not hot-reload it; the running process keeps the old code until
it's restarted.
Claude Code: run
/mcp, selectreddit, and reconnect it (or restart Claude Code).Codex CLI: start a new Codex session. Use
codex mcp listto confirm the configured server.ChatGPT Desktop: select Restart in Settings → MCP servers, or quit and relaunch the app.
Claude Desktop or Cowork: fully quit the app (
Cmd+Q) and relaunch.
Limits worth knowing
Read-only, public content only. Be considerate with request volume; these are public feeds.
No scores, vote counts, or comment counts. RSS doesn't carry them. For those you need Reddit's Data API, which now requires a moderation use case and approval.
Rate limiting. Reddit throttles unauthenticated RSS aggressively. On an HTTP
429 the server retries with backoff, honoring the Retry-After header when present
and otherwise sleeping roughly 2, 4, 8, 16, 32, 64, 128 seconds (plus jitter) across
up to 7 retries. It also keeps a minimum gap between outbound requests to avoid
tripping the limit in the first place. All tools share this.
Search is only as good as Reddit's search. search_reddit uses Reddit's own
search engine; RSS is just the output format, so results match the website, not a
separate weaker index. That engine has real limits:
It doesn't search comment text, only post titles and bodies (and community names). A term that appears only in a comment won't be found.
Very new posts lag, because indexing isn't instant. To catch brand-new posts reliably, use
browse_subreddit(sort="new").It isn't exhaustive. Low-relevance results get dropped or buried.
So "no results" means Reddit's search didn't surface it, not that it was never posted.
License
MIT. See LICENSE.
Available Tools
4 toolsbrowse_subredditA
Read what a subreddit is posting right now, to see a community's live activity.
Use this when the question is about what people in a specific community are currently saying or doing, or when a post is too recent for Reddit's search index to have caught it yet (search lags; "new" here does not).
Scores, upvote ratios, and comment counts are not available.
Args: subreddit: Subreddit name, with or without the "r/" prefix. sort: One of hot, new, top, rising, controversial. time_filter: For top/controversial — hour, day, week, month, year, all. limit: Number of posts (1-100).
Inputs: subreddit (required), sort, limit, time_filter.
fetch_jsonA
Read a Reddit feed the other tools do not cover: a user, multireddit, or domain.
Use this only for Reddit URLs outside the usual shapes, such as /user/, /r/+, or /domain/. For browsing a subreddit, searching, or reading a thread, use browse_subreddit, search_reddit, or get_post instead.
This is not a general web fetcher. URLs on other hosts are refused unless the operator sets REDDIT_MCP_ALLOW_ANY_URL=1.
Args: url: A reddit.com URL.
Inputs: url (required).
get_postA
Read one Reddit thread in full: the original post plus its comments.
Use this after a search or a browse turns up a promising thread and you need what people actually wrote in it, the details, caveats, corrections, and disagreements that a title alone never carries.
Comments come back as a flat list (the reply tree is not available), and neither are scores or vote counts.
Args: url: A Reddit post URL or permalink (e.g. https://www.reddit.com/r/python/comments/abc123/title/ or /r/python/comments/abc123/title/). comment_limit: Max comments to return.
Inputs: url (required), comment_limit.
search_redditA
Search Reddit discussions for real user opinions and experiences on a topic.
Use this when the answer depends on what people who actually used or did the thing report: hands-on impressions, "is X worth it", failure stories, workarounds, recommendations, or where a community currently stands. Returns matching posts and their text; follow up with get_post to read the comments.
Reddit's own search covers post titles and bodies, not comment text, so no results means Reddit did not surface it, not that nobody posted it.
Args: query: Search terms. subreddit: Restrict to this subreddit (with or without "r/"). sort: relevance, hot, top, new, comments. time_filter: hour, day, week, month, year, all. limit: Number of results (1-100).
Inputs: query (required), sort, limit, subreddit, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a distinct purpose: browse_subreddit for live subreddit activity, get_post for a single thread with comments, search_reddit for query-based discovery, and fetch_json as an escape hatch for unusual Reddit URLs. The descriptions explicitly cross-reference each other to prevent misselection.
Three tools follow the verb_noun pattern (browse_subreddit, get_post, search_reddit) with clear verbs, but fetch_json breaks the pattern with a generic verb and a different structure. Still, the naming is readable and the deviation is minor and purposeful.
Four tools is a well-scoped set for a Reddit reader. Each tool covers a distinct core operation (browse, read, search, fetch uncommon feed), and none feel redundant or extraneous.
The surface covers the primary read workflows—browsing, reading threads, and searching—but lacks any write operations (posting, commenting) and does not expose sorting by subreddit-specific metadata like scores. The fetch_json fallback partially compensates for missing feed types, but the domain is clearly read-only.
Maintenance
Related MCP Connectors
Search public Reddit posts, browse subreddit feeds, and read posts, comments, and profiles.
Browse and manage Reddit posts, comments, and threads. Fetch user activity, explore hot/new/rising…
Reddit posts, comments, subreddits, and search for AI agents. Free key, self-minted, no signup.
Read-only Reddit search API for AI agents: posts, comments, comment trees, subreddit rules.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables searching Reddit posts, fetching subreddit content, and retrieving post comments without requiring an API key. It uses public JSON endpoints to provide seamless access to Reddit data for LLM-based applications.3 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access public Reddit data via JSON endpoints, including subreddit trending posts, keyword search, and post details with comments, without authentication.306 npmMIT
- AlicenseAqualityDmaintenanceProvides read-only access to public Reddit discussions via official OAuth, with tools to list posts, search subreddits, and retrieve posts and comments.473 npmMIT
- AlicenseAqualityCmaintenanceEnables searching Reddit, listing subreddit posts, and reading full threads with their comments through Reddit's public RSS feeds, without needing an account, app, or API key. All three tools are read-only and return titles, URLs, authors, dates, and plain text.332 npm2MIT