返回市场
MCP服务器 Reddit 时间序列

MCP服务器 Reddit 时间序列

作者:SzeMeng762 星标更新:2025-11-18

项目介绍

🔴 Reddit MCP 服务器

中文版 | English

一个全面的 MCP 服务器,通过 Reddit API 访问 Reddit 数据

🎯 概述

这是一个提供无缝访问 Reddit 数据的 Model Context Protocol (MCP) 服务器,包括子版块、帖子、评论和搜索功能。使用 TypeScript 和官方 Reddit API 构建,以实现可靠且快速的数据检索。

✨ 功能

  • 🏠 子版块信息:获取任何子版块的详细信息
  • 🔍 帖子搜索:在子版块中搜索帖子,并提供多种排序选项
  • 📝 帖子详情:获取完整的帖子信息,包括内容和元数据
  • 💬 评论:获取帖子的评论,并提供不同的排序方法
  • 🌐 子版块发现:搜索并发现新的子版块
  • 🔑 OAuth 身份验证:使用 Reddit API 凭据进行安全访问
  • 🔄 自动令牌刷新:自动管理访问令牌
  • 🎨 丰富的格式化:响应格式良好,数据全面
  • 高性能:高效调用 API 并具有适当的错误处理

📦 安装

npm install reddit-mcp

或者直接使用 npx:

npx reddit-mcp

🔧 先决条件

在使用此 MCP 服务器之前,您需要获得 Reddit API 凭据:

  1. 创建 Reddit 应用

    • 前往 Reddit 应用偏好设置
    • 点击“创建应用”或“创建另一个应用”
    • 选择“脚本”作为应用类型
    • 记录您的 client_idclient_secret
  2. 设置环境变量

    export REDDIT_CLIENT_ID="your_client_id_here"
    export REDDIT_CLIENT_SECRET="your_client_secret_here"
    

    或者创建一个 .env 文件:

    REDDIT_CLIENT_ID=your_client_id_here
    REDDIT_CLIENT_SECRET=
    your_client_secret_here
    

🔧 配置

Claude Desktop

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["reddit-mcp"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Cursor IDE

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["reddit-mcp"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

VS Code with GitHub Copilot

{
  "mcp.servers": {
    "reddit": {
      "command": "npx",
      "args": ["reddit-mcp"],
      "transport": "stdio",
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id_here",
        "REDDIT_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

🛠️ 可用工具

get_subreddit

获取特定子版块的详细信息。

参数:

  • name(必需):要检索的子版块名称(不带 'r/' 前缀)

示例用法:

"获取编程子版块的信息"
"显示 MachineLearning 子版块的详细信息"

返回值:

  • 子版块标题和描述
  • 订阅者数量
  • 创建日期
  • 是否含有成人内容
  • URL

search_posts

在子版块内搜索帖子或获取热门帖子。

参数:

  • subreddit(必需):要搜索的子版块名称
  • query(可选):搜索查询字符串(如果为空,则返回热门帖子)
  • sort(可选):排序方法 - "相关性", "热门", "最新", "顶级", "评论"(默认:"热门")
  • time(可选):时间范围 - "全部", "小时", "天", "周", "月", "年"(默认:"全部")
  • limit(可选):要返回的最大帖子数(1-100,默认:10)

示例用法:

"在 r/MachineLearning 中搜索关于 '人工智能' 的帖子"
"获取 r/programming 中排名前 20 的热门帖子"
"查找过去一周内 r/webdev 中关于 'React' 的新帖子"

返回值:

  • 帖子标题和 URL
  • 作者信息
  • 得分和评论数
  • 帖子 ID 用于进一步查询

get_submission

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

参数:

  • id(必需):帖子 ID(带有或不带有 't3_' 前缀)

示例用法:

"获取帖子 ID abc123 的详细信息"
"显示帖子 t3_xyz789 的完整内容"

返回值:

  • 完整的帖子标题和内容
  • 作者和子版块信息
  • 得分和评论统计
  • 创建时间
  • 帖子类型(文本或链接)

get_comments_by_submission

获取特定帖子的评论。

参数:

  • submission_id(必需):要获取评论的帖子 ID
  • sort(可选):评论排序方法 - "信心", "顶级", "最新", "争议", "旧", "随机", "问答", "实时"(默认:"信心")
  • limit(可选):要返回的最大评论数(1-100,默认:10)

示例用法:

"获取帖子 abc123 的前 15 条顶级评论"
"显示帖子 xyz789 的最新评论"

返回值:

  • 评论内容和作者
  • 评论得分
  • 创建时间戳
  • 评论 ID

get_comment

获取特定评论的详细信息。

参数:

  • id(必需):评论 ID(带有或不带有 't1_' 前缀)

示例用法:

"获取评论 ID def456 的详细信息"
"显示评论 t1_ghi789"

返回值:

  • 评论内容和作者
  • 得分和创建时间
  • 关联的子版块和帖子
  • 评论 ID

search_subreddits

按名称或描述搜索子版块。

参数:

  • query(必需):子版块名称或描述的搜索查询
  • limit(可选):要返回的最大子版块数(1-100,默认:10)

示例用法:

"搜索关于烹饪的子版块"
"查找与编程相关的子版块"

返回值:

  • 子版块名称和描述
  • 订阅者数量
  • 是否含有成人内容
  • URL

🎮 使用示例

内容发现

"找到本周 r/technology 中最受欢迎的帖子"
"搜索 r/MachineLearning 中关于 'GPT-4' 的讨论"

研究和分析

"获取 r/datascience 的信息并显示排名前 10 的帖子"
"查找与 '区块链' 相关的子版块并显示其订阅者数量"

评论分析

"获取帖子 abc123 的顶级评论并分析情感"
"显示帖子 xyz789 的争议性评论"

趋势监测

"今天 r/programming 中的趋势话题是什么?"
"搜索相关子版块中的 'ChatGPT' 帖子"

🏗️ 开发

本地设置

# 克隆仓库
git clone https://github.com/SzeMeng76/mcp-server-reddit-ts.git
cd mcp-server-reddit-ts

# 安装依赖
npm install

# 设置环境变量
cp .env.example .env
# 编辑 .env 文件,填写您的 Reddit API 凭据

# 启动服务器
npm start

项目结构

mcp-server-reddit-ts/
├── index.js              # 主 MCP 服务器实现
├── package.json          # 依赖项和脚本
├── .env.example          # 环境变量模板
└── README.md            # 文档

核心依赖项

  • @modelcontextprotocol/sdk: 官方 MCP 服务器框架
  • node-fetch: Reddit API 调用的 HTTP 客户端
  • dotenv: 环境变量管理
  • zod: 运行时类型验证和模式定义

🔧 技术细节

身份验证流程

  • 使用 OAuth 2.0 客户端凭据流
  • 当令牌过期时自动刷新
  • 通过环境变量安全地处理凭据

API 速率限制

  • 尊重 Reddit API 的速率限制
  • 实现正确的 User-Agent 头
  • 优雅地处理 HTTP 错误

数据处理

  • 对于可读性进行全面的数据格式化
  • 正确处理 Reddit 的嵌套评论结构
  • 清洁 ID 处理(自动删除前缀)

错误处理

  • 提供常见问题的详细错误消息
  • 对 API 失败进行优雅降级
  • 正确验证输入参数

⚠️ 重要注意事项

Reddit API 指南

  • 遵循 Reddit 的 API 使用条款
  • 尊重速率限制(客户端凭据每分钟 60 次请求)
  • 使用描述性的 User-Agent 字符串
  • 不要进行过度请求

数据隐私

  • 该服务器仅访问公共 Reddit 数据
  • 不涉及用户身份验证或私有数据访问
  • 尊重 Reddit 的隐私设置和已删除的内容

内容指南

  • 在访问某些子版块时注意可能存在的成人内容
  • 遵守社区规则和指南
  • 负责任地使用数据进行研究和分析

🚀 常见用例

市场研究

  • 趋势分析:监控产品或主题的讨论
  • 情感分析:分析公众对品牌或事件的看法
  • 社区洞察:了解受众偏好和行为

内容策略

  • 主题发现:在相关社区中寻找热门话题
  • 参与度分析:研究哪些内容表现良好
  • 社区研究:识别活跃的社区

学术研究

  • 社交媒体研究:分析在线社区动态
  • 公众意见研究:研究态度和观点
  • 内容分析:检查沟通模式

开发和测试

  • API 集成:测试 Reddit 数据在应用程序中的集成
  • 机器人开发:原型 Reddit 机器人和自动化工具
  • 数据分析:处理 Reddit 数据以获得见解

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature-name
  3. 添加适当的错误处理进行更改
  4. 使用各种子版块和内容类型进行测试
  5. 确保环境变量文档正确
  6. 提交清晰描述的拉取请求

开发指南

  • 遵循 JavaScript/Node.js 最佳实践
  • 为新功能添加适当的错误处理
  • 测试流行和小众子版块
  • 文档任何新的参数或返回格式
  • 遵守 Reddit API 指南和速率限制

📄 许可证

MIT 许可证 - 详情见 LICENSE 文件。

⚖️ 法律和伦理

  • Reddit API 合规性:严格遵守 Reddit 的开发者条款
  • 仅公开数据:仅访问公开的 Reddit 内容
  • 速率限制:尊重 API 限制以避免服务中断
  • 内容责任:用户必须确保适当使用访问的数据
  • 隐私尊重:不访问私人消息或受限内容

🙏 致谢

  • Reddit:提供全面的 Reddit API
  • MCP 社区:提供标准化协议
  • Node-fetch 维护者:提供可靠的 HTTP 客户端功能
  • 贡献者:所有帮助改进此项目的人员

专为 Reddit 数据分析、内容研究和社区洞察而设计 🔴📊