reddit-mcp
让 AI 大模型通过 MCP 协议直接读写 Reddit 数据的工具,轻松实现社交媒体舆情分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI 大模型通过 MCP 协议直接读写 Reddit 数据的工具,轻松实现社交媒体舆情分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过:为什么 Reddit 上某个帖子的评论区,总比正面讨论更精彩?某个匿名网友 u/spez 的历史发言记录,能透露出 Reddit 官方怎样的运营策略?在一个拥有 20 亿月活用户的社交平台上,AI 能否帮我们高效挖掘这些隐藏的"舆论金矿"?
reddit-mcp 正是为此而生——它是一座让大语言模型直接"接入" Reddit 的桥,把全球最大匿名社区的实时数据,变成 AI 分析、决策、创作的超强原材料。
Model Context Protocol(MCP) 是 Anthropic 在 2024 年底主导提出的一套开放协议,旨在为 AI 助手建立标准化的外部工具调用接口。打个比方:如果把大语言模型比作一个"超级大脑",MCP 就是给这个大脑装上的 USB-C 接口——无论插入键盘、显示器还是硬盘,只要兼容协议就能即插即用。
在 MCP 生态中,Reddit 是一个天然的数据富矿。与 Twitter/X 的严格 API 限制不同,Reddit 拥有相对开放的内容访问接口,加上其独特的子版块(Subreddit)结构和 upvotes/downvotes 投票机制,数据价值极高。然而,在 reddit-mcp 出现之前,市面上并没有一个成熟的标准工具能让 AI 直接调用 Reddit 数据。
作者 Arindam Majumder(GitHub: Arindam200)敏锐地捕捉到这个需求,在 2025 年初开源了 reddit-mcp,并在 GitHub 上迅速积累了 292 颗 stars、42 个 forks,被标记为 AI 相关项目。项目采用 MIT 许可证,技术栈极简——仅依赖 mcp[cli] 和 praw 两个核心库,代码量可控,维护门槛低。
reddit-mcp 为 AI 助手提供了 13 个可直接调用的工具函数,分为"只读工具"和"认证后工具"两大类。
只读工具(9个),只需 Reddit API 的 client_id 和 client_secret 即可使用:
get_user_info(username) - 获取用户详细信息,包括发帖频率、Karma 值、社区影响力等get_user_comments(username, sort, time_filter, limit) - 按时间/排序方式抓取用户的评论历史get_user_posts(username, sort, time_filter, limit) - 抓取用户在各 Subreddit 的发帖记录get_top_posts(subreddit, time_filter, limit) - 获取某 Subreddit 的热门帖子排行search_posts(query, subreddit, sort, time_filter, limit) - 跨 Subreddit 或定向搜索帖子get_subreddit_stats(subreddit) - 获取 Subreddit 的健康度指标(成员数、在线人数、活动强度)get_trending_subreddits() - 实时追踪正在快速增长的 Subredditget_submission_by_url(url) - 通过 URL 直接拉取指定帖子get_submission_by_id(submission_id) - 通过 Reddit ID 获取帖子数据认证后工具(4个),需要额外提供 username 和 password:
who_am_i() - 返回当前认证账号的基本信息create_post(subreddit, title, content, flair, is_self) - 在指定 Subreddit 发帖reply_to_post(post_id, content, subreddit) - 回复指定帖子reply_to_comment(comment_id, content, subreddit) - 回复指定评论典型使用场景包括:
项目代码高度集中——核心逻辑全部在 server.py 一个文件中(约 98KB),体现了 MCP Server 的设计哲学:协议层交给 FastMCP 框架,开发者专注业务逻辑。
核心代码结构如下:
from mcp.server.fastmcp import FastMCP
import praw # Python Reddit API Wrapper
class RedditClientManager:
_instance = None
_client = None
_is_read_only = True
def _initialize_client(self) -> None:
client_id = getenv("REDDIT_CLIENT_ID")
client_secret = getenv("REDDIT_CLIENT_SECRET")
# 自动判断是否配置了写权限(username/password)
# 根据凭证完整度决定 _is_read_only 标志
架构亮点:
FastMCP 框架:项目直接继承 FastMCP 服务器类,工具注册仅需 @mcp.tool() 装饰器,协议握手、JSON-RPC 通信等全部由框架处理。
PRAW 封装:通过 Python Reddit API Wrapper(PRAW)访问 Reddit,数据模型清晰。PRAW 本身是 Reddit 官方推荐的 Python SDK,稳定性和兼容性有保障。
单例模式:RedditClientManager 采用单例模式复用 Reddit API 连接,避免重复认证开销,符合 MCP Server 长驻内存的使用特点。
代码质量:项目使用 ruff 进行 linting,目标 Python 版本 3.10+,导入规范,类型注解完整,lint 规则选择 E4/E7/E9/F/W/I 等核心规则。
依赖关系极简:
mcp[cli]>=1.6.0 — MCP 协议实现praw — Reddit API 客户端仅两个生产依赖,降低了版本冲突和维护成本。
reddit-mcp 的部署难度被评为"简单",大多数用户 10 分钟内可完成配置。
部署前提:
部署步骤(以 Claude Desktop 为例):
无 Web UI、无 Docker:reddit-mcp 是纯 CLI 工具,不提供图形界面或容器化部署。这既是优势(轻量、无额外资源占用),也是局限(需要用户具备一定的命令行操作能力)。
硬件需求:几乎可以忽略——无需 GPU,512MB RAM、100MB 磁盘即可运行。
1. Reddit API 的 Rate Limiting
PRAW 虽然封装了 Reddit API,但 Reddit 对未认证请求有严格限制。高频调用可能触发 429 错误(Too Many Requests),在需要批量抓取数据时尤为明显。
2. 安全性考量
认证工具需要明文配置 REDDIT_PASSWORD,这在本地配置文件中存在一定安全风险,建议配合密码管理器使用 Reddit 专属小号。
3. 无数据缓存机制
每次工具调用都直接请求 Reddit API,无本地缓存。对于高频重复查询,效率偏低。
4. 非官方 Reddit 数据解读
项目对 Subreddit "健康度"、"用户影响力" 等指标的分析算法是作者自研,非 Reddit 官方标准,结论仅供参考。
reddit-mcp 的出现,反映了 2025 年 AI 应用的一个核心趋势:让大模型"读懂"真实世界的社交媒体数据。
在 MCP 生态中,类似 reddit-mcp 的工具已形成矩阵:GitHub MCP、File System MCP、Slack MCP……它们共同构成 AI 助手感知外部世界的"感觉器官"。Reddit 作为全球最大的匿名社区之一,其数据价值远超普通社交平台——从舆论监测、竞品分析到用户研究,reddit-mcp 提供了一个低成本、高效率的切入路径。
从增长曲线看,该项目自发布以来保持稳定更新,技术栈精简,代码可维护性强。在 Glama AI 的 MCP Servers 列表中,reddit-mcp 属于"社交媒体"分类下的推荐工具。
总结:reddit-mcp 是一个定位清晰、实现务实的小工具。它不追求大而全,而是专注于"让 AI 接入 Reddit"这一件事,并做到足够好用。对于 AI 爱好者而言,它是探索社交媒体数据的好玩具;对于开发者而言,它是一个学习 MCP 协议开发的优秀参考案例;对于产品经理和研究员而言,它是挖掘 Reddit 舆论价值的效率工具。
图1:reddit-mcp 实际运行效果(Claude Desktop 中调用 Reddit 工具)
项目速览