MCP Reddit Server
Provides tools for fetching Reddit content, including hot, new, rising, top posts, comment trees, subreddit info, and topic aggregation across multiple subreddits.
Click on "Install 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., "@MCP Reddit Servershow me hot posts from r/programming"
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.
MCP Reddit Server
A comprehensive Model Context Protocol (MCP) server for Reddit. Provides 8 tools for fetching Reddit content, a full REST API, and Azure deployment support. Works with Claude Desktop, Microsoft Copilot Studio, Power Automate, and any MCP-compatible client.
Features
8 Reddit Tools: Fetch hot, new, rising, and top posts from any subreddit
Topic Aggregation: Fetch posts from multiple related subreddits by topic
Comment Trees: Get post content with threaded comments
Subreddit Info: Get subscriber counts and descriptions
Multiple Connection Methods:
MCP Streamable HTTP (for Copilot Studio, Claude Desktop)
REST API with OpenAPI spec (for Power Automate, direct HTTP)
Azure Deployment: Docker + Container Apps deployment out of the box
Related MCP server: Reddit MCP Server
Available Tools
Tool | Description |
| Get hot posts from a subreddit |
| Get newest posts from a subreddit |
| Get rising/trending posts |
| Get top posts by time period |
| Get Reddit front page posts |
| Get post content with comments |
| Get posts from topic-related subreddits |
| Get subreddit info (subscribers, description) |
Quick Start
Prerequisites
Reddit API Credentials: Create an app at https://www.reddit.com/prefs/apps
Choose "script" type
Set redirect URI to
http://localhost:8080Note your Client ID and Client Secret
Generate Refresh Token:
pip install praw python get_refresh_token.pyCreate
.envfile:cp .env.example .env # Edit .env with your credentials
Local Development
Running Locally
# Install dependencies
pip install uv
uv sync
# Run the server
uv run uvicorn mcp_reddit.web_server:app --host 0.0.0.0 --port 8000The server will be available at:
REST API: http://localhost:8000
API Docs: http://localhost:8000/docs
MCP Endpoint: http://localhost:8000/mcp/ (requires MCP_API_KEY)
Using with Claude Desktop (Local)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"reddit": {
"command": "uv",
"args": ["run", "uvicorn", "mcp_reddit.web_server:app", "--port", "8000"],
"cwd": "/path/to/mcp-reddit",
"env": {
"REDDIT_CLIENT_ID": "your_client_id",
"REDDIT_CLIENT_SECRET": "your_client_secret",
"REDDIT_REFRESH_TOKEN": "your_refresh_token",
"MCP_API_KEY": "your_api_key"
}
}
}
}Or use mcp-remote to connect to a running server:
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/mcp/",
"--header",
"X-API-Key: your_api_key"
]
}
}
}Azure Deployment
Option 1: Automated Deployment Script
chmod +x deploy-to-azure.sh
./deploy-to-azure.shThe script will:
Create a resource group
Create Azure Container Registry
Build and push the Docker image
Create Container Apps environment
Deploy the container with your Reddit credentials
Option 2: Manual Deployment
1. Create Azure Resources
# Set variables
RESOURCE_GROUP="mcp-reddit-rg"
LOCATION="westeurope" # or your preferred region
ACR_NAME="yourregistryname"
# Create resource group
az group create --name $RESOURCE_GROUP --location $LOCATION
# Create container registry
az acr create --name $ACR_NAME --resource-group $RESOURCE_GROUP --sku Basic --admin-enabled true
# Create container apps environment
az containerapp env create --name mcp-reddit-env --resource-group $RESOURCE_GROUP --location $LOCATION2. Build and Push Image
az acr build --registry $ACR_NAME --image mcp-reddit:latest --file Dockerfile.azure .3. Deploy Container App
# Get ACR password
ACR_PASSWORD=$(az acr credential show --name $ACR_NAME --query "passwords[0].value" -o tsv)
# Generate MCP API key
MCP_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# Create container app
az containerapp create \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--environment mcp-reddit-env \
--image $ACR_NAME.azurecr.io/mcp-reddit:latest \
--registry-server $ACR_NAME.azurecr.io \
--registry-username $ACR_NAME \
--registry-password "$ACR_PASSWORD" \
--target-port 8000 \
--ingress external \
--min-replicas 1 \
--max-replicas 5 \
--cpu 0.5 \
--memory 1Gi \
--secrets \
reddit-client-id="YOUR_CLIENT_ID" \
reddit-client-secret="YOUR_CLIENT_SECRET" \
reddit-refresh-token="YOUR_REFRESH_TOKEN" \
mcp-api-key="$MCP_API_KEY" \
--env-vars \
REDDIT_CLIENT_ID=secretref:reddit-client-id \
REDDIT_CLIENT_SECRET=secretref:reddit-client-secret \
REDDIT_REFRESH_TOKEN=secretref:reddit-refresh-token \
MCP_API_KEY=secretref:mcp-api-key4. Get Your Server URL
az containerapp show --name mcp-reddit-server --resource-group $RESOURCE_GROUP --query "properties.configuration.ingress.fqdn" -o tsv5. (Optional) Add Custom Domain
# Add custom domain
az containerapp hostname add \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--hostname your-domain.com
# Bind SSL certificate
az containerapp hostname bind \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--hostname your-domain.com \
--environment mcp-reddit-env \
--validation-method CNAMEConnection Methods
1. MCP Streamable HTTP (Authenticated)
For Microsoft Copilot Studio and Claude Desktop:
Setting | Value |
URL |
|
Auth | API Key |
Header |
|
Important: The URL must have a trailing slash (/mcp/)
2. REST API / OpenAPI (No Auth Required)
For Power Automate and direct HTTP calls:
Setting | Value |
Base URL |
|
OpenAPI Spec |
|
Docs |
|
REST Endpoints:
POST /api/hot-threads- Get hot postsPOST /api/post-content- Get post with commentsPOST /api/topic-latest- Get posts by topicPOST /api/front-page- Get front page postsPOST /api/subreddit-posts-by-time- Get top posts by timePOST /api/subreddit-new-posts- Get new postsPOST /api/subreddit-rising-posts- Get rising postsPOST /api/subreddit-info- Get subreddit infoGET /api/topics- List available topics
Configuration
Environment Variables
Variable | Required | Description |
| Yes | Reddit app client ID |
| Yes | Reddit app client secret |
| Yes | Reddit OAuth refresh token |
| No | API key for MCP endpoint authentication |
Topic Categories
The server includes predefined topic categories in list.txt:
Programming
Tech News
AI/ML
Gaming
Science
And more...
Edit list.txt to customize topic-to-subreddit mappings.
Updating Deployment
# Rebuild image
az acr build --registry $ACR_NAME --image mcp-reddit:latest --file Dockerfile.azure .
# Force new revision
az containerapp update \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--image $ACR_NAME.azurecr.io/mcp-reddit:latest \
--set-env-vars FORCE_UPDATE="$(date +%s)"Cleanup
# Delete all Azure resources
az group delete --name mcp-reddit-rg --yes --no-waitAcknowledgments
This project was originally inspired by mcp-reddit by adhikasp, which taught us how to interface with the Reddit API via MCP. Over time the project grew significantly beyond the original scope — adding a full REST API, topic aggregation across subreddits, Azure deployment, and expanding from 2 tools to 8 — and became its own standalone project.
License
AGPL-3.0 License - see LICENSE for details.
Available Tools
8 toolsreddit_frontB
Get Reddit front page posts.
Args: sort: hot, top, or new (default: hot) limit: Posts to fetch (default: 10) time_filter: hour/day/week/month/year/all
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | hot | |
| limit | No | ||
| time_filter | No | day |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does communicate a read-only listing operation with sort, limit, and time filtering, but it does not discuss output behavior, auth requirements, rate limits, or how defaults affect results beyond the listed defaults.
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 compact, front-loaded with the main action, and organized as a clear args list. Every line contributes useful parameter or behavioral information, with no filler or redundancy.
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?
The output schema covers the return shape, so that is not a gap. However, given six sibling tools focused on specific Reddit feeds, the description does not clarify how reddit_front relates to them or when it should be chosen, leaving meaningful selection ambiguity.
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 'Args' block is the only source of parameter meaning. It provides allowed values for sort and time_filter and defaults for all three parameters; only limit is described thinly as 'Posts to fetch' without min/max 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 states a clear action and resource: 'Get Reddit front page posts.' It is readable and the args define sort, limit, and time_filter, but it does not actively distinguish itself from siblings like reddit_hot, reddit_top, or reddit_new.
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?
There is no guidance about when to use reddit_front versus reddit_hot, reddit_top, reddit_new, or other sibling tools. The sort options imply flexibility, but no criteria, exclusions, or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_hotA
Get hot posts from a subreddit.
Args: subreddit: Subreddit name (without r/) limit: Posts to fetch (default: 10)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| subreddit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 only states that the tool gets hot posts; it does not disclose response shape, pagination behavior, rate limits, or whether any authentication is required. The parameter defaults are repeated from the schema, not added behavioral context.
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 compact and front-loaded with a single-sentence purpose, followed by a structured parameter list. Every line carries necessary information with no redundancy or filler.
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?
The description adequately covers the core action and both parameters, and an output schema exists to explain return values. However, it lacks usage guidance relative to siblings and omits behavioral details like sorting semantics or error cases, leaving gaps for a tool with multiple close alternatives.
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?
The schema has 0% description coverage, but the description's Args section adds meaningful semantics: 'Subreddit name (without r/)' clarifies the expected format, and 'Posts to fetch (default: 10)' explains the limit's meaning and default. This compensates for the sparse schema.
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 'Get hot posts from a subreddit' clearly states the verb, resource, and scope. The specific sort order 'hot' and the subreddit-scoped resource distinguish it from sibling tools like reddit_top, reddit_new, reddit_rising, and reddit_front.
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 when to use the tool (when hot posts from a subreddit are needed) but provides no explicit guidance about alternatives or conditions. It does not mention using reddit_front for front-page posts or reddit_top for top-ranked posts, leaving the agent to infer the differentiators from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_infoA
Get subreddit info (subscribers, description).
Args: subreddit: Subreddit name (without r/)
| Name | Required | Description | Default |
|---|---|---|---|
| subreddit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It makes clear this is a read operation ('Get') and discloses the returned content ('subscribers, description'). It does not address error cases, authentication, or rate limits, but for a simple metadata lookup the provided behavior is reasonably transparent.
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 compact and front-loaded: the core purpose and return fields appear first, followed by the parameter clarification. Every sentence earns its place with no redundancy.
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 single-parameter read tool with an output schema, the description covers the purpose, returned fields, and the only input's formatting. It does not explicitly differentiate from the sibling post-retrieval tools, but this is a minor gap given the low complexity and clear resource scope.
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?
The input schema has 0% description coverage, so the description must compensate. It does by explaining the parameter format: 'Subreddit name (without r/)'. This adds meaningful guidance beyond the bare schema property and fully covers the only parameter.
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 states a specific verb and resource: 'Get subreddit info', and names the exact fields returned ('subscribers, description'). This clearly distinguishes the tool from sibling feed/post-retrieval tools such as reddit_hot and reddit_post, which are about content rather than subreddit metadata.
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 the tool is for retrieving subreddit metadata rather than posts, but it does not explicitly state when to prefer it over siblings or mention any exclusions. It provides usable but implicit usage guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_newA
Get newest posts from a subreddit.
Args: subreddit: Subreddit name (without r/) limit: Posts to fetch (default: 10)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| subreddit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It states the core behavior and the default limit, but does not disclose auth requirements, rate limits, error behavior, or how 'newest' is determined. This is adequate for a simple read-only fetch but lacks richer behavioral context.
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?
One lead sentence plus a compact argument list conveys everything needed with no wasted words. The core action is front-loaded, and parameter details are structured for quick parsing.
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 two-parameter fetch tool with an output schema, the description sufficiently covers the operation and both parameters. The main gap is sibling routing and when-to-use guidance, but that is more of a selection concern than a completeness gap for invoking the tool correctly.
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 property descriptions are absent, so the description is the only semantic source for parameters. It adds the critical 'without r/' convention for subreddit and clarifies limit as 'Posts to fetch' with its default, giving the agent usable meaning beyond the raw schema.
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 opens with a specific verb-resource pair, 'Get newest posts from a subreddit,' and the qualifier 'newest' distinguishes it from sort-oriented siblings like reddit_hot, reddit_top, and reddit_rising. It doesn't explicitly name alternative tools, so it stops just short of full sibling differentiation, but the purpose is unambiguous.
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 given about when to use this tool versus reddit_hot, reddit_top, reddit_rising, reddit_front, or reddit_post. The only implicit signal is the tool name and the word 'newest.' An agent is left to infer selection criteria from sibling names rather than from explicit instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_postB
Get post content and comments.
Args: post_id: Reddit post ID comment_limit: Comments to fetch (default: 20) comment_depth: Thread depth (default: 3)
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| comment_depth | No | ||
| comment_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the basic retrieval action and restates parameter defaults already present in the schema. It does not mention how comments are structured, whether limits are total or per-thread, pagination, authentication, or error behavior.
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 compact and front-loaded with the main action. The Args block is somewhat redundant with the schema but adds useful semantic hints, so it earns its place. There is no filler or excessive detail.
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?
An output schema exists, so return structure is handled elsewhere. The description gives enough information to make a basic call with all parameters, but it lacks usage context, behavioral caveats, and clarity on parameter semantics. It is adequate for simple invocation but incomplete for nuanced decisions such as sibling selection or understanding thread traversal behavior.
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. The Args section adds one-line meanings for all three parameters, which is helpful: post_id is the Reddit post ID, comment_limit is comments to fetch, comment_depth is thread depth. However, these descriptions are shallow and ambiguous, leaving questions about post_id format and how depth/limit are counted.
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 begins with a clear verb and resource: 'Get post content and comments.' This unmistakably indicates fetching a specific post and its comments, which is distinct from sibling tools that focus on listings or topic feeds. The name reddit_post reinforces this single-post scope.
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?
Usage can be inferred: the tool is for retrieving a Reddit post and its comments. However, there is no explicit guidance about when to prefer this over siblings such as reddit_info, reddit_hot, or reddit_new, and no mention of when not to use it. The context is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_risingA
Get rising/trending posts from a subreddit.
Args: subreddit: Subreddit name (without r/) limit: Posts to fetch (default: 10)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| subreddit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Get' makes clear this is a read-only operation, and the parameter meanings are given. However, it does not explain what 'rising' means in Reddit ranking, mention possible errors like invalid subreddits, or describe pagination/rate-limit behavior. It is adequate for a safe read operation but not rich.
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 compact and front-loaded: a one-sentence summary followed by clear parameter explanations. There is no filler or redundant restatement of the tool name. Every sentence contributes useful 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?
Given the low complexity, the presence of an output schema, and clear parameter documentation, this is nearly complete for invoking the tool correctly. The main missing piece is cross-tool guidance relative to the sibling endpoints, which is already penalized under usage guidelines. For the tool's own call contract, the description is sufficient.
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, and it does explain both parameters. 'Subreddit name (without r/)' adds the important naming convention not present in the schema, and 'Posts to fetch' clarifies limit. It lacks constraints like min/max values, but the core semantics are covered.
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's function: 'Get rising/trending posts from a subreddit.' It names the resource (subreddit) and the specific post ordering (rising/trending), which separates it in meaning from reddit_hot, reddit_top, and reddit_new. It does not explicitly contrast itself with those siblings, so it stops short of a perfect 5.
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 provides no guidance on when to use reddit_rising versus the sibling tools such as reddit_hot, reddit_top, or reddit_new. There is no mention of user intent, alternatives, or conditions under which this tool is the right choice. Usage is only weakly implied by the word 'rising'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_topA
Get top posts from a subreddit by time.
Args: subreddit: Subreddit name (without r/) time_period: hour/day/week/month/year/all limit: Posts to fetch (default: 10)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| subreddit | Yes | ||
| time_period | No | week |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. 'Get' clearly signals a read-only fetch, and the args define the scoping behavior. It does not disclose pagination or rate limits, but for a simple read operation the core behavior is transparent.
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?
One purposeful sentence of intent followed by a compact Args block. Every line earns its place; no filler or repetition of schema titles.
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 three-parameter read tool with an output schema present, the description covers the operation, all parameters, value formats, and defaults. Nothing needed to invoke it correctly is missing.
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 fully documents all three parameters: it explains that subreddit excludes 'r/', enumerates the valid time_period values, and gives limit's default. This adds meaning well beyond the bare schema.
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 opens with a specific verb and resource ('Get top posts from a subreddit') and adds the sorting mode ('top') and time-filter dimension, making it easy to distinguish from sibling tools like reddit_hot or reddit_new.
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 purpose implies the tool is for fetching top-scoring posts in a time window, but it never explicitly states when to use this tool over siblings such as reddit_hot, reddit_new, or reddit_rising, nor does it mention exclusions or prerequisites beyond the subreddit argument.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_topicB
Get posts from topic-related subreddits.
Args: topic: Topic name (e.g. programming) limit: Posts to fetch (default: 50) max_subreddits: Max subreddits (default: 20)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| topic | Yes | ||
| max_subreddits | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that posts are fetched from topic-related subreddits, but does not explain how subreddits are selected, how results are ordered, whether authentication is needed, or how limits are applied. These are significant gaps for a no-annotation tool.
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 and front-loaded: a one-sentence purpose statement followed by a compact parameter list. Every element earns its place and there is no redundant filler.
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?
The output schema exists, so return values do not need elaboration, and all parameters are documented. However, the description is still incomplete for a tool without annotations because it omits behavioral details and any guidance on choosing this tool over its siblings, leaving the agent to guess when 'topic' semantics apply.
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?
The schema has 0% description coverage, so the description must compensate, and it does by listing all three parameters with brief semantics: 'topic' as a name, 'limit' as posts to fetch, and 'max_subreddits' as a maximum. This adds meaningful context beyond the raw schema, though it could clarify bounds or example values further.
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 starts with a specific verb and resource: 'Get posts from topic-related subreddits.' This clearly indicates the tool's function and differentiates it from single-subreddit or front-page tools, though it does not explicitly name sibling tools.
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 use case is implied by the tool's name and the 'topic' argument, suggesting it should be used when the user wants posts across subreddits related to a topic. However, there is no explicit guidance about when to prefer this over siblings like reddit_hot, reddit_top, or reddit_front, and no exclusions or alternative routing is provided.
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.
8 tool updates
v1.0.0- First observed
reddit_front - First observed
reddit_hot - First observed
reddit_info - First observed
reddit_new - First observed
reddit_post - First observed
reddit_rising - First observed
reddit_top - First observed
reddit_topic
TDQS
Each tool targets a clearly different Reddit resource or listing type, with hot/top/new/rising distinguished by sort order. reddit_topic and reddit_front could be slightly confused as both are broad discovery tools, but their descriptions make the distinction clear enough.
All tools follow a consistent reddit_ prefix with snake_case names. The suffixes clearly indicate the target resource or sort type, making the naming pattern predictable and easy to navigate.
Eight tools is a well-scoped set for a Reddit browsing server. Each tool covers a meaningful read-only use case without unnecessary redundancy.
The toolset covers front page, subreddit listings by multiple sort orders, topic aggregation, post details with comments, and subreddit info. Minor gaps exist around general search and user profiles, but core Reddit browsing workflows are well covered.
Maintenance
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
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)
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseAqualityDmaintenanceA 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.31413MIT
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to Reddit through 8 tools for searching, browsing, and retrieving posts, comments, and user data, compatible with any MCP client.MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables authenticated Reddit account actions like posting, commenting, voting, and messaging via the Reddit API.1232MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for interacting with Reddit via OAuth, with tiered tools for reading, writing, and moderation actions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Aanerud/Reddit-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server