返回市场
reddit-mcp服务器

reddit-mcp服务器

作者:GeLi20012 星标更新:2025-09-02

项目介绍

Reddit MCP 工具

这是一个模型上下文协议(MCP)服务器,提供只读工具,通过Reddit官方API浏览和搜索Reddit内容。使用FastMCP构建,实现无缝集成和自动序列化。此服务器允许您通过兼容MCP的客户端搜索帖子、阅读帖子详情以及获取子版块信息。

功能

  • 🔍 搜索帖子:在特定子版块中搜索帖子,具有多种排序和过滤选项
  • 🌐 全站搜索:通过关键词查询在整个Reddit上进行搜索
  • 📊 获取子版块信息:检索子版块的详细信息
  • 🔥 获取热门帖子:从子版块中获取热门帖子
  • 📋 获取帖子详情:获取特定帖子的全面详情
  • FastMCP 集成:使用FastMCP构建,实现自动序列化和无缝MCP兼容性

先决条件

  1. 在您的系统上安装了Python 3.10+
  2. 安装了uv包管理器(安装指南
  3. Reddit API 凭据(参见下面的设置部分)

Reddit API 设置

  1. 创建一个Reddit应用

  2. 获取您的凭据

    • 客户端ID:在您的应用名称下找到(短字符串)
    • 客户端密钥:在应用详情中找到(长字符串)

安装

  1. 克隆或下载此仓库

    git clone <repository-url>
    cd reddit-mcp-tool
    
  2. 使用uv安装依赖项

    uv sync
    
  3. 快速设置(推荐)

    uv run python scripts/setup.py
    

    这将创建您的.env文件,并显示下一步该做什么。

  4. 手动设置

    cp env.example .env
    

    使用您的Reddit API凭据编辑.env文件:

    REDDIT_CLIENT_ID=your_client_id_here
    REDDIT_CLIENT_SECRET=your_client_secret_here
    REDDIT_USER_AGENT=reddit-mcp-tool:v0.2.0 (by /u/yourusername)
    
  5. 测试您的设置

    uv run python scripts/test_basic.py
    

    注意:此服务器以只读模式运行,只需客户端ID、密钥和用户代理即可访问基本API。

故障排除

如果您遇到问题,请参阅TROUBLESHOOTING.md,了解常见问题的详细解决方案。

使用方法

运行MCP服务器

uv run reddit-mcp-tool

或者直接使用Python:

uv run python -m reddit_mcp.server

可用工具

1. 搜索Reddit帖子(子版块特定)

在特定子版块中搜索帖子:

{
  "name": "search_reddit_posts",
  "arguments": {
    "subreddit": "python",
    "query": "机器学习",
    "limit": 10,
    "sort": "相关性",
    "time_filter": "周"
  }
}

参数:

  • subreddit(必需):子版块名称(不带r/)
  • query(必需):搜索查询字符串
  • limit(可选):要返回的帖子数量(1-100,默认值:10)
  • sort(可选):排序方法 - "相关性"、"热门"、"顶级"、"新"、"评论"(默认值:"相关性")
  • time_filter(可选):时间筛选 - "全部"、"天"、"周"、"月"、"年"(默认值:"全部")

2. 搜索整个Reddit(全站)

在整个Reddit上进行搜索:

{
  "name": "search_reddit_all",
  "arguments": {
    "query": "人工智能",
    "limit": 20,
    "sort": "顶级",
    "time_filter": "周"
  }
}

参数:

  • query(必需):搜索查询字符串
  • limit(可选):要返回的帖子数量(1-100,默认值:10)
  • sort(可选):排序方法 - "相关性"、"热门"、"顶级"、"新"、"评论"(默认值:"相关性")
  • time_filter(可选):时间筛选 - "全部"、"天"、"周"、"月"、"年"(默认值:"全部")

3. 获取帖子详情

获取特定帖子的详细信息:

{
  "name": "get_reddit_post_details",
  "arguments": {
    "post_id": "abc123"
  }
}

参数:

  • post_id(必需):Reddit帖子ID

4. 获取子版块信息

获取子版块的信息:

{
  "name": "get_subreddit_info",
  "arguments": {
    "subreddit": "python"
  }
}

参数:

  • subreddit(必需):子版块名称(不带r/)

5. 获取热门帖子

从子版块中获取热门帖子:

{
  "name": "get_hot_reddit_posts",
  "arguments": {
    "subreddit": "编程",
    "limit": 15
  }
}

参数:

  • subreddit(必需):子版块名称(不带r/)
  • limit(可选):要返回的帖子数量(1-100,默认值:10)

搜索工具比较

特征search_reddit_postssearch_reddit_all
范围单个子版块整个Reddit
用途针对特定社区的搜索广泛主题发现
结果来自一个子版块来自多个子版块
示例"python" 在 r/编程"python" 跨越整个Reddit

配置

环境变量

变量必需描述
REDDIT_CLIENT_ID您的Reddit应用的客户端ID
REDDIT_CLIENT_SECRET您的Reddit应用的客户端密钥
REDDIT_USER_AGENTAPI请求的用户代理字符串

与MCP客户端集成

此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端一起使用。配置您的MCP客户端使用stdio传输连接到此服务器。

Claude Desktop 配置

添加以下内容到您的Claude Desktop配置:

{
  "mcpServers": {
    "reddit-mcp-tool": {
      "command": "uvx",
      "args": ["reddit-mcp-tool@latest"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here",
        "REDDIT_USER_AGENT": "reddit-mcp-tool:v0.2.0 (by /u/yourusername)"
      }
    }
  }
}

本地开发配置

对于本地开发,使用:

{
  "mcpServers": {
    "reddit-mcp-tool": {
      "command": "uv",
      "args": ["run", "reddit-mcp-tool"],
      "cwd": "/path/to/reddit-mcp-tool",
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here",
        "REDDIT_USER_AGENT": "reddit-mcp-tool:v0.2.0 (by /u/yourusername)"
      }
    }
  }
}

错误处理

服务器包括针对常见情况的全面错误处理:

  • 子版块名称无效
  • 帖子未找到
  • 认证失败
  • 速率限制
  • 网络错误

所有错误都通过MCP协议以描述性文本形式返回。

速率限制

Reddit的API有速率限制。服务器尊重这些限制,但如果短时间内发出过多请求,可能会遇到速率限制错误。认证用户的默认速率限制通常是每分钟60次请求。

开发

运行测试

uv run pytest

代码格式化

uv run black .
uv run ruff check .

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如适用,添加测试
  5. 运行测试套件
  6. 提交拉取请求

许可

此项目根据MIT许可发布。详见LICENSE文件。

免责声明

此工具仅供教育和开发用途。请确保在使用此工具时遵守Reddit的API服务条款和社区准则。这是一个只读工具,尊重Reddit的API限制,不提供任何发帖或评论功能。

备注

  • 此项目已更名为reddit-mcp-tool,以避免与PyPI上的现有reddit-mcp包冲突
  • 仅支持只读操作(搜索、阅读帖子、获取子版块信息)
  • 不需要用户身份验证 - 只需应用凭据即可访问基本API
  • 使用可靠的PRAW(Python Reddit API Wrapper)库构建
  • 包含适当的速率限制和错误处理