Skip to main content
Glama
iris-alights

reddit-mcp

by iris-alights

reddit-mcp

MCP server for Reddit. Read-only mode works out of the box with no setup. Write mode requires a session cookie and comes with risks.

Read-Only Mode (No Setup Required)

Reading from Reddit requires no credentials. Just install and use:

pip install reddit-mcp-noapi

The read tools (reddit_read, reddit_listing, reddit_search) fetch public JSON from old.reddit.com. This is identical to viewing Reddit in a browser — no login required.

Note: Feeding Reddit content to AI probably violates Reddit's ToS. However, read-only access is indistinguishable from normal browsing, so there's no practical risk — Reddit can't tell the difference between you reading a post and Claude reading it.

MCP Config (Read-Only)

{
  "mcpServers": {
    "reddit": {
      "command": "reddit-mcp"
    }
  }
}

CLI Examples (Read-Only)

# Read a post with comments
reddit read https://reddit.com/r/LocalLLaMA/comments/abc123/post_title

# List subreddit posts
reddit listing LocalLLaMA --limit 10

# Search
reddit search LocalLLaMA "llama 3"

Related MCP server: reddit-mcp

⚠️ Read this before proceeding.

Write mode lets you post comments, submit posts, vote, and check your inbox. It works by using session cookies from your browser.

The Risk

This violates Reddit's Terms of Service. Reddit severely restricted API access in 2023 and stopped issuing new free API keys entirely in December 2025. Using automation to bypass their API restrictions is explicitly against their rules.

If Reddit detects automated access on your account, your account may be permanently banned. There's no way to predict if or when this will happen.

If You Accept the Risk

If you're logged into Reddit in your browser, the CLI can import your session automatically:

# Auto-detect browser
reddit auth

# Or specify a browser
reddit auth --browser firefox
reddit auth --browser chrome

This extracts the reddit_session cookie and saves it to ~/.config/reddit-mcp/session.json.

Supported browsers:

Browser

Linux

macOS

Windows

Firefox

Chrome

Chromium

Safari

?

Edge

Opera

Brave

✓ = supported, ? = untested, — = not applicable

Notes:

  • Snap and Flatpak installations of Chrome/Chromium are supported on Linux

  • Chrome-based browsers may prompt for keychain/keyring access to decrypt cookies

  • Safari support is untested — please report if it works (or doesn't)

Using different accounts: If you use different browsers for different Reddit accounts, specify the browser:

# Main account in Firefox
reddit auth --browser firefox

# Alt account in Chromium (use different session directory)
REDDIT_SESSION_DIR=~/.config/reddit-mcp-alt reddit auth --browser chromium

If auto-import doesn't work:

  1. Log into Reddit in your browser

  2. Open DevTools (F12) → Application → Cookies → https://www.reddit.com

  3. Find the cookie named reddit_session

  4. Copy its value (it's a long JWT string starting with eyJ...)

  5. Create ~/.config/reddit-mcp/session.json:

{
  "cookies": {
    "reddit_session": "eyJhbGciOiJS... (your full cookie value here)"
  },
  "username": "your_reddit_username"
}

Note: Manual setup doesn't support auto-refresh. When your cookie expires, you'll need to repeat these steps. Use reddit auth if you want automatic refresh.

(Optional) Override the Session Location

By default, the session is stored in ~/.config/reddit-mcp/. You can override this in your MCP config if you want Claude to use a different Reddit account than your CLI default, or if you're running multiple instances with different accounts:

{
  "mcpServers": {
    "reddit": {
      "command": "reddit-mcp",
      "env": {
        "REDDIT_SESSION_DIR": "/path/to/session/directory"
      }
    }
  }
}

How Write Mode Works

  1. Write operations load the session cookie from ~/.config/reddit-mcp/session.json

  2. The cookie is used to authenticate with old.reddit.com

  3. When the cookie expires, reddit-mcp automatically re-imports from the same browser

Reddit session cookies last a long time (months), so refreshes are rare. If auto-refresh fails (e.g., you logged out of the browser), just run reddit auth again.

Write Tools

Tool

Description

reddit_inbox

Check replies, mentions, messages

reddit_comment

Reply to a post or comment

reddit_submit

Submit a new post

reddit_vote

Upvote/downvote

reddit_delete

Delete your own content

CLI Examples (Write Mode)

# Check inbox
reddit inbox
reddit inbox --unread

# Post a comment (thing_id is t3_xxx for posts, t1_xxx for comments)
reddit comment t3_abc123 "This is my reply"

# Submit a text post
reddit submit LocalLLaMA "Post Title" --text "Post body here"

# Submit a link post
reddit submit LocalLLaMA "Post Title" --url "https://example.com"

# Vote (1 = upvote, -1 = downvote, 0 = remove vote)
reddit vote t3_abc123 1

# Delete your own post or comment
reddit delete t1_xyz789

Why This Exists

Reddit severely restricted third-party API access in 2023 and stopped issuing new free API keys entirely in December 2025. If you want to build something that interacts with Reddit programmatically, your options are:

  1. Be a large company that can negotiate API access

  2. Scrape public pages (read-only)

  3. Use session cookies (what this does for writes)

This tool exists because the AI/LLM community benefits from being able to interact with Reddit, and Reddit has made that impossible through official channels.

License

Unlicense — Public domain. Do whatever you want with it.

The author takes no responsibility for any consequences of using this tool.

Available Tools

8 tools
reddit_commentB

Post a comment reply. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesComment text (supports markdown)
thing_idYesFullname of thing to reply to (t3_xxx for post, t1_xxx for comment)
check_existingNoCheck if already replied to avoid duplicates (default: true)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full burden. Only states 'Requires authentication' and minimal action; lacks details on rate limits, error behavior, or side effects beyond posting a reply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no extraneous information. Front-loaded with purpose and authentication requirement. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and no annotations, the description is too minimal. Lacks details on return values, error handling, or the effect of the 'check_existing' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description adds no parameter-specific information beyond what the input schema already provides. Schema coverage is 100% with clear descriptions for text, thing_id, and check_existing. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Post a comment reply', specifying the verb and resource. This distinguishes it from siblings like reddit_submit (post submission) and reddit_read (reading).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions 'Requires authentication' but provides no guidance on when to use this tool versus alternatives like reddit_submit or reddit_read. No explicit when-to-use or when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_deleteA

Delete your own post or comment. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
thing_idYesFullname of thing to delete (t3_xxx or t1_xxx)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It mentions authentication but does not disclose other important behaviors like irreversibility, ownership restrictions, or potential errors. This is adequate but could be improved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The first sentence front-loads the action and resource, and the second states the authorization requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers purpose and authentication. However, it could be more complete by explaining success/error behavior or noting that only own content can be deleted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter schema has 100% coverage with a description of thing_id. The description adds specific format details ('t3_xxx or t1_xxx'), which provides meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('your own post or comment'), and specifies authentication requirement. This distinguishes it from sibling tools like reddit_submit and reddit_vote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides key guidance by noting that authentication is required. While it does not explicitly list alternatives or when to avoid using the tool, the clear purpose and sibling list make it obvious for deletion tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_inboxB

Check Reddit inbox for replies, mentions, and messages. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum messages to retrieve (default: 25)
unread_onlyNoOnly return unread messages (default: false)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only notes authentication is required but omits details like whether messages are marked read, pagination, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the purpose, the second adds the authentication requirement. No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two optional parameters and no output schema, the description covers the basic action and auth requirement but does not clarify return format or behavior like marking read status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents both parameters (limit, unread_only) with descriptions. The tool description adds no additional meaning beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool's action ('Check'), resource ('Reddit inbox'), and contents ('replies, mentions, and messages'), distinguishing it from siblings like reddit_comment or reddit_submit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as reddit_listing or reddit_read, and no contexts or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_listingB

List posts from a subreddit. Returns titles, scores, and permalinks.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of posts to skip for pagination (default: 0)
sortNoSort order: hot, new, top, rising (default: hot)hot
limitNoNumber of posts to return (default: 15)
subredditYesSubreddit name without r/ prefix (e.g., 'LocalLLaMA')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only mentions return fields without detailing side effects, authentication needs, or rate limits. Lacks behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise (two sentences) and front-loaded with the core purpose. No superfluous text, though could include a brief usage note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description lacks context about pagination behavior or when to prefer listing over search. No output schema, but description partly compensates with return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 4 parameters. However, the description does not add any extra parameter context beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it lists posts from a subreddit and what is returned (titles, scores, permalinks). Clearly distinguishes from sibling tools like reddit_submit or reddit_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as reddit_search. Does not mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_readA

Read a Reddit post with comments. Returns post content, metadata, and threaded comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPost URL (e.g., https://reddit.com/r/sub/comments/xxx/title) or post ID
depthNoHow many levels of comment replies to include (default: 1)
max_commentsNoMaximum number of comments to return (default: 25)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are given, so the description must carry the burden. It implies a read-only operation through the word 'read,' but it does not explicitly confirm no side effects. It also omits details about authentication or rate limits, but for a simple read tool, this is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the purpose. It contains no wasted words and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately mentions returned elements (post content, metadata, threaded comments). However, it does not explain how depth and max_comments affect the output, though those are covered in the schema. It is largely complete for a read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning to the parameters; it does not mention url, depth, or max_comments. The schema already documents them adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a Reddit post with comments and specifies that it returns post content, metadata, and threaded comments. This is a specific verb and resource, and it distinguishes from siblings like reddit_comment (posting a comment) and reddit_listing (listing posts).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as reddit_search or reddit_listing. There is no mention of when not to use it or what prerequisites exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_submitB

Submit a new post to a subreddit. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoLink URL (for link posts, mutually exclusive with text)
textNoSelf post body text (for text posts)
titleYesPost title
subredditYesSubreddit name without r/ prefix

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states 'Requires authentication', omitting details on success indicators, error states, rate limits, or side effects (e.g., whether edits are allowed). This is minimal disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences. It front-loads the purpose and avoids extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description should explain return values or success behavior. It only mentions authentication, leaving gaps about what the tool returns (e.g., post ID) and potential errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; all 4 parameters have descriptions in the schema. The description adds no additional meaning beyond the schema, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Submit a new post to a subreddit', specifying the action and resource. It distinguishes from sibling tools like reddit_comment (comment submission) and reddit_delete (deletion).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for posting, but lacks explicit guidance on when to use this tool versus alternatives like reddit_comment. It mentions 'Requires authentication' but does not provide exclusions or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_voteA

Vote on a post or comment. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
thing_idYesFullname of thing to vote on (t3_xxx or t1_xxx)
directionYesVote direction: 1 (upvote), -1 (downvote), 0 (remove vote)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only discloses authentication requirement. Does not mention that voting is a write operation (destructive), effects on state, or idempotency. Missing key behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and required auth. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple 2-param tool with no output schema. Basic description plus schema suffices for minimum viability, but lacks broader behavioral context (e.g., error cases, vote mechanics) that would help an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100% with clear descriptions for thing_id and direction. Description adds no extra parameter meaning beyond schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Vote' and resource 'post or comment', clearly distinct from siblings like reddit_comment, reddit_delete, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'Requires authentication', implying prerequisite, but no explicit guidance on when to use vs alternatives. Sibling tools are different operations so confusion is low, but still lacking explicit when/why.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: commenting, deleting, inbox, listing, reading, searching, submitting, and voting. There is no overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent 'reddit_verb' pattern with descriptive verbs, making them predictable and easy to understand.

Tool Count5/5

With 8 tools covering essential Reddit actions, the count is well-scoped—not too few to be trivial, not too many to be overwhelming.

Completeness3/5

The tools cover create, read, delete, and search functionalities, but lack an edit/update tool for posts or comments, which is a notable gap in the lifecycle.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A dependency-free MCP server that reads Reddit through its RSS feeds, enabling search, browsing subreddits, and reading post comments without any API keys or authentication.
    3
    14
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    12
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables authenticated Reddit account actions like posting, commenting, voting, and messaging via the Reddit API.
    12
    32
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local, read-only Reddit MCP server that provides tools for searching posts, retrieving posts/comments, subreddit information, and user content via the official Reddit Data API with caching and privacy-focused features.
    The Unlicense

Latest Blog Posts

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/iris-alights/reddit-mcp'

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