Reddit MCP
Provides tools for browsing, searching, and reading Reddit content, including access to submissions, comments, and subreddits.
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 MCPShow me hot posts in r/science"
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
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-mcpThen 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 |
| Access a comment |
| Access comments of a submission |
| Access a submission |
| Access a subreddit by name |
| Search posts in a subreddit |
| 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 toolsget_comment_by_idA
Retrieve a specific comment by ID.
Args:
comment_id: ID of the comment to retrieve
Returns:
Comment details with any replies
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| submission_id | Yes | ||
| replace_more | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| submission_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| subreddit_name | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.2- First observed
get_comment_by_id - First observed
get_comments_by_submission - First observed
get_submission - First observed
get_subreddit - First observed
search_posts - First observed
search_subreddits
TDQS
Scored across 6 tools
Each tool targets a distinct Reddit resource (comment, submission, subreddit) or action (searching posts vs subreddits), with no overlapping purposes.
All tool names follow a consistent 'verb_noun' pattern in snake_case, using 'get_' for retrieval and 'search_' for searching.
Six tools provide a well-scoped set for basic Reddit operations without being too few or too many.
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
Browse and manage Reddit posts, comments, and threads. Fetch user activity, explore hot/new/risingβ¦
Read-only Reddit search API for AI agents: posts, comments, comment trees, subreddit rules.
Reddit MCP server: search posts, subreddit feeds, comments & user profiles as JSON. No API key.
Reddit MCP β public Reddit data via JSON endpoints (no auth required)
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables 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.17465MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Reddit by searching subreddits, retrieving hot posts, and fetching detailed post information with comments through the Reddit API.-
- FlicenseNot gradedqualityCmaintenanceEnables 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-
- FlicenseNot gradedqualityCmaintenanceEnables reading subreddit posts, comments, user profiles, searching Reddit, and submitting posts, comments, or votes via natural language commands.-