mcp-reddit
让大模型实时读取Reddit子版块热帖和评论树的MCP服务器工具,通过Smithery或uvx一行命
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大模型实时读取Reddit子版块热帖和评论树的MCP服务器工具,通过Smithery或uvx一行命
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
mcp-reddit 在 Smithery 平台的安装徽章
想象一下,你正在开发一个AI助手,用户问:「最近 r/MachineLearning 上大家在讨论什么?」没有 mcp-reddit 之前,你需要自己写爬虫、处理Reddit API的OAuth、应对各种速率限制——光是配置环境就能劝退一半开发者。而现在,只需在大模型对话中 @一下这个 MCP 服务器,它就能实时拉取指定子版块的热帖,把Reddit变成AI的「社交雷达」。
Reddit是全球最大的社区论坛之一,月活用户超过4亿,覆盖几乎所有专业领域。从AI研究、游戏攻略到硬件评测,无数高质量讨论每天都在子版块(subreddit)里涌现。对AI应用开发者而言,Reddit是取之不尽的:
MCP(Model Context Protocol)是Anthropic在2024年底推出的开放协议,旨在解决「AI模型如何调用外部工具」的行业痛点。相比传统的Function Calling,MCP有两大优势:
mcp-reddit 的作者 adhikasp 敏锐地抓住了这个趋势,做了一个「最小化但足够好用」的Reddit MCP实现,代码行数控制在500行以内,却覆盖了最核心的三个场景。
mcp-reddit 提供了两个主要工具,都是异步函数,底层基于 redditwarp 异步客户端:
1. fetch_reddit_hot_threads(subreddit, limit=10) —— 子版块热帖抓取
这个工具用于快速了解某个社区的当前热点。底层通过 client.p.subreddit.pull.hot() 异步迭代器实时拉取数据,返回格式是结构化的文本:
Title: Dev Diary #126 - Update 1.8 Overview
Score: 2450
Comments: 312
Author: ParadoxOfficial
Type: link
Content: 链接到论坛帖子
Link: https://reddit.com/r/victoria3/comments/xxx
典型使用场景:给AI助手赋予「实时行业情报」能力,让它能回答「r/gaming 上最近最火的游戏是什么」这类问题。limit参数可调节,默认10条,热门大版块建议不超过50条以控制输出长度。
2. fetch_reddit_post_content(post_id, comment_limit=20, comment_depth=3) —— 帖子详情+评论树抓取
这个工具用于深度分析某个具体帖子。关键特性是支持嵌套评论树递归遍历,depth参数控制向下探索的层数,默认为3层——对于多数讨论帖已经足够。更重要的是,mcp-reddit 对三种Reddit帖子类型做了差异化处理:
LinkPost:外链帖子,Content字段直接展示URLTextPost:纯文本帖,Content字段展示正文GalleryPost:多图帖,Content字段展示图片URL列表评论树格式化采用 -- 前缀缩进,层级关系一目了然:
-- * Author: top_commenter
Score: 89
非常同意楼主的观点...
-- * Author: reply_user
Score: 12
但我觉得还有一点...
3. search_reddit_subreddits(query, limit=5) —— 子版块搜索
这个工具用于发现相关社区。当你只知道一个模糊话题(如「AI编程」),但不确定该搜哪个子版块时,直接问:「帮我找讨论AI编程的subreddit」,返回5个最相关的社区及其订阅数和描述。
mcp-reddit 的技术选型非常务实:
| 组件 | 选型 | 理由 |
|---|---|---|
| MCP框架 | fastmcp>=0.1.0 | 异步优先,装饰器风格,代码最简洁 |
| Reddit API | redditwarp>=1.3.0 | 异步客户端,支持REST和WebSocket,bug少 |
| 备用API | praw>=7.8.1 | 经典同步库,redditwarp不可用时兜底 |
| 运行时 | uvx (uv) | 极速Python包安装器,冷启动<2秒 |
认证方面,mcp-reddit 复用 Reddit OAuth2 的经典三要素(Client ID、Client Secret、Refresh Token),通过环境变量注入。代码中做了防御性处理:CREDS = [x for x in [...] if x]——只要三个变量有一个为空就不会初始化客户端,避免运行时异常。
代码结构极度扁平:整个项目只有 src/mcp_reddit/reddit_fetcher.py 一个源文件(约260行),所有工具函数平铺其中。logging级别设为WARNING,减少输出噪音,让返回数据更纯净。这种「单文件哲学」对于MCP服务器这种「胶水工具」来说是正确的抽象层级——开发者只需要理解工具签名,不需要翻阅多个文件。
mcp-reddit 的部署友好度在同类MCP服务器中属于上乘:
方式一:Smithery一键安装(推荐新手)
Smithery 是专门托管MCP服务器的 marketplace,支持「复制 badge → 粘贴到 Claude Desktop 配置」的操作流程。mcp-reddit 提供了现成的安装徽章和配置说明,零命令行经验也能完成接入。
方式二:uvx 一行命令(推荐开发者)
{
"reddit": {
"command": "uvx",
"args": ["--from", "git+https://github.com/adhikasp/mcp-reddit.git", "mcp-reddit"],
"env": {}
}
}
一行命令拉取源码、安装依赖、启动服务,uvx 保证了依赖解析的确定性。配合 Claude Desktop 的 mcp.json 配置,真正做到了「复制即用」。
方式三:Docker容器化(推荐运维)
作者提供了多阶段构建Dockerfile:
ghcr.io/astral-sh/uv:python3.13-bookworm-slim,用 uv 管理依赖python:3.13-slim-bookworm,最终镜像仅包含运行时必要文件mcp-reddit 命令,开箱即用镜像构建充分利用了Docker层缓存:先复制 pyproject.toml 和 uv.lock,再 uv sync 安装依赖,最后才复制源码。这样即使源码变更,依赖层也能复用缓存。
mcp-reddit 不是完美的,以下几点在实际使用时需要注意:
认证配置门槛:需要自行在 Reddit App 管理页面创建应用、获取 OAuth 凭证。这一步没有自动化,对完全不懂 Reddit API 的用户有一定障碍。建议作者增加 README 中的认证引导截图。
评论深度限制:comment_depth 默认为3,实际测试中发现某些长帖(如AMA)评论嵌套可达10层以上,深层信息可能被截断。对于这类场景,建议用户适当调高 depth 参数。
无结果缓存:每次工具调用都是实时请求 Reddit API,若用户多次查询同一帖子,会产生重复网络开销。在高频调用场景下,可考虑在 MCP 客户端层增加请求去重。
仅支持文本内容:GalleryPost 类型的图片帖,目前 Content 字段只展示图片 URL 列表,没有缩略图预览。对于视觉内容为主的版块(如 r/photography、r/art),体验相对原始。
mcp-reddit 是 MCP 协议生态快速生长的一个缩影。从 2024 年底协议发布,到 2025 年中已有数百个 MCP 服务器涌现,覆盖 Reddit、GitHub、Slack、数据库、文件系统等几乎所有主流数据源。
这个项目本身并不复杂,但它解决了一个真实问题:「如何让大模型实时访问社区讨论」。在 AI 应用逐渐从「聊天机器人」进化为「AI Agent」的背景下,这种工具化的数据接入能力会越来越重要。
截至分析时,mcp-reddit 已在 GitHub 获得 408 颗星,被收录于 Smithery(最大 MCP marketplace)和 Glama( MCP 服务器目录),是同类 Reddit MCP 方案中星数最高的之一。持续维护中,issues 响应积极。