Reddit数据访问服务

一个提供Reddit数据和帖子访问的FastMCP服务器,支持Poke集成。

  • by akarnik23
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 akarnik23/mcp-reddit

使用说明

Reddit MCP 服务器

一个FastMCP服务器,提供Reddit数据和帖子的访问权限,用于Poke集成。

🚀 功能特点

  • 获取子版块帖子获取任意子论坛的热门帖子
  • 搜索Reddit搜索整个Reddit
  • 获取用户帖子获取特定Reddit用户的帖子

Reddit API 设置

此服务器需要Reddit API凭证:

  1. 首选 Reddit 应用偏好设置
  2. 点击“创建应用”或“创建另一个应用”
  3. 选择“脚本”作为应用类型
  4. 记下你的 client_id 并且 client_secret
  5. 设置环境变量:
    export REDDIT_CLIENT_ID=your_client_id
    export REDDIT_CLIENT_SECRET=your_client_secret
    

🛠️ 本地开发

# Install dependencies
pip install -r requirements.txt

# Set Reddit API credentials
export REDDIT_CLIENT_ID=your_client_id
export REDDIT_CLIENT_SECRET=your_client_secret

# Run the server
python src/server.py

🚢 部署

部署到Render

步骤:

  1. 点击上方的“部署到Render”按钮 或者前往 render.com(通常可直接译为“Render.com”,若需更具体的语境翻译,需更多上下文信息)
  2. 将您的GitHub帐户连接到Render (如果你还没做的话)
  3. 创建一个新的Web服务:
    • 连接此存储库
    • 名字: reddit-mcp
    • 环境: Python 3
    • 计划: Free
    • 构建命令: pip install -r requirements.txt
    • 启动命令: python src/server.py
  4. 将Reddit API凭据添加到环境变量中:
    • 前往您的渲染服务仪表板
    • 点击“环境”选项卡
    • 添加这些环境变量:
      • REDDIT_CLIENT_ID = your_client_id_here
      • REDDIT_CLIENT_SECRET = your_client_secret_here
    • 点击“保存更改”
  5. 部署!

注:在Render的免费套餐中,服务在闲置约15分钟后会进入空闲状态,并且可能需要手动执行“部署”操作来唤醒或获取最新的提交。与Vercel不同,默认情况下推送不会自动部署。

您的服务器将在 https://reddit-mcp.onrender.com/mcp

获取Reddit API凭证

  1. 首选 Reddit 应用偏好设置
  2. 点击“创建应用”或“创建另一个应用”
  3. 填写表格:
    • 名字: pokeMCPMarket
    • 应用类型: script (个人使用脚本)
    • 描述: MCP server for accessing Reddit data through Poke marketplace integration
    • 关于URL: https://github.com/yourusername/mcp-reddit
    • 重定向URI: http://localhost:8080
  4. 点击“创建应用”
  5. 复制你的 client_id 并且 client_secret
  6. 将它们添加到渲染环境变量中,如上图所示

🎯 投食(Poke)集成

  1. 首选 poke.com/settings/connections 翻译为中文是:“poke.com 设置/连接”
  2. 添加MCP URL: https://reddit-mcp.onrender.com/mcp
  3. 给它起个名字,比如“Reddit”
  4. 尝试:“你能用Reddit的MCP(可能是指某种工具或API)从r/python子版块获取帖子吗?”

参考文献

🔧 可用工具

  • get_subreddit_posts(subreddit, limit=10, sort="hot")从一个子版块获取帖子
  • search_reddit(query, limit=10, sort="relevance")搜索整个Reddit
  • get_user_posts(username, limit=10, sort="new")获取用户的帖子

📝 示例用法

# Get hot posts from r/programming
get_subreddit_posts(subreddit="programming", limit=5, sort="hot")

# Search for Python posts
search_reddit(query="python programming", limit=10, sort="relevance")

# Get posts from a specific user
get_user_posts(username="spez", limit=5, sort="new")

📊 帖子数据结构

每个返回的帖子都包括:

  • title帖子标题
  • author作者的用户名
  • score净点赞数(点赞数 - 点踩数)
  • upvote_ratio点赞数与总投票数的比例
  • num_comments评论数
  • url外部网址(如果不是自帖)
  • permalinkReddit 永久链接
  • created_utc创建时间戳(Unix)
  • selftext帖子文本内容(针对自创帖子)
  • subreddit子版块名称
  • is_self无论是自发布帖
  • over_18是否涉及不适宜工作场所的内容(NSFW)

⚠️ 请求速率限制

Reddit API有速率限制:

  • 未经认证每分钟60个请求
  • 带有身份验证每分钟100个请求

如果超出速率限制,服务器将返回错误。

🔍 排序选项

子版块帖子

  • hot热门帖子(默认)
  • new最新帖子
  • top有史以来最热门的帖子
  • rising职位晋升

搜索

  • relevance最相关(默认)
  • hot热门帖子
  • top热门帖子
  • new最新帖子
  • comments评论最多

用户发帖

  • new最新帖子(默认)
  • hot热门帖子
  • top热门帖子
  • controversial最具争议的帖子