Reddit访问工具

一个基于MCP协议的服务器,为Claude提供完整的Reddit访问功能,包括浏览、搜索、发布和评论等。

  • by wrxck
  • Java
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 wrxck/reddit-mcp

使用说明

Reddit MCP服务器

一 MCP(模型上下文协议) 让克劳德访问Reddit的服务器。浏览子版块、阅读帖子和评论、搜索内容、提交帖子、评论、投票和保存——所有这些都可以在Claude Code或任何兼容MCP的客户端中完成。

特性

12工具 涵盖完整的Reddit体验:

工具 说明
get_subreddit_posts 使用排序/时间过滤器和分页从subreddit获取帖子
get_subreddit_info 获取subreddit元数据——订阅者、描述、规则
search_posts 在Reddit或特定子版块内搜索帖子
search_subreddits 按名称或主题搜索子版块
read_post 以可配置的深度阅读帖子及其评论树
get_user_profile 获取用户的个人资料——业力、账户年龄、个人简介
get_user_posts 获取用户提交的帖子
get_user_comments 获取用户发布的评论
submit_post 向subreddit提交文本或链接帖子
submit_comment 回复帖子或评论
vote 投票赞成、投票反对或取消投票
save_post 保存或取消保存帖子或评论

先决条件

  • Java 21 或以后
  • Maven 3.8+ (从源代码构建)
  • A. Reddit账号

设置

1.创建一个Reddit应用程序

  1. 首选 reddit.com/prefs/apps
  2. 点击 “创建另一个应用程序…”
  3. 填写:
    • 姓名: MCP (或任何你喜欢的东西)
    • 类型: 选择 已安装的应用程序
    • 重定向uri: http://localhost:PORT/callback (安装向导将告诉您确切的端口)
  4. 点击 创建应用程序
  5. 复制 客户端ID 显示在应用程序名称下

2.建造

git clone https://github.com/wrxck/reddit-mcp.git
cd reddit-mcp
mvn clean package -DskipTests

这产生 target/reddit-mcp-1.0.0.jar --一个自包含的可执行JAR。

3.运行安装程序

java -jar target/reddit-mcp-1.0.0.jar --init

这将:

  • 提示输入您的Reddit客户端ID
  • 将配置保存到 ~/.reddit-mcp/config.properties
  • 打开浏览器获取Reddit OAuth授权
  • 将令牌保存到 ~/.reddit-mcp/tokens.json
  • 使用Claude Code自动注册服务器

4.重新启动克劳德代码

这 reddit MCP服务器将在您的下一个Claude Code会话中可用。

用法

一旦设置好,Claude就可以自然地使用Reddit工具:

> What's trending on r/programming right now?
> Search Reddit for discussions about MCP servers
> Read the comments on that top post
> What has u/spez posted recently?

写入操作在执行前需要确认:

> Upvote that post
> Reply to that comment with "Great explanation, thanks!"
> Submit a post to r/test titled "Hello from MCP"

手动注册

如果自动注册不起作用,请手动注册:

claude mcp add --scope user --transport stdio reddit -- \
  java -jar /path/to/reddit-mcp-1.0.0.jar

重新验证

如果您的Reddit令牌过期或您需要切换帐户:

java -jar target/reddit-mcp-1.0.0.jar --auth

安全

  • 内容净化 --所有Reddit内容(标题、帖子正文、评论、用户名)都被包裹在唯一的边界标记中,并附有将其视为不可信数据的说明。这可以防止通过Reddit内容迅速注入。
  • 令牌存储 --OAuth令牌和配置文件存储在 600 POSIX权限(仅限所有者读/写)。
  • 输入验证 -在任何API调用之前,都会根据严格的regex模式验证子域名、用户名和事物ID。
  • CSRF保护 --OAuth流使用加密状态参数来防止跨站点请求伪造。

速率限制

服务器强制执行两层速率限制:

  1. 本地 --最多55个请求/分钟(低于Reddit的60/分钟限制),通过滑动窗口跟踪。
  2. 服务器 --尊重 X-Ratelimit-Remaining 和 X-Ratelimit-Reset Reddit的标题。接近服务器端限制时自动等待。

从源头构建

mvn clean verify

这将编译、运行所有126个测试,并生成着色的JAR。

项目结构

src/main/java/com/reddit/mcp/
├── RedditMcpServer.java     # Entry point, CLI args, server wiring
├── RedditClient.java        # HTTP client, token management, API methods
├── RedditAuth.java          # OAuth2 flow, config/token persistence
├── RedditTools.java         # 8 read-only MCP tool definitions
├── RedditWriteTools.java    # 4 write MCP tool definitions
├── ResponseParser.java      # Reddit JSON → structured maps
├── ContentSanitizer.java    # Prompt injection defence
├── Validation.java          # Input validation (regex patterns)
├── RateLimiter.java         # Dual-layer rate limiting
├── ResultHelper.java        # MCP result formatting utilities
└── ClaudeRegistration.java  # Auto-registration with Claude Code

许可证

麻省理工学院