使用说明
Reddit MCP工具
模型上下文协议(MCP)服务器,通过Reddit的官方API提供用于浏览和搜索Reddit内容的只读工具。内置于 FastMCP 实现无缝集成和自动序列化。此服务器允许您通过MCP兼容的客户端搜索帖子、阅读帖子详细信息并获取subreddit信息。
特性
- 🔍 搜索文章:使用各种排序和筛选选项在特定的子版块中搜索帖子
- 🌐 全站搜索:使用关键字查询在所有Reddit上搜索
- 📊 获取子文件夹信息:检索有关子版块的详细信息
- 🔥 获取热门帖子:从subreddit获取热门帖子
- 📋 获取帖子详细信息:获取有关特定职位的全面详细信息
- ⚡ FastMCP集成:内置FastMCP,实现自动序列化和无缝MCP兼容性
先决条件
- Python 3.10+ 安装在您的系统上
- 紫外线 已安装包管理器(安装指南)
- Reddit API证书 (见下面的设置部分)
Reddit API设置
-
创建Reddit应用程序:
- 首选 Reddit应用程序首选项
- 点击“创建应用程序”或“创建另一个应用程序”
- 为应用程序类型选择“脚本”
- 填写必填字段:
- 名称:您的应用程序名称(例如,“Reddit MCP工具”)
- 说明:简要说明
- 关于URL:可以为空
- 重定向URI:http://localhost:8080(必需但未使用)
-
获取您的凭据:
- 客户端ID:在您的应用程序名称(短字符串)下找到
- 客户端密钥:在应用程序详细信息中找到(较长字符串)
安装
-
克隆或下载此存储库:
git clone <repository-url> cd reddit-mcp-tool -
使用uv安装依赖项:
uv sync -
快速设置(推荐):
uv run python scripts/setup.py这将创建您的
.env归档并告诉你下一步该做什么。 -
手动设置:
cp env.example .env编辑
.env使用您的Reddit API凭据文件: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) -
测试您的设置:
uv run python scripts/test_basic.py备注:此服务器以只读模式运行,只需要客户端ID、机密和用户代理即可进行基本API访问。
故障排除
如果遇到问题,请参阅 故障排除.md 了解常见问题的详细解决方案。
用法
运行MCP服务器
uv run reddit-mcp-tool
或者直接使用Python:
uv run python -m reddit_mcp.server
可用工具
1.搜索Reddit帖子(特定于子版块)
在特定的subreddit中搜索帖子:
{
"name": "search_reddit_posts",
"arguments": {
"subreddit": "python",
"query": "machine learning",
"limit": 10,
"sort": "relevance",
"time_filter": "week"
}
}
参数:
subreddit(必填):子版块名称(不含r/)query(必填):搜索查询字符串limit(可选):要返回的帖子数量(1-100,默认值:10)sort(可选):排序方法-“相关性”、“热门”、“顶部”、“新”、“评论”(默认:“相关性”)time_filter(可选):时间过滤器-“全部”、“日”、“周”、“月”、“年”(默认值:“全部”)
2.搜索所有Reddit(整个网站)
在整个Reddit上搜索:
{
"name": "search_reddit_all",
"arguments": {
"query": "artificial intelligence",
"limit": 20,
"sort": "top",
"time_filter": "week"
}
}
参数:
query(必填):搜索查询字符串limit(可选):要返回的帖子数量(1-100,默认值:10)sort(可选):排序方法-“相关性”、“热门”、“顶部”、“新”、“评论”(默认:“相关性”)time_filter(可选):时间过滤器-“全部”、“日”、“周”、“月”、“年”(默认值:“全部”)
3.获取帖子详细信息
获取特定帖子的详细信息:
{
"name": "get_reddit_post_details",
"arguments": {
"post_id": "abc123"
}
}
参数:
post_id(必填):Reddit帖子ID
4.获取子漩涡信息
获取有关subreddit的信息:
{
"name": "get_subreddit_info",
"arguments": {
"subreddit": "python"
}
}
参数:
subreddit(必填):子版块名称(不含r/)
5.获取热门帖子
从subreddit获取热门帖子:
{
"name": "get_hot_reddit_posts",
"arguments": {
"subreddit": "programming",
"limit": 15
}
}
参数:
subreddit(必填):子版块名称(不含r/)limit(可选):要返回的帖子数量(1-100,默认值:10)
搜索工具比较
| 特点 | search_reddit_posts |
search_reddit_all |
|---|---|---|
| 范围 | 单一子版块 | 所有Reddit |
| 用例 | 聚焦社区搜索 | 广泛主题发现 |
| 结果 | 来自一个子版块 | 来自多个子版块 |
| 示例 | r/programming中的“python” | 所有Reddit中的“python” |
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
REDDIT_CLIENT_ID |
是 | 您的Reddit应用程序的客户端ID |
REDDIT_CLIENT_SECRET |
是 | 您的Reddit应用程序的客户端机密 |
REDDIT_USER_AGENT |
是 | API请求的用户代理字符串 |
与MCP客户端集成
此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端一起使用。配置您的MCP客户端以使用stdio传输连接到此服务器。
Claude桌面配置
将此添加到您的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 .
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 运行测试套件
- 提交拉取请求
许可证
该项目根据MIT许可证获得许可。有关详细信息,请参阅LICENSE文件。
免责声明
此工具用于教育和发展目的。使用此工具时,请确保遵守Reddit的API服务条款和社区指南。这是一个只读工具,尊重Reddit的API限制,不提供任何发布或评论功能。
备注
- 此项目已重命名为
reddit-mcp-tool避免与现有冲突reddit-mcpPyPI上的包 - 仅支持只读操作(搜索、阅读帖子、获取subreddit信息)
- 不需要用户身份验证-只需要基本API访问的应用程序凭据
- 使用可靠的PRAW(Python Reddit API Wrapper)库构建
- 包括适当的速率限制和错误处理