Skip to main content
Glama

Reddit MCP

License: MIT

A plug-and-play MCP server to browse, search, and read Reddit.

Demo

Here's a short video showing how to use this in Claude Desktop:

https://github.com/user-attachments/assets/a2e9f2dd-a9ac-453f-acd9-1791380ebdad

Related MCP server: systemprompt-mcp-reddit

Features

  • Detailed parameter validation with pydantic

  • Uses the reliable PRAW library under the hood

  • Built-in rate limiting protection thanks to PRAW

Caveats

  • Only supports read features for now. If you want to use write features, upvote the issue or send a PR! 🙌

  • Tools use tokens. To use this with Claude, you may need to be a Pro user to use many tool calls. Free tier users should be fine with lighter tool usage. Your token usage is your responsibility.

Installation

Prerequisite: Reddit API credentials

Create a developer app in your Reddit account if you don't already have one. This will give you a client_id and client_secret to use in the following steps. If you already have these, you can skip this step.

Claude Desktop

To install into Claude Desktop:

  • Follow the instructions here until the section "Open up the configuration file in any text editor."

  • Add the following to the file depending on your preferred installation method:

Using uvx (recommended)

"mcpServers": {
  "reddit": {
    "command": "uvx",
    "args": ["reddit-mcp"],
    "env": {
      "REDDIT_CLIENT_ID": "<client_id>",
      "REDDIT_CLIENT_SECRET": "<client_secret>"
    }
  }
}

Using PIP

First install the package:

pip install reddit-mcp

Then add the following to the configuration file:

"mcpServers": {
  "reddit": {
    "command": "python",
    "args": ["-m", "reddit_mcp"],
    "env": {
      "REDDIT_CLIENT_ID": "<client_id>",
      "REDDIT_CLIENT_SECRET": "<client_secret>"
    }
  }
}

Others

You can use this server with any MCP client, including agent frameworks (LangChain, LlamaIndex, AutoGen, etc). For an example AutoGen integration, check out the example.

Tools

The tools the server will expose are:

Name

Description

get_comment

Access a comment

get_comments_by_submission

Access comments of a submission

get_submission

Access a submission

get_subreddit

Access a subreddit by name

search_posts

Search posts in a subreddit

search_subreddits

Search subreddits by name or description

Contributing

Contributions are welcome! See CONTRIBUTING.md for more information.

Acknowledgments

  • PRAW for an amazingly reliable library 💙

Available Tools

6 tools
get_comment_by_idB
Retrieve a specific comment by ID.

Args:
    comment_id: ID of the comment to retrieve

Returns:
    Comment details with any replies
ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes

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 carries the full burden of behavioral disclosure. It states the tool retrieves comment details with replies, which implies a read-only operation, but doesn't cover aspects like error handling (e.g., what happens if the ID is invalid), authentication needs, rate limits, or data format. This leaves significant gaps in understanding the tool's behavior.

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 well-structured and front-loaded with the core purpose, followed by clear sections for arguments and returns. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

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?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate but lacks depth. It covers the basic operation and parameter semantics but omits behavioral details like error cases or output structure, which could hinder an agent's ability to use it correctly in edge scenarios.

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 description adds meaningful context for the single parameter by explaining that 'comment_id' is the 'ID of the comment to retrieve', which clarifies its purpose beyond the schema's basic type information. With 0% schema description coverage and only one parameter, this compensation is adequate, though it could benefit from details like ID format or examples.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Retrieve') and resource ('a specific comment by ID'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_comments_by_submission', which might retrieve multiple comments, leaving some ambiguity about when to choose this tool over others.

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 by specifying 'a specific comment by ID', suggesting it's for retrieving a single, known comment. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_comments_by_submission' or mention any prerequisites or exclusions, leaving the agent to infer context from the parameter name alone.

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

get_comments_by_submissionB
Retrieve comments from a specific submission.

Args:
    submission_id: ID of the submission to get comments from
    replace_more: Whether to replace MoreComments objects with actual comments

Returns:
    List of comments with their replies
ParametersJSON Schema
NameRequiredDescriptionDefault
replace_moreNo
submission_idYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions retrieving comments and replacing MoreComments objects, but doesn't cover important aspects like authentication requirements, rate limits, error conditions, pagination, or what happens when submission_id is invalid. The behavioral context is incomplete.

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?

The description is well-structured with clear sections for Args and Returns. It's appropriately sized with no redundant information. Every sentence serves a purpose, though it could be slightly more front-loaded with the core purpose.

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 retrieval tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description provides adequate basic information but lacks depth. It explains what the tool does and its parameters but doesn't cover behavioral aspects, error handling, or relationship to sibling tools, leaving gaps in contextual understanding.

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?

Schema description coverage is 0%, so the description must compensate. It clearly explains both parameters: 'submission_id' identifies the target submission, and 'replace_more' controls whether MoreComments objects are replaced with actual comments. This adds meaningful context beyond the bare schema.

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

Purpose4/5

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

The description clearly states the verb 'Retrieve' and resource 'comments from a specific submission', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_comment_by_id' or explain how this differs from general comment retrieval methods.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_comment_by_id' or 'search_posts'. It mentions retrieving comments from a specific submission but doesn't clarify use cases, prerequisites, or exclusions.

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

get_submissionC
Retrieve a specific submission by ID.

Args:
    submission_id: ID of the submission to retrieve

Returns:
    Detailed information about the submission
ParametersJSON Schema
NameRequiredDescriptionDefault
submission_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states 'Retrieve' but doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, error handling, or what 'Detailed information' includes. This leaves significant gaps for an agent to understand how to use it effectively.

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?

The description is appropriately sized with three sentences: purpose, parameter, and return value. It's front-loaded with the main action, and each sentence adds value without redundancy. Minor improvements could include merging the Args/Returns sections into a single line for brevity.

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?

Given the tool's low complexity (1 parameter, no nested objects) but lack of annotations and output schema, the description is minimally adequate. It covers the basic purpose and parameter but misses behavioral context and output details, which are crucial for a retrieval tool. It's complete enough to avoid being inadequate but has clear gaps.

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?

The schema description coverage is 0%, so the description must compensate. It adds meaning by specifying that 'submission_id' is the 'ID of the submission to retrieve', which clarifies the parameter's purpose beyond the schema's title 'Submission Id'. However, it doesn't provide format details (e.g., string format, examples) or constraints, leaving some ambiguity.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('a specific submission by ID'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_comment_by_id' or 'get_comments_by_submission', which follow similar patterns for comments versus submissions.

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?

The description provides no guidance on when to use this tool versus alternatives like 'search_posts' or 'get_comments_by_submission'. It mentions retrieving by ID but doesn't specify prerequisites (e.g., needing a known submission ID) or exclusions (e.g., not for bulk retrieval).

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

get_subredditB
Retrieve a subreddit by name.

Args:
    subreddit_name: Name of the subreddit to retrieve

Returns:
    Detailed information about the subreddit
ParametersJSON Schema
NameRequiredDescriptionDefault
subreddit_nameYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the action ('Retrieve') and return ('Detailed information'), but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or what 'detailed information' entails. This leaves significant gaps for a tool with no annotation coverage.

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 appropriately sized and front-loaded, with a clear purpose statement followed by structured Args and Returns sections. Every sentence earns its place without redundancy, making it efficient and well-organized.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter but lacks details on behavior, usage context, and output specifics, leaving room for improvement in completeness.

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?

With 0% schema description coverage and 1 parameter, the description compensates by explaining the parameter's purpose ('Name of the subreddit to retrieve'), adding meaningful context beyond the schema's basic type. This is sufficient for the single parameter, though it doesn't detail format or constraints.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('a subreddit by name'), making the purpose specific and understandable. It distinguishes from siblings like 'search_subreddits' by focusing on retrieval of a single subreddit rather than searching, though it doesn't explicitly name alternatives.

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 like 'search_subreddits' for finding subreddits or other siblings for different data types. The description implies usage for retrieving a known subreddit by name but lacks explicit context or exclusions.

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

search_postsC
Search for posts within a subreddit.

Args:
    params: Search parameters including subreddit name, query, and filters

Returns:
    List of matching posts with their details
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action ('search') and return type ('List of matching posts with their details'), but lacks critical details such as whether this is a read-only operation, potential rate limits, authentication requirements, pagination behavior, or error handling. For a search tool with zero annotation coverage, this is insufficient.

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?

The description is appropriately concise with three sentences that cover purpose, parameters, and returns without unnecessary fluff. It's front-loaded with the core function. However, the structure could be slightly improved by integrating parameter details more seamlessly, but it remains efficient overall.

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 complexity of a search operation with multiple parameters (e.g., sort, syntax, time_filter), no annotations, and no output schema, the description is incomplete. It doesn't explain the return format beyond 'List of matching posts with their details,' nor does it cover behavioral aspects like rate limits or error cases. For a tool with rich input schema but no other structured data, more context is needed.

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?

The schema description coverage is 0%, so the description must compensate. It mentions 'Search parameters including subreddit name, query, and filters,' which adds some context beyond the schema by hinting at the parameters' roles. However, it doesn't detail specific filters or explain parameter interactions, leaving gaps. Given the low coverage, this partial compensation earns a baseline score.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search for posts within a subreddit.' It specifies the verb ('search') and resource ('posts within a subreddit'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_subreddits' or 'get_submission', which is why it doesn't achieve a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'search_subreddits' (for searching subreddits themselves) or 'get_submission' (for retrieving a specific post), leaving the agent to infer usage context. This lack of explicit comparison or exclusion criteria results in a low score.

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

search_subredditsB
Search for subreddits using either name-based or description-based search.

Args:
    by: Search parameters, either SearchByName or SearchByDescription

Returns:
    List of matching subreddits with their details
ParametersJSON Schema
NameRequiredDescriptionDefault
byYes

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 carries the full burden of behavioral disclosure. It states the tool returns a list of matching subreddits with details, but lacks critical information such as whether this is a read-only operation, potential rate limits, authentication requirements, or how results are sorted/paginated. The description is minimal and misses key behavioral traits for a search 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 and well-structured, using only three sentences that efficiently cover purpose, parameters, and return value. Every sentence adds value with no wasted words, and it's front-loaded with the core functionality.

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?

Given the tool's moderate complexity (search with two modes), no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It covers the basic purpose and parameter structure but lacks behavioral details, usage context, and output specifics. It's adequate as a minimal overview but leaves significant gaps for an AI agent to operate effectively.

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 description adds meaningful context beyond the input schema by explaining that the 'by' parameter accepts either 'SearchByName' or 'SearchByDescription' objects, clarifying the two distinct search modes. Since schema description coverage is 0% (parameters have no descriptions in the schema), the description compensates well by outlining the parameter's purpose, though it doesn't detail the nested properties within each search type.

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

Purpose4/5

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

The description clearly states the tool searches for subreddits using name-based or description-based search, providing a specific verb ('search') and resource ('subreddits'). It distinguishes from sibling tools like 'search_posts' (which searches posts) and 'get_subreddit' (which retrieves a specific subreddit), though it doesn't explicitly differentiate from them in the description text itself.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_subreddit' (for retrieving a known subreddit) or 'search_posts' (for searching within subreddit content). It mentions the two search methods but offers no context on which to choose or any prerequisites for usage.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedget_comment_by_id
    • First observedget_comments_by_submission
    • First observedget_submission
    • First observedget_subreddit
    • First observedsearch_posts
    • First observedsearch_subreddits

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific Reddit entities: comments, submissions, subreddits, and searches. No overlap exists between tools like get_comment_by_id and get_comments_by_submission, which serve different retrieval needs.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with underscores (e.g., get_comment_by_id, search_posts). The naming is predictable and readable throughout the set, with no deviations in style.

Tool Count4/5

Six tools is reasonable for a Reddit API server, covering core read operations. It's slightly lean but includes key functionalities like retrieval and search, though it lacks write operations which might be expected in a full-featured server.

Completeness3/5

The tool set provides good read coverage for comments, submissions, and subreddits, but there are notable gaps: no create, update, or delete operations (e.g., posting comments or submissions). This limits agents to read-only workflows, which may cause failures in interactive scenarios.

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
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants like Claude to browse and analyze Reddit content, including searching subreddits, retrieving post details with comments, and viewing trending posts.
    9
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server that enables AI assistants to access and interact with Reddit content through features like user analysis, post retrieval, subreddit statistics, and authenticated posting capabilities.
    15
    299
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides AI agents with full Reddit API capabilities including search, browsing, reading, posting, commenting, voting, editing, and deleting.
    13
    MIT

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

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