这是一个模型上下文协议(MCP)服务器,提供只读工具,通过Reddit官方API浏览和搜索Reddit内容。使用FastMCP构建,实现无缝集成和自动序列化。此服务器允许您通过兼容MCP的客户端搜索帖子、阅读帖子详情以及获取子版块信息。
创建一个Reddit应用:
获取您的凭据:
克隆或下载此仓库:
git clone <repository-url>
cd reddit-mcp-tool
使用uv安装依赖项:
uv sync
快速设置(推荐):
uv run python scripts/setup.py
这将创建您的.env文件,并显示下一步该做什么。
手动设置:
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)
测试您的设置:
uv run python scripts/test_basic.py
注意:此服务器以只读模式运行,只需客户端ID、密钥和用户代理即可访问基本API。
如果您遇到问题,请参阅TROUBLESHOOTING.md,了解常见问题的详细解决方案。
uv run reddit-mcp-tool
或者直接使用Python:
uv run python -m reddit_mcp.server
在特定子版块中搜索帖子:
{
"name": "search_reddit_posts",
"arguments": {
"subreddit": "python",
"query": "机器学习",
"limit": 10,
"sort": "相关性",
"time_filter": "周"
}
}
参数:
subreddit(必需):子版块名称(不带r/)query(必需):搜索查询字符串limit(可选):要返回的帖子数量(1-100,默认值:10)sort(可选):排序方法 - "相关性"、"热门"、"顶级"、"新"、"评论"(默认值:"相关性")time_filter(可选):时间筛选 - "全部"、"天"、"周"、"月"、"年"(默认值:"全部")在整个Reddit上进行搜索:
{
"name": "search_reddit_all",
"arguments": {
"query": "人工智能",
"limit": 20,
"sort": "顶级",
"time_filter": "周"
}
}
参数:
query(必需):搜索查询字符串limit(可选):要返回的帖子数量(1-100,默认值:10)sort(可选):排序方法 - "相关性"、"热门"、"顶级"、"新"、"评论"(默认值:"相关性")time_filter(可选):时间筛选 - "全部"、"天"、"周"、"月"、"年"(默认值:"全部")获取特定帖子的详细信息:
{
"name": "get_reddit_post_details",
"arguments": {
"post_id": "abc123"
}
}
参数:
post_id(必需):Reddit帖子ID获取子版块的信息:
{
"name": "get_subreddit_info",
"arguments": {
"subreddit": "python"
}
}
参数:
subreddit(必需):子版块名称(不带r/)从子版块中获取热门帖子:
{
"name": "get_hot_reddit_posts",
"arguments": {
"subreddit": "编程",
"limit": 15
}
}
参数:
subreddit(必需):子版块名称(不带r/)limit(可选):要返回的帖子数量(1-100,默认值:10)| 特征 | search_reddit_posts | search_reddit_all |
|---|---|---|
| 范围 | 单个子版块 | 整个Reddit |
| 用途 | 针对特定社区的搜索 | 广泛主题发现 |
| 结果 | 来自一个子版块 | 来自多个子版块 |
| 示例 | "python" 在 r/编程 | "python" 跨越整个Reddit |
| 变量 | 必需 | 描述 |
|---|---|---|
REDDIT_CLIENT_ID | 是 | 您的Reddit应用的客户端ID |
REDDIT_CLIENT_SECRET | 是 | 您的Reddit应用的客户端密钥 |
REDDIT_USER_AGENT | 是 | API请求的用户代理字符串 |
此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端一起使用。配置您的MCP客户端使用stdio传输连接到此服务器。
添加以下内容到您的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,以避免与PyPI上的现有reddit-mcp包冲突