Reddit协议服务器

一个功能全面的Reddit协议服务器,支持浏览、搜索、发帖、评论、投票、消息和关键词监控等功能。

  • by RaiAnsar
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 RaiAnsar/reddit-mcp

使用说明

mcp reddit

功能齐全 模型上下文协议(MCP) Reddit的服务器。浏览、搜索、发布、评论、投票、消息和监控关键字——所有这些都可以通过你的人工智能助手完成。

特性

28工具 7个类别:

类别 工具
浏览和搜索 fetch_reddit_hot_threads, fetch_subreddit_posts, fetch_subreddit_info, fetch_reddit_post_content, search_reddit, fetch_front_page
用户和个人资料 fetch_user_profile, fetch_user_posts, fetch_user_comments, fetch_my_profile
发布 create_text_post, create_link_post, edit_post, delete_post, fetch_post_flair_choices
评论 reply_to_post, reply_to_comment, edit_comment, delete_comment
投票 vote (赞成票、反对票、对帖子和评论不投票)
保存 save_item, unsave_item
消息 send_message, fetch_inbox, fetch_unread_messages
监视器 monitor_keywords (多关键字、多个子版块、重复数据删除、评分)

先决条件

  1. Python 3.11+
  2. 紫外线 (推荐)或pip
  3. Reddit API证书 --在以下位置创建应用程序 reddit.com/prefs/apps

设置

1.获取Reddit API凭据

  1. 首选 reddit.com/prefs/apps
  2. 点击 “创建另一个应用程序…”
  3. 填写:
    • 名字:任何东西(例如。 mcp-reddit)
    • 类型:选择 网络应用
    • 重定向URI: http://localhost:8080
  4. 注意你的 客户端ID (在应用程序名称下)和 客户端密钥

2.获取刷新令牌

# Clone the repo
git clone https://github.com/raiansar/mcp-reddit.git
cd mcp-reddit

# Copy the example env and fill in your client ID and secret
cp .env.example .env
# Edit .env with your REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET

# Run the token generator
python get_token.py

这将打开您的浏览器进行Reddit OAuth授权。批准后,将重定向URL粘贴回终端。该脚本将您的刷新令牌保存到 .env.

3.设置环境变量

您需要三个环境变量:

REDDIT_CLIENT_ID=your_client_id
REDDIT_CLIENT_SECRET=your_client_secret
REDDIT_REFRESH_TOKEN=your_refresh_token

你可以把它们放在 .env 在项目根目录中创建文件,或直接在MCP配置中传递它们(如下所示)。

安装

克劳德代码(CLI)

claude mcp add reddit -- uv run --directory /path/to/mcp-reddit mcp-reddit

或者将环境变量内联:

claude mcp add reddit \
  -e REDDIT_CLIENT_ID=your_client_id \
  -e REDDIT_CLIENT_SECRET=your_client_secret \
  -e REDDIT_REFRESH_TOKEN=your_refresh_token \
  -- uv run --directory /path/to/mcp-reddit mcp-reddit

克劳德桌面版

添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "reddit": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-reddit", "mcp-reddit"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id",
        "REDDIT_CLIENT_SECRET": "your_client_secret",
        "REDDIT_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

Claude Cowork(settings.json)

添加到您的项目 .claude/settings.json 或 ~/.claude/settings.json:

{
  "mcpServers": {
    "reddit": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-reddit", "mcp-reddit"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id",
        "REDDIT_CLIENT_SECRET": "your_client_secret",
        "REDDIT_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

从PyPI安装(即将推出)

# Once published:
uvx mcp-reddit

码头工人

docker build -t mcp-reddit .
docker run -e REDDIT_CLIENT_ID=... -e REDDIT_CLIENT_SECRET=... -e REDDIT_REFRESH_TOKEN=... mcp-reddit

工具参考

浏览和搜索

工具 说明
fetch_reddit_hot_threads(subreddit, limit) 从subreddit获取热门帖子
fetch_subreddit_posts(subreddit, sort, time_filter, limit) 获取具有排序控制的帖子(热门/新/热门/上升/有争议)
fetch_subreddit_info(subreddit) 获取subreddit元数据(描述、规则、订阅者)
fetch_reddit_post_content(post_id, comment_limit, comment_depth) 使用嵌套的评论树获取完整的帖子内容
search_reddit(query, subreddit, sort, time_filter, limit) 在Reddit上或子版块内搜索
fetch_front_page(sort, time_filter, limit) 获取头版帖子(经过身份验证后个性化)

用户和个人资料

工具 说明
fetch_user_profile(username) 获取用户的公开资料(因果报应,蛋糕日)
fetch_user_posts(username, sort, limit) 获取用户提交的帖子
fetch_user_comments(username, sort, limit) 获取用户的评论
fetch_my_profile() 获取您自己的个人资料信息

文章(写作)

工具 说明
create_text_post(subreddit, title, body, ...) 提交文本/自帖
create_link_post(subreddit, title, url, ...) 提交链接帖子
edit_post(post_id, new_body) 编辑您自己的文本帖子
delete_post(post_id) 删除您自己的帖子
fetch_post_flair_choices(subreddit) 列出subreddit的可用天赋选项

评论(写)

工具 说明
reply_to_post(post_id, body) 添加顶级评论
reply_to_comment(comment_id, body) 对现有评论的回复
edit_comment(comment_id, new_body) 编辑您自己的评论
delete_comment(comment_id) 删除您自己的评论

投票并保存

工具 说明
vote(target_id, direction, target_type) 赞成票(1)、反对票(-1)或未投票(0)
save_item(target_id, target_type) 保存帖子或评论
unsave_item(target_id, target_type) 取消保存帖子或评论

消息传递

工具 说明
send_message(to, subject, body) 发送私人消息
fetch_inbox(limit) 阅读收件箱消息
fetch_unread_messages(limit) 仅读取未读邮件

关键字监控

工具 说明
monitor_keywords(keywords, subreddits, since_minutes, limit_per_search, only_new) 通过评分、重复数据删除和查看帖子跟踪来监控多个子版块中的多个关键字

例子

> What's hot on r/programming?
→ Uses fetch_reddit_hot_threads("programming")

> Search for "rust async" discussions from the past week
→ Uses search_reddit("rust async", sort="relevance", time_filter="week")

> Post a question to r/learnpython
→ Uses create_text_post("learnpython", "How do I...", "I'm trying to...")

> Monitor mentions of "claude" and "mcp" in r/LocalLLaMA and r/artificial
→ Uses monitor_keywords(["claude", "mcp"], ["LocalLLaMA", "artificial"])

许可证

麻省理工学院