Reddit数据访问服务器

企业级Reddit数据访问服务器,支持AI代理和开发者搜索、监控和分析Reddit的7300万日活跃用户和10万+社区。

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

使用说明

Reddit MCP服务器

企业级模型上下文协议(MCP)服务器,用于无缝访问Reddit数据。使AI代理和开发人员能够搜索、监控和分析Reddit的7300万日活跃用户和10万多个社区。

功能(MVP v0.1.0)

  • search_reddi -使用过滤器搜索所有Reddit或特定子版块
  • 获取subreddit_post -监控子版块中的热门、新、热门或上升帖子
  • get_post_comments -检索具有完整上下文的嵌套评论线程
  • 获取_渲染_主题 -实时发现热门关键字和主题

所有工具都包括智能Redis缓存(命中率75%以上)和自动限速。

先决条件

  • Python 3.11或更高版本
  • Redis服务器(本地或云端)
  • Reddit API凭据(客户端ID和机密)

获取Reddit API凭据

  1. 首选https://www.reddit.com/prefs/apps
  2. 点击“创建应用程序”或“创建另一个应用程序”
  3. 选择“脚本”作为应用程序类型
  4. 填写必填字段:
    • 名称:“Reddit MCP服务器”
    • 重定向URI:http://localhost:8080
  5. 保存您的 客户端ID (在应用程序名称下)和 客户端密钥

地方发展设置

1.克隆和安装

# Clone the repository
cd /Users/padak/github/apify-actors

# Create virtual environment
python3.11 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

2.配置环境变量

创建一个 .env 项目根目录中的文件:

# Reddit API Credentials
REDDIT_CLIENT_ID=your_client_id_here
REDDIT_CLIENT_SECRET=your_client_secret_here

# Redis Connection
REDIS_URL=redis://localhost:6379

# Logging (optional)
LOG_LEVEL=INFO

3.启动Redis(本地)

# Using Docker
docker run -d -p 6379:6379 redis:7-alpine

# Or install Redis locally (macOS)
brew install redis
brew services start redis

4.运行服务器

python -m src.main

MCP服务器将在配置的端口上以待机模式启动(默认: /mcp 端点)。

测试

# Run all tests
pytest tests/

# Run with coverage
pytest --cov=src tests/

# Run only unit tests
pytest tests/unit/

# Run only integration tests (requires Redis + Reddit API)
pytest tests/integration/

优化部署

部署到Apify平台

  1. 安装Apify CLI
npm install -g apify-cli
apify login
  1. 配置机密

在Apify控制台中,将这些秘密添加到Actor中:

  • REDDIT_CLIENT_ID
  • REDDIT_CLIENT_SECRET
  • REDIS_URL
  1. 部署
apify push

Actor将以待机模式部署,并可通过MCP端点访问。

环境变量(Apify)

变量 类型 必填 描述
REDDIT_CLIENT_ID 秘密 是 Reddit API客户端ID
REDDIT_CLIENT_SECRET 机密 是 Reddit API客户端机密
REDIS_URL 字符串 是 Redis连接URL
LOG_LEVEL 字符串 否 日志记录级别(默认值:INFO)

项目结构

/Users/padak/github/apify-actors/
├── src/
│   ├── main.py              # Entry point
│   ├── tools/               # MCP tool implementations
│   ├── reddit/              # Reddit API integration
│   ├── cache/               # Redis caching layer
│   ├── models/              # Pydantic data models
│   └── utils/               # Shared utilities
├── tests/                   # Test suite
├── docs/                    # Documentation
├── actor.json               # Apify Actor configuration
├── Dockerfile               # Container definition
├── requirements.txt         # Python dependencies
└── README.md                # This file

开发工作流程

代码质量

# Format code with Black
black src/ tests/

# Lint with Ruff
ruff check src/ tests/

# Type check with mypy
mypy src/ --strict

运行个人工具(开发)

TODO:在工具实现后添加示例(MVP-006至MVP-009)

建筑

  • MCP服务器:JSON-RPC协议处理的FastMCP框架
  • Reddit API:PRAW(Python Reddit API包装器),用于身份验证访问
  • 缓存:具有智能TTL策略的Redis(2分钟-1小时)
  • 速率限制:令牌桶算法(100个请求/分钟)
  • 数据验证:用于类型安全输入/输出的Pydantic模型

看 /Users/padak/github/apify-actors/docs/architecture/ 获取详细的技术文档。

故障排除

Redis连接错误

# Check if Redis is running
redis-cli ping
# Should return: PONG

# Test connection with URL
redis-cli -u redis://localhost:6379 ping

Reddit API身份验证错误

  • 验证您的客户端ID和密码是否正确
  • 检查你的Reddit应用程序类型是否为“脚本”
  • 确保重定向URI匹配:http://localhost:8080

导入错误

# Ensure you're in the virtual environment
source venv/bin/activate

# Reinstall dependencies
pip install -r requirements.txt

贡献

这是一个MVP项目。捐款应与路线图保持一致:

  • MVP(第1-2周):核心4工具+缓存+速率限制
  • v1.0(第3-4周):货币化、情感分析、用户认证
  • v2.0(第2+个月):写入操作、实时监控、分析

文档

许可证

[添加许可证信息]

支持

有关问题或疑问,请参阅 /docs/ 或者在存储库中创建问题。


状态:MVP v0.1.0(第1-2周开发) 目标:第6个月5000 MAU(Apify 100万美元挑战)