Skip to main content
Glama
fastmcp-me

Reddit MCP

by fastmcp-me

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

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: MCP Reddit Server

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_idA
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

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions input and output (comment details with replies) but lacks info on behavior for missing IDs, authentication needs, rate limits, or any side effects.

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?

Very concise: three lines covering purpose, args, and returns without any extraneous text.

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?

Adequate for a simple single-parameter tool. Describes what it returns (with replies). Could benefit from clarifying that comment_id is required and mentioning error handling, but overall complete.

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, the description adds meaningful detail by stating comment_id is 'ID of the comment to retrieve', which clarifies purpose beyond the schema's 'Comment Id' title.

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 it retrieves a specific comment by ID. It distinguishes from siblings like get_comments_by_submission which retrieves multiple comments for a submission.

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 (e.g., get_comments_by_submission) or any context about 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_comments_by_submissionA
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
submission_idYes
replace_moreNo

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description bears full burden. It correctly suggests a read-only operation ('Retrieve comments') and indicates the return type ('list of comments with their replies'). However, it does not disclose specific behaviors such as how depth of replies is handled, whether there are rate limits, or the effect of replace_more beyond a brief sentence.

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 concise with separate Args and Returns sections, making it easy to scan. The first sentence immediately conveys the tool's core function. However, it could be more front-loaded by placing the core purpose before the argument list.

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 tool with 2 parameters and a simple read operation, the description covers essential aspects: purpose, parameter meanings, and return type. It lacks details on pagination, ordering, or limitations of the comment list, but the moderate complexity justifies a score of 4 rather than 5.

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

Parameters5/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 each parameter: submission_id as 'ID of the submission' and replace_more as 'Whether to replace MoreComments objects with actual comments'. This adds meaningful context beyond the schema, which only provides type and default.

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 'Retrieve comments from a specific submission', clearly identifying the verb (retrieve) and resource (comments from a submission). This distinguishes it from sibling tools like get_comment_by_id (single comment) and get_submission (submission details).

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 its siblings (e.g., get_comment_by_id for a single comment, search_posts for broader search). The description also lacks advice on when to set replace_more to true vs false, leaving the agent to infer usage 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_submissionA
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

A3.5/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 behavioral traits. It only states that the tool retrieves and returns detailed information, omitting details like authentication requirements, rate limits, error handling (e.g., if ID not found), or whether the operation is read-only.

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: one sentence for purpose, followed by a clear parameter documentation and return value hint. No redundant information.

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 retrieval tool with one parameter and no output schema, the description covers the basic purpose and parameter. However, it lacks details on the expected return format, error cases, and any prerequisites (e.g., authentication), leaving some gaps for the AI 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?

With 0% schema description coverage, the description adds basic meaning to the parameter ("ID of the submission to retrieve") beyond the schema's type-only definition. However, the explanation is minimal and does not specify input formats or constraints.

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 (retrieve) and the resource (a specific submission by ID). It effectively distinguishes from sibling tools like get_comment_by_id and get_comments_by_submission, which operate on comments.

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 when a submission ID is known, but it does not explicitly specify when to use this tool over alternatives (e.g., search_posts for query-based retrieval). No when-not or alternative guidance is provided.

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?

With no annotations, the description fails to add behavioral context. It only mentions 'Detailed information' without specifics, and does not disclose potential limitations like rate limits or access restrictions.

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 very short and to the point, with no unnecessary words. However, the inclusion of Args/Returns structure is not standard for MCP and could be streamlined.

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?

For a tool with one parameter and no output schema, the description is minimal. It lacks details about return format, limitations, or when to use this tool over siblings, leaving an agent with insufficient information.

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

Parameters2/5

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

Schema description coverage is 0%. The description for 'subreddit_name' merely restates the parameter name ('Name of the subreddit to retrieve') without adding semantic value or constraints.

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 'Retrieve a subreddit by name,' which is a specific verb-resource pair. It distinguishes from siblings like search_subreddits by implying retrieval of a single subreddit rather than searching.

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 when you have a subreddit name, but does not explicitly state when not to use or mention alternatives like search_subreddits. Guidance is minimal.

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?

No annotations provided. Description only states it searches and returns posts, but does not disclose behavioral traits such as rate limits, authentication needs, or whether it is a read-only operation. Name implies read-only, but not explicit.

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?

Description is three lines: title, args summary, returns summary. Compact and front-loaded. Could be slightly more structured but no wasted words.

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?

No output schema provided, yet return description is vague ('List of matching posts with their details'). No mention of pagination, result limits, or sorting behavior despite these being important for a search tool. Incomplete for a search operation.

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?

Input schema has rich descriptions for all nested fields (subreddit_name, query, sort, syntax, time_filter). The description adds only a generic summary ('params: Search parameters including subreddit name, query, and filters'), which is mostly redundant. With high schema coverage, baseline 3 is appropriate.

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?

Clearly states 'Search for posts within a subreddit' – a specific verb (search) and resource (posts) with scope. However, no differentiation from sibling tools like get_submission or search_subreddits.

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 vs alternatives (e.g., get_submission for single post, search_subreddits for subreddits). No when-not-to-use or context information.

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

search_subredditsC
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

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only notes it returns a list of matching subreddits with details, but omits important traits like auth requirements, rate limits, or any side effects.

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 short and includes a structured Args and Returns section. It is efficient, though perhaps too brief for full clarity.

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 tool has a complex parameter (union type), no output schema, and no annotations, the description is insufficient. It does not explain return structure or how to choose between search modes.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only says 'by: Search parameters, either SearchByName or SearchByDescription', which adds little beyond the schema. It fails to explain how the union discriminator works or hint at intended usage.

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 searches for subreddits using two methods (name-based or description-based), which distinguishes it from sibling tools like get_comment_by_id or search_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 on when to use this tool versus other search tools, nor when to choose name vs. description search. The description lacks explicit context for selection.

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.

  1. 6 tool updatesv0.1.2
    • First observedget_comment_by_id
    • First observedget_comments_by_submission
    • First observedget_submission
    • First observedget_subreddit
    • First observedsearch_posts
    • First observedsearch_subreddits

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct Reddit resource (comment, submission, subreddit) or action (searching posts vs subreddits), with no overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent 'verb_noun' pattern in snake_case, using 'get_' for retrieval and 'search_' for searching.

Tool Count5/5

Six tools provide a well-scoped set for basic Reddit operations without being too few or too many.

Completeness4/5

Covers core read operations (submissions, comments, subreddits, search) but lacks tools for listing subreddit feeds or user profiles, which are minor gaps.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Enables comprehensive Reddit interaction including fetching posts, analyzing users and subreddits, searching content, and creating posts/comments. Supports both read-only mode with client credentials and full functionality with user authentication.
    17
    465
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Reddit through the Reddit API, allowing users to search posts, retrieve saved content, fetch comments, reply to comments, and access detailed post information with comment trees.
    4
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables reading subreddit posts, comments, user profiles, searching Reddit, and submitting posts, comments, or votes via natural language commands.
    -