MCP Reddit Digest Server について
MCP Reddit Digest Serverは、Redditの投稿を要約してSlackに届けるFastAPIベースのMCPサーバーです。トピックまたは指定したsubredditから人気投稿を取得し、Azure OpenAIで要約してPDFにまとめます。
主な機能
- 01トピックや指定subredditから投稿を取得
- 02Azure OpenAIによる議論の要約
- 03subreddit別のMarkdown整理
- 04スタイル付きPDFレポートの作成
- 05Slackへのダイジェスト送信
- 06ダイジェスト配信のスケジュール設定
活用シーン
- 01AIやサイバーセキュリティの人気投稿を要約
- 02チーム向けの日次PDFダイジェスト作成
- 03指定subredditの定期的な確認
MCP 対応
トピックまたは指定subredditからRedditダイジェストを生成するMCPエンドポイントを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Reddit ダイジェストサーバー
FastAPI ベースの MCP(Model Context Protocol)サーバーです。Reddit のコンテンツを自動で取得、要約し、Slack に直接配信します。Azure OpenAI を使用して、選択したサブレディットの人気投稿を簡潔に要約し、整理された PDF レポートにまとめてチームと共有します。
✨ 特長
- 🔍 Reddit のスマート監視:トピック(AI、サイバーセキュリティ、プログラミング)別に人気投稿を取得するか、任意のサブレディットを指定できます
- 🧠 AI による要約:Azure OpenAI を使用して、長文の Reddit の議論を簡潔にまとめます
- 📝 見やすい Markdown 形式:サブレディットごとに投稿を整理した、構成の整ったダイジェストを生成します
- 📄 プロフェッショナルな PDF レポート:カスタム CSS を使って Markdown をスタイル付き PDF に変換します
- 🔔 Slack 連携:ダイジェストをチームの Slack チャンネルに自動配信します
- ⏱️ スケジュール配信:毎日または任意のスケジュールでダイジェストを自動配信するよう設定できます
- 🧩 モジュール式アーキテクチャ:新機能や連携を簡単に追加できます
MCPHub による認定:Reddit Digest - omendra02 MCP Server
前提条件
- Python 3.8+
- Reddit API の認証情報
- Azure OpenAI API へのアクセス
- ボット連携が設定された Slack ワークスペース
環境設定
プロジェクトのルートに .env ファイルを作成し、以下の変数を設定します。
# Reddit API
REDDIT_CLIENT_ID=your_client_id
REDDIT_CLIENT_SECRET=your_client_secret
REDDIT_USERNAME=your_username
REDDIT_PASSWORD=your_password
USER_AGENT=your_user_agent
# Azure OpenAI
AZURE_OPENAI_KEY=your_openai_key
AZURE_OPENAI_API_VERSION=your_api_version
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_OPENAI_DEPLOYMENT=your_deployment_name
# Slack
SLACK_BOT_TOKEN=your_slack_bot_token
SLACK_CHANNEL_ID=your_channel_id
インストール
# Clone the repository
git clone https://github.com/yourusername/mcp-reddit-digest.git
cd mcp-reddit-digest
# Install dependencies
pip install -r requirements.txt
# Start the server
uvicorn mcp_server.main:app --reload
🔧 使用方法
API エンドポイント
GET /- ヘルスチェック用エンドポイントPOST /mcp/hello- 接続を確認するためのテスト用エンドポイントPOST /mcp/reddit- トピック(ai、cybersecurity、tech update など)別にダイジェストを生成しますPOST /mcp/reddit/subreddit- 指定したサブレディットからダイジェストを生成します
リクエスト例
トピック別にダイジェストを生成する:
curl -X POST "http://localhost:8000/mcp/reddit" \
-H "Content-Type: application/json" \
-d '{"input": "ai"}'
特定のサブレディットのダイジェストを生成する:
curl -X POST "http://localhost:8000/mcp/reddit/subreddit" \
-H "Content-Type: application/json" \
-d '{"input": "MachineLearning, artificial, IndiaTech"}'
⚙️ 設定
スケジュール済みダイジェスト
このシステムでは、スケジュール済みダイジェストが実行されるよう設定されています。実行時刻を変更するには、scheduler.py を編集します。
# For production (runs daily at 9 AM)
scheduler.add_job(scheduled_reddit_digest, 'cron', hour=9, minute=0)
# For testing (runs every minute)
scheduler.add_job(scheduled_reddit_digest, 'interval', minutes=1)
トピックのマッピング
トピックとサブレディットのデフォルトのマッピングは reddit_fetcher.py で定義されています。必要に応じてマッピングを追加または変更してください。
TOPIC_SUBREDDITS = {
"tech update": ["technology", "technews", "IndiaTech", "developersIndia"],
"ai": ["MachineLearning", "ArtificialIntelligence", "Singularity", "artificial"],
# Add new mappings here
}
🔄 プロジェクト構成
mcp_server/
├── core/
│ ├── slack_notifiers.py # Slack integration
│ ├── summarizer.py # Azure OpenAI integration
│ └── utils.py # Helper functions
├── tools/
│ ├── hello_tool.py # Simple test tool
│ └── reddit_digest/ # Reddit digest functionality
│ ├── markdown_generator.py
│ ├── pdf_generator.py
│ ├── reddit_fetcher.py
│ ├── style.css # PDF styling
│ └── tool.py # Main digest logic
├── main.py # FastAPI application
├── mcp.json # Tool definitions
└── scheduler.py # Automated tasks
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。