Reddit问答分析服务器

一个MCP服务器,用于搜索Reddit、提取常见问题并分析社区讨论,适用于研究、FAQ生成和社区分析。

  • by jxc0229
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jxc0229/reddit-mcp

使用说明

Reddit常见问题解答(FAQ)MCP服务器

一个MCP(模型上下文协议)服务器,使AI助手能够搜索Reddit、提取常见问题,并分析社区讨论。该工具有助于从Reddit社区收集真实用户的问题和关注点,用于研究、生成常见问题解答(FAQ)以及进行社区分析。

为什么选择这台MCP服务器?

Reddit包含了跨越数千个社区的数百万条真实用户提问和讨论。这台MCP服务器使AI助手能够:

  • 寻找相关的社群 基于主题/话题
  • 查找帖子 在子版块间匹配特定查询
  • 提取常见问题 来自自动讨论
  • 导出结果 以多种格式(JSON、CSV、Markdown)提供

这在创建常见问题解答(FAQ)、了解社区痛点、进行用户研究以及收集关于任何主题的实际问题方面特别有用。


先决条件

  • Python 3.7及以上版本
  • Reddit API 凭据 (见下文设置)
  • Claude 桌面版 (仅供本地使用)或另一个与MCP兼容的客户端

获取Reddit API凭证

  1. 首选 Reddit 应用偏好设置
  2. 向下滚动并点击 “创建另一个应用…” 或者 “你是开发者吗?开发一个应用……”
  3. 填写表格:
    • 名字选择任意名称(例如,“MCP 常见问题解答服务器”)
    • 应用类型选择 “script”
    • 描述可选
    • 关于网址可选
    • 重定向URI输入 http://localhost:8080 (必需但未使用)
  4. 点击 “create app”翻译成中文是“创建应用”
  5. 记下您的凭据:
    • 客户端ID“个人使用脚本”下的字符串(例如。, GMcc-DOscNHECnU9HAc3KQ)
    • 客户端密钥标记为“秘密”的字符串
    • 用户代理格式化为 mcp:your-app-name:v1.0 (by /u/YourRedditUsername)

环境设置

1. 克隆或导航到项目

cd /path/to/week3

2. 创建并激活虚拟环境

重要提示: 您必须激活虚拟环境,以便服务器正常运行。

# Create virtual environment
python3 -m venv venv

# Activate virtual environment
source venv/bin/activate  # On macOS/Linux
# OR
.\venv\Scripts\activate   # On Windows

3. 安装依赖项

pip install -r server/requirements.txt

4. 配置环境变量

创建一个 .env 使用您的Reddit API凭据设置文件或环境变量:

export REDDIT_CLIENT_ID="your_client_id_here"
export REDDIT_CLIENT_SECRET="your_client_secret_here"
export REDDIT_USER_AGENT="mcp:your-app-name:v1.0 (by /u/YourUsername)"

运行服务器

选项1:使用Claude代码(本地开发)

如果你正在使用Claude Code,服务器已经通过(某种方式)进行了配置 .mcp.json 在你的项目文件夹中。只需确保:

  1. 您的虚拟环境已激活
  2. 依赖项已安装
  3. 环境变量设置在 .mcp.json

选项2:使用Claude桌面版(本地)

  1. 创建/编辑配置文件 在:

    • macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加此配置 (请将路径和凭据替换为您自己的):

{
  "mcpServers": {
    "reddit-faq": {
      "command": "/bin/bash",
      "args": [
        "-c",
        "cd /path/to/week3 && source venv/bin/activate && python server/main.py"
      ],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here",
        "REDDIT_USER_AGENT": "mcp:your-app-name:v1.0 (by /u/YourUsername)"
      }
    }
  }
}
  1. 重启Claude桌面版 完全(退出并重新打开)

  2. 验证你应该能在Claude桌面版中看到可用的Reddit常见问题解答工具

选项3:独立运行(测试)

# Make sure venv is activated
source venv/bin/activate

# Set environment variables
export REDDIT_CLIENT_ID="your_client_id"
export REDDIT_CLIENT_SECRET="your_client_secret"
export REDDIT_USER_AGENT="your_user_agent"

# Run the server
python server/main.py

工具参考

1. find_subreddits

根据主题或问题搜索相关的子版块(Reddit社区)。

参数:

  • query (字符串,必填):要搜索的主题或描述
  • limit (整数,可选):返回的子版块最大数量(1-25,默认:5)

示例输入:

{
  "query": "CalTPA teacher credentialing",
  "limit": 5
}

示例输出:

{
  "subreddits": [
    {
      "name": "CalTPAhelp",
      "display_name": "r/CalTPAhelp",
      "description": "Help for California teaching credential candidates...",
      "subscribers": 54,
      "url": "https://reddit.com/r/CalTPAhelp",
      "created_utc": 1746296618.0
    }
  ],
  "total_found": 1,
  "query": "CalTPA teacher credentialing"
}

2. find_niche_subreddits

寻找那些规模较小、专注于特定领域且限制较少的子版块(subreddits)。

参数:

  • query (字符串,必填):要搜索的主题或描述
  • limit (整数,可选):要返回的最大数量(1-50,默认:10)
  • min_subscribers (整数,可选):最小订阅者数量(默认值:0)

示例输入:

{
  "query": "CalTPA",
  "limit": 10,
  "min_subscribers": 0
}

预期行为: 返回一些可能不会在常规搜索中出现的小型社区,有助于找到专门的讨论组。


3. get_relevant_posts

在指定的子版块中搜索与查询匹配的帖子。

参数:

  • subreddits (字符串数组,必填):要搜索的子版块名称列表
  • query (字符串,必填):搜索关键词或问题
  • limit (整数,可选):每个子版块的最大帖子数(1-100,默认值:10)
  • sort (字符串,可选):如何排序结果(relevance, hot, new, top,默认: relevance)
  • time_filter (字符串,可选):时间范围 (hour, day, week, month, year, all,默认: month)

示例输入:

{
  "subreddits": ["CalTPAhelp", "Teachers"],
  "query": "CalTPA version 01 new version",
  "limit": 10,
  "sort": "relevance",
  "time_filter": "year"
}

示例输出:

{
  "posts": [
    {
      "id": "1n51vwx",
      "title": "Just Launched: CalTPA MS Cycle 1 Part A Version 1",
      "author": "Sufficient_Goose274",
      "subreddit": "CalTPAhelp",
      "url": "https://reddit.com/r/CalTPAhelp/comments/1n51vwx/...",
      "created_utc": 1756664230,
      "score": 3,
      "num_comments": 0,
      "selftext": "Hi everyone, I know a lot of Multiple Subject..."
    }
  ],
  "total_found": 15,
  "query_info": { ... }
}

4. extract_faqs

分析Reddit帖子以提取常见问题。

参数:

  • posts (对象数组,必需):来自(某处)的帖子对象列表 get_relevant_posts
  • max_questions (整数,可选):要提取的最大问题数(1-100,默认:10)
  • include_comments (布尔值,可选):也分析注释(默认:false)
  • output_format (字符串,可选):导出格式 (json, csv, markdown,默认: json)
  • output_path (字符串,可选):保存输出的文件路径(如未提供,则自动生成)

示例输入:

{
  "posts": [ /* array of post objects */ ],
  "max_questions": 15,
  "include_comments": true,
  "output_format": "markdown",
  "output_path": "/path/to/faqs.md"
}

示例输出:

{
  "questions": [
    {
      "question": "What is the new CalTPA Version 01?",
      "frequency": 3,
      "example_urls": ["https://reddit.com/..."],
      "first_seen": "2025-01-15"
    }
  ],
  "total_questions_found": 15,
  "exported_to": "/path/to/faqs.md"
}

预期行为: 利用人工智能识别帖子和评论中提出的真实问题,追踪问题频率,并以您选择的格式导出结果。


常见问题

“服务器已断开连接”或“失败”状态

原因: 虚拟环境未激活或依赖项未安装。

解决方案:

  1. 确保你已经激活了虚拟环境: source venv/bin/activate
  2. 安装依赖项: pip install -r server/requirements.txt
  3. 更新配置路径以使用: cd /path/to/week3 && source venv/bin/activate && python server/main.py
  4. 重启Claude桌面版

“无效凭据”错误

原因: Reddit API凭据不正确或未设置。

解决方案:

  1. 在 https://www.reddit.com/prefs/apps 验证您的身份
  2. 在你的配置中更新环境变量
  3. 确保您的凭据中没有多余的空格

限速

原因: Reddit API 有速率限制(OAuth 每分钟 60 次请求)。

解决方案:

  • 分散你的请求
  • 使用更小的 limit 参数
  • 服务器会自动遵守Reddit的速率限制

项目结构

week3/
├── server/
│   ├── main.py              # MCP server implementation
│   ├── reddit_client.py     # Reddit API wrapper
│   ├── question_extractor.py # FAQ extraction logic
│   ├── requirements.txt     # Python dependencies
│   └── tools/               # Individual tool implementations
│       ├── find_subreddits.py
│       ├── find_niche_subreddits.py
│       ├── get_posts.py
│       └── extract_faqs.py
├── venv/                    # Virtual environment (must be activated!)
├── .mcp.json               # Claude Code MCP config
└── README.md               # This file

开发说明

  • 总是激活虚拟环境 在运行或测试服务器之前
  • 服务器使用MCP SDK来实现协议
  • Reddit API客户端使用OAuth2进行身份验证
  • 问题提取使用OpenAI的API进行自然语言理解
  • 支持导出多种格式,便于集成

支持

对于问题或疑问:

  1. 检查您的虚拟环境是否已激活
  2. 验证Reddit API凭据是否正确
  3. 检查 Claude Desktop 日志(设置 > 开发者 > 打开日志文件夹)
  4. 确保所有依赖项均已安装: pip install -r server/requirements.txt

许可证

CS146S课程教育项目——MCP服务器开发