Skip to main content
Glama
ekatiyar

simple-reddit-mcp

by ekatiyar
README.md
# simple-reddit-mcp

[![PyPI](https://img.shields.io/pypi/v/simple-reddit-mcp)](https://pypi.org/project/simple-reddit-mcp/)
[![CI](https://github.com/ekatiyar/simple-reddit-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/ekatiyar/simple-reddit-mcp/actions/workflows/ci.yml)

A read-only Reddit MCP server that needs **no Reddit account, no API key, and no
browser**. It reads threads, comments and subreddits from the
[Arctic Shift](https://arctic-shift.photon-reddit.com) archive over plain
keyless HTTP.

One runtime dependency, [`zeromcp`](https://github.com/mrexodia/zeromcp), keeps `simple-reddit-mcp` lightweight and quick to start.

## Requirements

- Python 3.11 or newer
- [`uv`](https://docs.astral.sh/uv/) (recommended) or `pip`

## Run it

```bash
uvx simple-reddit-mcp
```

The server speaks MCP over stdio: JSON-RPC on stdout, logs on stderr.

## Configure your MCP client

Claude:

```bash
claude mcp add reddit --scope user -- uvx simple-reddit-mcp
```

or

```json
{
  "mcpServers": {
    "reddit": {
      "command": "uvx",
      "args": ["simple-reddit-mcp"]
    }
  }
}
```

Codex — in `~/.codex/config.toml`:

```toml
[mcp_servers.reddit]
command = "uvx"
args = ["simple-reddit-mcp"]
```

## Tools

Implemented:

| Tool | Arctic Shift endpoint | Purpose |
|---|---|---|
| `get_thread` | `/api/posts/ids` + `/api/comments/tree` | A post plus its comment tree, from any reddit URL or id |
| `get_posts` | `/api/posts/ids` | Bulk post lookup by id (up to 500) |
| `get_comments` | `/api/comments/ids` | Bulk comment lookup by id (up to 500) |
| `search_posts` | `/api/posts/search` | Discovery by subreddit / keyword / author / date range |
| `search_comments` | `/api/comments/search` | Comment-level search; with `author=` it doubles as user history |
| `search_subreddits` | `/api/subreddits/search` | Find subreddits by name, prefix, size, or age |

Not currently implemented:

| Tool | Arctic Shift endpoint |
|---|---|
| `search_users` | `/api/users/search` |
| `aggregate_posts` / `aggregate_comments` | `/api/{posts,comments}/search/aggregate` |
| `time_series` | `/api/time_series` |
| `subreddit_rules` | `/api/subreddits/rules` |
| `subreddit_wiki` | `/api/subreddits/wikis`, `/api/subreddits/wikis/list` |
| `user_interactions` | `/api/users/interactions/{users,subreddits}`, `.../users/list` |
| `user_flairs` | `/api/users/aggregate_flairs` |
| `resolve_short_link` | `/api/short_links` |
| — | `/api/subreddits/ids`, `/api/users/ids` |

## Caveats

- **Read-only.** Voting, commenting and posting require Reddit auth
- **`score` and `num_comments` are placeholders for ~36h.** Arctic Shift archives
  a post the moment it appears and backfills vote data later, so fresh posts
  report `1` and `0`. Rendered output flags anything under 36h old.
- **Free service = no uptime SLA.**

## Development

```bash
uv sync --group dev
uv run --group dev pytest
```

To publish a new release to PyPI, bump `version` and push to master:

```bash
uv version --bump patch   # bumps pyproject.toml and relocks
git commit -am "release $(uv version --short)"
git push
```

## Attribution

MIT licensed.

- Built on [`zeromcp`](https://github.com/mrexodia/zeromcp) (MIT).
- Data comes from [Arctic Shift](https://github.com/ArthurHeitmann/arctic_shift), a free service; be considerate with it.

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: get_thread retrieves a single post with its comment tree, get_posts and get_comments handle bulk lookups by ID, and the three search tools query posts, comments, and subreddits respectively. The purposes are clearly separated and the verbose caveats do not create ambiguity.

Naming Consistency5/5

All tool names follow a consistent 'verb_noun' pattern, using 'get_' for direct ID-based retrieval and 'search_' for query-based discovery. The only minor deviation is 'get_thread' being singular while others are plural, but the pattern is otherwise uniform and predictable.

Tool Count5/5

Six tools is well-scoped for a read-only Reddit client covering posts, comments, and subreddits through both direct access and search. Each tool serves a distinct purpose without unnecessary redundancy, fitting comfortably within the ideal 3-15 range.

Completeness4/5

The surface covers the core read operations: single-thread retrieval, bulk post/comment fetching, and searching across posts, comments, and subreddits. Minor gaps exist, such as no direct subreddit or user profile endpoint, but search_subreddits and search_comments with author can fill these needs effectively.

Maintenance

ActivitySlowing
ResponsivenessNo issues