使用说明
MCP Reddit服务器
全面的 模型上下文协议(MCP) Reddit的服务器。提供8个用于获取Reddit内容的工具、完整的REST API和Azure部署支持。适用于Claude Desktop、Microsoft Copilot Studio、Power Automation和任何兼容MCP的客户端。
特性
- 8个Reddit工具:从任何子版块获取热门、新、上升和热门帖子
- 主题聚合:按主题从多个相关子版块获取帖子
- 评论树:获取带有线程评论的帖子内容
- 子文件夹信息:获取订阅者数量和描述
- 多种连接方式:
- MCP流式HTTP(适用于Copilot Studio、Claude Desktop)
- 带有OpenAPI规范的REST API(用于Power Automate,直接HTTP)
- Azure部署:Docker+容器应用部署开箱即用
可用工具
| 工具 | 说明 |
|---|---|
reddit_hot |
从subreddit获取热门帖子 |
reddit_new |
从subreddit获取最新帖子 |
reddit_rising |
获取上升/趋势帖子 |
reddit_top |
按时间段获取热门帖子 |
reddit_front |
获取Reddit首页帖子 |
reddit_post |
获取带有评论的帖子内容 |
reddit_topic |
从主题相关的子版块获取帖子 |
reddit_info |
获取subreddit信息(订阅者、描述) |
快速开始
先决条件
-
Reddit API凭据:在以下位置创建应用程序https://www.reddit.com/prefs/apps
- 选择“脚本”类型
- 将重定向URI设置为
http://localhost:8080 - 记下您的客户端ID和客户端密码
-
生成刷新令牌:
pip install praw python get_refresh_token.py -
创建
.env文件:cp .env.example .env # Edit .env with your credentials
本地开发
本地运行
# Install dependencies
pip install uv
uv sync
# Run the server
uv run uvicorn mcp_reddit.web_server:app --host 0.0.0.0 --port 8000
服务器将在以下位置可用:
- REST API:http://localhost:8000
- API文件:http://localhost:8000/docs
- MCP端点:http://localhost:8000/mcp/(需要MCP_API_KEY)
使用克劳德桌面(本地)
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"reddit": {
"command": "uv",
"args": ["run", "uvicorn", "mcp_reddit.web_server:app", "--port", "8000"],
"cwd": "/path/to/mcp-reddit",
"env": {
"REDDIT_CLIENT_ID": "your_client_id",
"REDDIT_CLIENT_SECRET": "your_client_secret",
"REDDIT_REFRESH_TOKEN": "your_refresh_token",
"MCP_API_KEY": "your_api_key"
}
}
}
}
或使用 mcp-remote 要连接到正在运行的服务器,请执行以下操作:
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/mcp/",
"--header",
"X-API-Key: your_api_key"
]
}
}
}
Azure部署
选项1:自动部署脚本
chmod +x deploy-to-azure.sh
./deploy-to-azure.sh
脚本将:
- 创建资源组
- 创建Azure容器注册表
- 构建并推送Docker镜像
- 创建容器应用程序环境
- 使用您的Reddit凭据部署容器
选项2:手动部署
1.创建Azure资源
# Set variables
RESOURCE_GROUP="mcp-reddit-rg"
LOCATION="westeurope" # or your preferred region
ACR_NAME="yourregistryname"
# Create resource group
az group create --name $RESOURCE_GROUP --location $LOCATION
# Create container registry
az acr create --name $ACR_NAME --resource-group $RESOURCE_GROUP --sku Basic --admin-enabled true
# Create container apps environment
az containerapp env create --name mcp-reddit-env --resource-group $RESOURCE_GROUP --location $LOCATION
2.构建和推送图像
az acr build --registry $ACR_NAME --image mcp-reddit:latest --file Dockerfile.azure .
3.部署容器应用程序
# Get ACR password
ACR_PASSWORD=$(az acr credential show --name $ACR_NAME --query "passwords[0].value" -o tsv)
# Generate MCP API key
MCP_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# Create container app
az containerapp create \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--environment mcp-reddit-env \
--image $ACR_NAME.azurecr.io/mcp-reddit:latest \
--registry-server $ACR_NAME.azurecr.io \
--registry-username $ACR_NAME \
--registry-password "$ACR_PASSWORD" \
--target-port 8000 \
--ingress external \
--min-replicas 1 \
--max-replicas 5 \
--cpu 0.5 \
--memory 1Gi \
--secrets \
reddit-client-id="YOUR_CLIENT_ID" \
reddit-client-secret="YOUR_CLIENT_SECRET" \
reddit-refresh-token="YOUR_REFRESH_TOKEN" \
mcp-api-key="$MCP_API_KEY" \
--env-vars \
REDDIT_CLIENT_ID=secretref:reddit-client-id \
REDDIT_CLIENT_SECRET=secretref:reddit-client-secret \
REDDIT_REFRESH_TOKEN=secretref:reddit-refresh-token \
MCP_API_KEY=secretref:mcp-api-key
4.获取您的服务器URL
az containerapp show --name mcp-reddit-server --resource-group $RESOURCE_GROUP --query "properties.configuration.ingress.fqdn" -o tsv
5.(可选)添加自定义域
# Add custom domain
az containerapp hostname add \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--hostname your-domain.com
# Bind SSL certificate
az containerapp hostname bind \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--hostname your-domain.com \
--environment mcp-reddit-env \
--validation-method CNAME
连接方式
1.MCP可流式HTTP(经过身份验证)
对于 微软复制品工作室 和 克劳德桌面版:
| 设置 | 值 |
|---|---|
| URL | https://your-server.com/mcp/ |
| Auth | neneneba API密钥 |
头球 X-API-Key |
重要:URL必须有尾随斜线(/mcp/)
2.REST API/OpenAPI(无需验证)
对于 Power Automate 和 直接HTTP调用:
| 设置 | 值 |
|---|---|
| 基本URL | https://your-server.com |
| OpenAPI规范 | https://your-server.com/openapi-3.0.json |
| 文件 | https://your-server.com/docs |
REST端点:
POST /api/hot-threads-获取热门帖子POST /api/post-content-获取带有评论的帖子POST /api/topic-latest-按主题获取帖子POST /api/front-page-获取头版帖子POST /api/subreddit-posts-by-time-按时间获取热门帖子POST /api/subreddit-new-posts-获取新帖子POST /api/subreddit-rising-posts-获得上升职位POST /api/subreddit-info-获取subreddit信息GET /api/topics-列出可用主题
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
REDDIT_CLIENT_ID |
是 | Reddit应用程序客户端ID |
REDDIT_CLIENT_SECRET |
是 | Reddit应用程序客户端机密 |
REDDIT_REFRESH_TOKEN |
是 | Reddit OAuth刷新令牌 |
MCP_API_KEY |
没有用于MCP端点身份验证的 | API密钥 |
主题类别
服务器包括预定义的主题类别 list.txt:
- 编程
- 科技新闻
- AI/ML
- 游戏
- 科学
- 还有更多。..
编辑 list.txt 自定义主题到subreddit的映射。
更新部署
# Rebuild image
az acr build --registry $ACR_NAME --image mcp-reddit:latest --file Dockerfile.azure .
# Force new revision
az containerapp update \
--name mcp-reddit-server \
--resource-group $RESOURCE_GROUP \
--image $ACR_NAME.azurecr.io/mcp-reddit:latest \
--set-env-vars FORCE_UPDATE="$(date +%s)"
清理
# Delete all Azure resources
az group delete --name mcp-reddit-rg --yes --no-wait
致谢
这个项目最初的灵感来自 mcp reddit 通过 adhikasp,教我们如何通过MCP与Reddit API接口。随着时间的推移,该项目大大超出了原来的范围——添加了完整的REST API、跨子版块的主题聚合、Azure部署,并从2个工具扩展到8个——并成为了自己的独立项目。
许可证
AGPL-3.0许可证-请参阅 许可证 了解详情。
