🚀 Reddit MCP 服務器
Reddit MCP 服務器是一個模型上下文協議(MCP)服務器,它通過專門為深入研究和分析設計的三層架構,為大語言模型(LLMs)提供全面訪問 Reddit 內容的能力。該服務器基於 FastMCP 和 PRAW 構建,可實現高效部署。
🚀 快速開始
前提條件
- Python 3.11 及以上版本
- Reddit API 憑證(點擊此處獲取)
- 訪問 https://www.reddit.com/prefs/apps
- 點擊“創建應用”或“創建另一個應用”
- 選擇“腳本”作為應用類型
- 記錄下你的
client_id(在“個人使用腳本”下方)和 client_secret
安裝
- 克隆倉庫:
git clone <repository-url>
cd reddit-mcp-poc
- 使用 uv 安裝依賴:
pip install uv
uv sync
配置
在項目根目錄下創建一個 .env 文件:
REDDIT_CLIENT_ID=your_client_id_here
REDDIT_CLIENT_SECRET=your_client_secret_here
REDDIT_USER_AGENT=RedditMCP/1.0 by u/your_username
運行服務器
生產模式
uv run src/server.py
開發模式(使用 MCP 檢查器)
fastmcp dev src/server.py
服務器啟動後,即可接受 MCP 連接。
✨ 主要特性
🔍 三層架構
本服務器採用獨特的三層架構,引導大語言模型對 Reddit 進行全面研究:
第一層:發現 (discover_reddit_resources)
- 使用多種搜索策略查找 8 - 15 個相關社區
- 支持“快速”和“全面”兩種發現模式
- 返回可用操作和推薦工作流程
第二層:需求 (get_operation_requirements)
- 提供詳細的參數模式和驗證規則
- 根據你的研究需求提供上下文感知的建議
- 明確指導何時使用每個操作
第三層:執行 (execute_reddit_operation)
- 驗證參數並執行 Reddit 操作
- 具備全面的錯誤處理機制,並提供可操作的提示
- 返回帶有詳細元數據的結構化結果
🌟 其他關鍵特性
- 多社區覆蓋:在一個工作流程中發現並獲取 8 - 15 個子版塊的內容
- 智能發現:使用多種搜索策略實現全面覆蓋
- 引用支持:所有結果中均包含 Reddit URL,便於正確引用
- 效率優化:批量操作可減少 70% 以上的 API 調用
- 專注研究:設計用於深入分析,支持評論深度挖掘
- MCP 資源:可訪問熱門子版塊、子版塊信息和服務器功能
💻 使用示例
基礎用法
🚀 推薦的全面研究工作流程
為獲得最佳效果,請遵循以下利用三層架構的工作流程:
discover_reddit_resources(
topic="machine learning ethics",
discovery_depth="comprehensive"
)
get_operation_requirements("fetch_multiple", context="ML ethics discussion")
execute_reddit_operation("fetch_multiple", {
"subreddit_names": ["MachineLearning", "artificial", "singularity", "ethics"],
"limit_per_subreddit": 8
})
execute_reddit_operation("fetch_comments", {
"submission_id": "abc123",
"comment_limit": 100
})
為何此流程有效:
- 📊 比單板塊方法的覆蓋率提高 60%
- 🔗 自動包含 Reddit URL,便於正確引用
- ⚡ 通過智能批處理減少 70% 的 API 調用
- 📝 支持全面的評論分析,適合研究需求
高級用法
🔧 三層架構工作流程示例
result = discover_reddit_resources(
topic="sustainable technology",
discovery_depth="comprehensive"
)
schema = get_operation_requirements("fetch_multiple")
posts = execute_reddit_operation("fetch_multiple", {
"subreddit_names": result["relevant_communities"]["subreddits"][:8],
"listing_type": "hot",
"limit_per_subreddit": 6
})
comments = execute_reddit_operation("fetch_comments", {
"submission_id": "interesting_post_id",
"comment_limit": 100
})
⚡ 快速操作示例
execute_reddit_operation("search_all", {
"query": "artificial intelligence ethics",
"sort": "top",
"time_filter": "week",
"limit": 15
})
execute_reddit_operation("search_subreddit", {
"subreddit_name": "MachineLearning",
"query": "transformer architecture",
"limit": 20
})
execute_reddit_operation("fetch_multiple", {
"subreddit_names": ["artificial", "singularity", "Futurology"],
"listing_type": "hot",
"limit_per_subreddit": 8
})
📚 詳細文檔
可用操作
服務器通過 execute_reddit_operation 提供以下操作來訪問 Reddit:
核心操作
| 操作 |
描述 |
適用場景 |
search_all |
在整個 Reddit 上進行搜索 |
廣泛主題探索 |
search_subreddit |
在特定子版塊中進行搜索 |
針對性社區搜索 |
fetch_posts |
獲取子版塊的最新帖子 |
瞭解當前趨勢和活動 |
fetch_multiple |
⚡ 從多個子版塊批量獲取內容 |
多社區研究 |
fetch_comments |
獲取帶有完整討論的帖子 |
深入分析對話 |
三層架構工具
| 工具 |
用途 |
使用時機 |
discover_reddit_resources |
查找相關社區和操作 |
始終從這裡開始 |
get_operation_requirements |
獲取詳細的參數模式 |
複雜操作之前 |
execute_reddit_operation |
執行任何 Reddit 操作 |
獲取要求之後 |
MCP 資源
服務器提供三種 MCP 資源,用於訪問常用數據:
1. reddit://popular-subreddits
返回 25 個最熱門子版塊的列表,包含訂閱者數量和描述。
2. reddit://subreddit/{name}/about
獲取特定子版塊的詳細信息,包括:
- 標題和描述
- 訂閱者數量和活躍用戶數
- 子版塊規則
- 創建日期和其他元數據
3. reddit://server-info
返回 MCP 服務器的全面信息,包括:
- 可用工具和資源
- 版本信息
- 使用示例
- 當前速率限制狀態
🔧 技術細節
項目結構
reddit-mcp-poc/
├── src/
│ ├── server.py # 具有三層架構的主 MCP 服務器
│ ├── config.py # Reddit 客戶端配置
│ ├── models.py # Pydantic 數據模型
│ ├── resources.py # MCP 資源實現
│ └── tools/ # 工具實現
│ ├── search.py # 搜索功能(支持永久鏈接)
│ ├── posts.py # 子版塊帖子獲取
│ ├── comments.py # 評論獲取
│ └── discover.py # 子版塊發現
├── tests/
│ └── test_tools.py # 單元測試
├── pyproject.toml # 項目依賴
├── .env # 你的 API 憑證
└── README.md # 本文件
錯誤處理
服務器能夠優雅地處理常見的 Reddit API 錯誤:
- 速率限制:由 PRAW 自動處理,冷卻時間為 5 分鐘
- 未找到:對於不存在的子版塊/帖子返回錯誤消息
- 禁止訪問:對於私有/受限內容返回錯誤消息
- 無效輸入:驗證並清理所有輸入參數
侷限性
此 MVP 實現存在一些有意設置的限制:
- 只讀訪問(不支持發帖、評論或投票)
- 無用戶認證(使用僅應用程序認證)
- 有限的評論展開(不獲取“更多評論”)
- 無緩存(每個請求直接訪問 Reddit API)
下一步計劃
基於三層架構的基礎,後續計劃如下:
- 增強大語言模型指導:改進
get_operation_requirements,提供更豐富的上下文感知建議
- 高級分析:為發現的社區添加情感分析和趨勢檢測功能
- 緩存層:為發現的社區和頻繁查詢實現智能緩存
- 用戶認證:添加寫操作(發帖、評論等)並提供適當的認證
- 擴展發現:添加基於時間和活動的社區發現模式
- 研究模板:為常見研究模式提供預配置的工作流程
- 引用工具:根據 Reddit URL 自動生成參考書目
📄 許可證
本項目採用 MIT 許可證。
貢獻
歡迎貢獻代碼!請隨時提交拉取請求。
故障排除
| 問題 |
解決方案 |
| "Reddit API credentials not found" |
確保 .env 文件存在且包含有效憑證 |
| 速率限制錯誤 |
等待幾分鐘,PRAW 會自動處理 |
| "Subreddit not found" |
驗證子版塊名稱(無需 r/ 前綴) |
| 無搜索結果 |
嘗試更廣泛的搜索詞或不同的時間過濾器 |
| 導入錯誤 |
運行 uv sync 安裝所有依賴項 |