Skip to main content
Glama
Reddit Q&A to Notion MCP Server

Reddit Q&A to Notion MCP Server

by Leon-Sander

Reddit Q&A to Notion MCP Server

A simple MCP server that searches Reddit for answers to questions and saves Q&A sessions to Notion.

Features

  • 🔍 Search across all Reddit or specific subreddits

  • 📊 Get top posts with comments for context

  • 🤖 Perfect for LLM-powered Q&A workflows

  • 💾 Save complete Q&A sessions to Notion

  • 🔐 Secure HTTP transport with authentication

  • 📱 Built with PRAW for reliable Reddit access

Related MCP server: AI-Notion Integration MCP Server

Quick Start

1. Environment Setup

Create a .env file:

# MCP Authentication
MCP_API_KEY=your-secret-api-key-here

# Reddit API (get from https://www.reddit.com/prefs/apps)
CLIENT_ID=your-reddit-client-id
CLIENT_SECRET=your-reddit-client-secret
USER_AGENT=your-app-name/1.0

# Notion Integration
NOTION_API_TOKEN=your-notion-integration-token
NOTION_QA_DATABASE_ID=your-notion-database-id

# Optional: Proxy for cloud deployments (required for Render, AWS, etc.)
HTTP_PROXY=http://username:password@proxy-server:port
HTTPS_PROXY=http://username:password@proxy-server:port

⚠️ Cloud Platform Note: Reddit blocks most cloud provider IPs (AWS, Google Cloud, Render, etc.). You need a proxy service for reliable operation.

2. Reddit API Setup

  1. Go to: https://www.reddit.com/prefs/apps

  2. Create a new app (script type)

  3. Copy Client ID and Secret to your .env

  4. Set User Agent to something descriptive like MyBot/1.0

🆓 Free Proxy Setup (Webshare)

For cloud deployments (Render, Railway, AWS, etc.):

  1. Sign up at Webshare: https://www.webshare.io/

  2. Get 10 free proxies (no credit card required)

  3. Find your proxy details in their dashboard

  4. Your webshare proxyurl: http://username:password@proxy-endpoint:port

  5. Add to your .env: HTTP_PROXY=your-webshare-proxy-url and HTTPS_PROXY=your-webshare-proxy-url

3. Notion Database Setup

Create a Notion database with these properties:

  • Question (Title)

  • Answer (Text)

  • Search Query (Text)

  • Reddit Sources (Text)

  • Created (Date)

4. Run the Server

Option A: With Docker (Recommended)

# Build the image
docker build -t reddit-qa-notion-mcp .

# Run the server
docker run -p 8000:8000 -v $(pwd)/.env:/app/.env reddit-qa-notion-mcp

The server will be available at http://localhost:8000

Option B: Local Development

# Install dependencies
uv sync

# Run with HTTP transport (recommended)
uv run reddit_qa_to_notion_mcp.py --transport http --port 8000

# Or run with stdio transport
uv run reddit_qa_to_notion_mcp.py --transport stdio

5. Configure MCP Client

Add to your MCP client configuration (e.g., .cursor/mcp.json):

{
  "mcpServers": {
    "reddit-qa-to-notion-server": {
      "type": "streamable-http", 
      "url": "http://localhost:8000/mcp",
      "headers": {
        "Authorization": "Bearer your-secret-api-key-here"
      }
    }
  }
}

Available Tools

  • search_reddit(query, limit, sort) - Search across all Reddit subreddits

  • search_posts(subreddits, query, limit, sort) - Search specific subreddits

  • get_top_subreddit_posts(subreddits, limit, time_filter) - Get top posts from subreddits

  • save_reddit_qa_to_notion(question, answer, search_query, reddit_sources) - Save Q&A session to Notion

Example Workflow

  1. Ask a question: "How do I optimize Python performance?"

  2. Search Reddit: Use search_reddit() to find relevant discussions

  3. Generate answer: Use Reddit context to inform your LLM response

  4. Save to Notion: Use save_reddit_qa_to_notion() to create a knowledge base entry

Development

# Install dependencies
uv sync

# Run locally
uv run reddit_qa_to_notion_mcp.py --transport http

The server will be available at http://localhost:8000

Available Tools

4 tools
get_top_subreddit_postsB
Get top posts from specified subreddits.

Args:
    subreddits (str): Subreddit name(s) separated by '+' (e.g., "redditdev+learnpython")
    limit (int): Number of posts to retrieve (default: 10)
    comment_limit (int): Number of comments to retrieve for each post (default: 5)
    time_filter (str): One of: "all", "day", "hour", "month", "week", "year" (default: "week")

Returns:
    List[Dict[str, Any]]: List of dictionaries containing post information

Inputs: subreddits (required), limit, time_filter, comment_limit. Returns: result

save_reddit_qa_to_notionB
Save a Q&A session with Reddit context to Notion database.

Args:
    question (str): The original question asked
    answer (str): The LLM-generated answer
    search_query (str): The Reddit search query used
    reddit_sources (List[Dict[str, str]]): List of Reddit posts with 'title' and 'url' keys

Returns:
    dict: Success/error response

Inputs: answer (required), question (required), search_query (required), reddit_sources (required).

search_postsB
Search for posts in specified subreddits.

Args:
    subreddits (str): Subreddit name(s) separated by '+' (e.g., "redditdev+learnpython")
    query (str): Search query
    limit (int): Number of posts to retrieve (default: 5)
    comment_limit (int): Number of comments to retrieve for each post (default: 5)
    sort (str): One of: "relevance", "hot", "top", "new", "comments" (default: "relevance")

Returns:
    List[Dict[str, Any]]: List of dictionaries containing post information

Inputs: query (required), subreddits (required), sort, limit, +1 more. Returns: result

search_redditB
Search for posts across all subreddits (site-wide search).

Args:
    query (str): Search query
    limit (int): Number of posts to retrieve (default: 5)
    comment_limit (int): Number of comments to retrieve for each post (default: 5)
    sort (str): One of: "relevance", "hot", "top", "new", "comments" (default: "relevance")

Returns:
    List[Dict[str, Any]]: List of dictionaries containing post information

Inputs: query (required), sort, limit, comment_limit. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 4 tools

    Disambiguation4/5

    The three retrieval tools are mostly distinct: get_top_subreddit_posts fetches top posts, search_posts searches within specified subreddits, and search_reddit searches site-wide. However, search_posts and search_reddit are very similar in name and function, differing only by scope, which could cause occasional misselection.

    Naming Consistency4/5

    All names use snake_case with a verb-first pattern, which is largely consistent. The minor inconsistency is that search_posts uses 'posts' while search_reddit uses the platform name, but the overall convention is predictable.

    Tool Count5/5

    With four tools, the server is well-scoped for its purpose: three Reddit retrieval tools and one Notion save tool. Each tool has a clear role, and the count is neither too thin nor excessive.

    Completeness3/5

    The core workflow of fetching Reddit content and saving a Q&A to Notion is covered, but there are notable gaps: no tool to fetch a specific post by ID, no way to list or manage Notion databases, and no update/delete operations. These omissions could limit more advanced use cases.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers