内容
# Reddit MCP 服务器
<div align="center">
<img width="550" alt="Reddit MCP Server Logo" src="https://github.com/Simonc44/Reddit-MCP-Server/blob/main/assets/logo.png?raw=true">
<br><br>
<img width="550" alt="Reddit MCP Server Package" src="https://github.com/Simonc44/Reddit-MCP-Server/blob/main/assets/package.png?raw=true">
<br><br>
[](#)
[](https://www.python.org/)
[](https://modelcontextprotocol.io)
[](https://playwright.dev/python/)
[](LICENSE)
[](CONTRIBUTING.md)
</div>
---
一款 **模型上下文协议(MCP)** 服务器,允许AI助手(如Claude Desktop、Claude Code和其他MCP客户端)实时搜索、浏览和分析Reddit。
使用 **FastMCP** 和 **Playwright** 构建,该服务器无需Reddit API密钥即可运行,通过动态抓取公共Reddit界面并使用优化的无头浏览器会话。
> [!NOTE]
> **当前版本:** `v0.0.1`(最新)
>
> **无需Reddit API密钥** — 通过抓取公共Reddit网页界面来实现。
---
## 目录
1. [功能](#功能)
2. [架构概述](#架构概述)
3. [可用工具](#可用工具)
4. [安装与设置](#安装与设置)
- [先决条件](#先决条件)
- [快速入门](#快速入门)
5. [客户端配置](#客户端配置)
- [Claude Desktop](#claude-desktop)
- [Claude Code](#claude-code)
6. [工具使用与示例](#工具使用与示例)
7. [机会评分算法](#机会评分算法)
8. [高级配置](#高级配置)
9. [故障排除与限制](#故障排除与限制)
10. [贡献](#贡献)
11. [安全](#安全)
12. [许可证](#许可证)
---
## 功能
- **Reddit搜索:** 同时浏览一个或多个子版块,支持原生排序和关键词过滤。
- **评论提取:** 从任何Reddit帖子中获取完整的线程评论,保留作者、分数和深度。
- **子版块分析:** 获取子版块描述、活跃成员数量和 trending/top帖子。
- **商业机会发现:** 扫描特定子版块以寻找创业想法或痛点,并使用智能评分。
- **性能优化:** 阻止重资产(图片、字体、媒体、跟踪)以确保快速抓取。
- **强大的抓取器:** 实现弹性CSS选择器、自动滚动加载和超时处理。
---
## 架构概述
服务器通过标准I/O(stdin/stdout)使用模型上下文协议进行通信。当AI客户端调用工具时:
1. **FastMCP** 将工具调用分派到Python。
2. 初始化一个无头的 **Playwright(Chromium)** 实例,并使用自定义标头和逼真的用户代理。
3. 拦截和阻止媒体和不必要的网络资产,以最小化带宽和处理时间。
4. 加载请求的Reddit页面,根据需要动态滚动并通过强大的选择器抓取。
5. 数据被构造、分析(例如机会评分)并以JSON格式返回给客户端。
---
## 可用工具
| 工具 | 参数 | 描述 |
|------|------------|-------------|
| `search_reddit` | `subreddits`(列表),`sort`,`time_filter`,`limit`,`keywords`(列表) | 浏览特定子版块的帖子并排序。 |
| `search_reddit_query` | `query`(字符串),`sort`,`time_filter`,`subreddit`,`limit` | 在Reddit上执行全局关键词搜索。 |
| `get_post_comments` | `post_url`(字符串),`limit` | 提取线程评论并具有分层深度。 |
| `get_post_details` | `post_url`(字符串) | 获取帖子的完整详情,包括帖子正文、链接和元数据。 |
| `get_subreddit_info` | `subreddit`(字符串) | 获取子版块的成员统计信息、描述和顶级帖子。 |
| `analyze_opportunities`| `subreddits`(列表),`min_score`,`limit`,`keywords`(列表) | 确定高潜力的SaaS和创业痛点。 |
---
## 安装与设置
### 先决条件
- **Python 3.10** 或更高版本
- **pip** (Python包安装器)
- **Node.js** (可选,用于轻松运行`fastmcp` CLI)
### 快速入门
1. **克隆仓库:**
```bash
git clone https://github.com/YOUR_USERNAME/reddit-mcp-server.git
cd reddit-mcp-server
```
2. **创建并激活虚拟环境(推荐):**
```bash
python -m venv .venv
# 在macOS/Linux上:
source .venv/bin/activate
# 在Windows(命令提示符)上:
.venv\Scripts\activate.bat
# 在Windows(PowerShell)上:
.venv\Scripts\Activate.ps1
```
3. **安装依赖项:**
```bash
pip install -r requirements.txt
```
4. **安装Playwright Chromium浏览器:**
```bash
playwright install chromium
```
---
## 客户端配置
### Claude Desktop
要将此服务器与Claude Desktop集成,请将其添加到您的配置文件中:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
在 `mcpServers` 块中添加以下内容(确保使用绝对路径):
```json
{
"mcpServers": {
"reddit-mcp": {
"command": "/path/to/your/virtualenv/bin/python",
"args": ["/path/to/reddit-mcp-server/server.py"]
}
}
}
```
*注意:* 对于Windows用户,请在路径中使用双反斜杠(例如 `"C:\\path\\to\\python.exe"` )。
### Claude Code
使用Claude Code CLI全局安装和注册服务器:
```bash
claude mcp add reddit-mcp -- python /path/to/reddit-mcp-server/server.py
```
---
## 工具使用与示例
### 全局搜索
询问您的AI助手: *"搜索Reddit上过去一个月内的 'best keyboard for typing 2025'。*
在后台,AI将调用:
```json
{
"tool": "search_reddit_query",
"arguments": {
"query": "best keyboard for typing 2025",
"sort": "relevance",
"time_filter": "month"
}
}
```
### 商业机会分析
询问您的AI助手: *"分析r/SaaS和r/Entrepreneur的创业痛点。*
在后台,AI将调用:
```json
{
"tool": "analyze_opportunities",
"arguments": {
"subreddits": ["saas", "Entrepreneur"],
"min_score": 150,
"limit": 20
}
}
```
---
## 机会评分算法
`analyze_opportunities` 工具实现了一个专有的评分函数来识别有效的商业想法和高影响力的问题:
$$Score = (Upvotes \times 2) + (Comments \times 3)$$
此外,还应用了以下乘数和奖励:
* **高参与度比率:** 如果评论与点赞的比率 $> 0.3$ ,则分数乘以 **1.3** (或 $> 0.15$ 时乘以 **1.15** )。
* **货币化关键词:** 每个匹配项(如 `subscription` 、 `SaaS` 、 `buy` 、 `pricing` 、 `charge` 、 `dollar` )加 **15** 分。
* **影响力和痛点关键词:** 每个匹配项(如 `problem` 、 `frustrated` 、 `annoying` 、 `broken` 、 `wish` 、 `need` 、 `hate` )加 **20** 分。
* **双类别匹配奖励:** 如果同时检测到货币化和痛点关键词,则整体分数乘以 **1.25** 。
---
## 高级配置
### 自定义抓取器参数
可以在 `server.py` 中直接调整浏览器抓取参数:
- **视口大小:** 配置为 `1280x900` 以模拟真实桌面。
- **用户代理:** 使用现代、逼真的用户代理字符串以防止阻止。
- **媒体阻止列表:** 所有以视觉资产( `.png` 、 `.jpg` 、 `.gif` 等)结尾的路由都被中止以优化性能。
---
## 故障排除与限制
- **速率限制与IP阻止:** 大量自动化抓取可能会触发Reddit的反机器人系统,导致HTTP 429错误或临时阻止。确保您不会进行快速连续的调用。
- **动态CSS选择器:** 由于此服务器依赖于网页抓取而不是官方API,Reddit前端架构的更新(例如更改 `shreddit-post` 标签)可能会破坏选择器。如果发生这种情况,请打开一个问题。
- **速度性能:** 无头渲染Chromium并滚动加载内容需要根据您的连接速度和系统性能,在每个请求之间花费5到30秒。
- **无私有身份验证:** 此工具在公共Reddit页面上运行,不支持登录帐户或查看私有社区。
---
## 贡献
我们非常感谢贡献!无论您是想改进抓取选择器、添加新的分析工具还是完善文档,我们都欢迎您的意见。
请阅读我们的 [**贡献指南**](CONTRIBUTING.md) 以开始设置本地开发环境和创建拉取请求。
---
## 安全
我们非常重视安全。如果您在此服务器中发现任何漏洞,请参阅我们的 [**安全政策**](SECURITY.md) 以了解如何安全地报告它。
---
## 许可证
该项目根据MIT许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。