🚀 Reddit MCP Server
Model Context Protocol (MCP)サーバーです。このサーバーは、徹底的な調査と分析を目的とした3層アーキテクチャを通じて、大規模言語モデル(LLM)にRedditのコンテンツへの包括的なアクセスを提供します。FastMCPとPRAWを使用して構築されており、効率的なデプロイが可能です。
✨ 3層アーキテクチャ
このサーバーは、LLMによる包括的なReddit調査をガイドする独自の3層アーキテクチャを備えています。
第1層: 探索 (discover_reddit_resources)
- 複数の検索戦略を使用して、8 - 15の関連するコミュニティを見つけます。
- "クイック"と"包括的"の2つの探索モードをサポートします。
- 利用可能な操作と推奨されるワークフローを返します。
第2層: 要件 (get_operation_requirements)
- 詳細なパラメータスキーマと検証ルールを提供します。
- 調査ニーズに基づいたコンテキスト認識型の提案を行います。
- 各操作の使用時期に関する明確なガイダンスを提供します。
第3層: 実行 (execute_reddit_operation)
- パラメータを検証し、Redditの操作を実行します。
- 実行可能なヒントを含む包括的なエラーハンドリングを行います。
- 詳細なメタデータを含む構造化された結果を返します。
主な機能
- 複数コミュニティ対応:1つのワークフローで8 - 15のサブレディットを探索し、取得できます。
- インテリジェント探索:複数の検索戦略を使用して、包括的なカバレッジを実現します。
- 引用サポート:すべての結果にRedditのURLを含め、適切な引用を可能にします。
- 効率最適化:バッチ操作により、API呼び出しを70%以上削減します。
- 調査指向:コメントの深さを考慮した徹底的な分析に最適です。
- MCPリソース:人気のサブレディット、サブレディット情報、およびサーバーの機能にアクセスできます。
🚀 クイックスタート
前提条件
- Python 3.11以上
- Reddit APIの認証情報(ここから取得)
- https://www.reddit.com/prefs/apps にアクセスします。
- "Create App"または"Create Another App"をクリックします。
- アプリのタイプとして"script"を選択します。
client_id("personal use script"の下に表示されます)と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接続を受け付ける準備ができます。
Claude Codeとの統合
このReddit MCPサーバーをClaude Codeと一緒に使用するには、以下の手順でClaude CodeのMCP設定に追加します。
前提条件
uvがインストールされており、サーバーがローカルで正常に動作していることを確認します。
- プロジェクトディレクトリで
uv run src/server.pyを実行して、サーバーが正しく起動することをテストします。
インストール手順
重要: <PATH_TO_YOUR_PROJECT>をプロジェクトディレクトリの絶対パスに置き換えてください。
-
Claude CodeにMCPサーバーを追加します:
claude mcp add -s user -t stdio reddit-mcp-poc uv run fastmcp run <PATH_TO_YOUR_PROJECT>/reddit-mcp-poc/src/server.py
プラットフォーム別のパス例:
- macOS/Linux:
/home/username/projects/reddit-mcp-poc/src/server.py
- Windows:
C:\Users\username\projects\reddit-mcp-poc\src\server.py
-
インストールを確認します:
claude mcp list
reddit-mcp-pocが✓ Connectedのステータスでリストされていることを確認してください。
トラブルシューティング
"Failed to connect"のステータスが表示された場合:
一般的な問題:
- パスの切り捨て:改行なしで完全なパスをコピーすることを確認してください。
- コマンドが見つからない:
uvがインストールされており、PATHにアクセス可能であることを確認してください。
- サーバーが起動しない:Claude Codeに追加する前に、ターミナルで直接
uv run src/server.pyコマンドをテストしてください。
設定詳細:
- スコープ:ユーザーレベルの設定 (
-s user)
- トランスポート:STDIO (
-t stdio)
- サーバー名:
reddit-mcp-poc
🚀 包括的な調査のための推奨ワークフロー
最良の結果を得るために、この3層アーキテクチャを活用したワークフローに従ってください。
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が自動的に含まれるため、適切な引用が可能
- ⚡ インテリジェントなバッチ処理により、API呼び出しを70%削減
- 📝 包括的なコメント分析により、調査に適した形式で結果を提供
利用可能な操作
サーバーはexecute_reddit_operationを通じて、以下の操作でRedditにアクセスできます。
コア操作
| 操作 |
説明 |
最適なシナリオ |
search_all |
Reddit全体を検索します。 |
幅広いトピックの探索 |
search_subreddit |
特定のサブレディット内を検索します。 |
ターゲットとするコミュニティの検索 |
fetch_posts |
サブレディットから最新の投稿を取得します。 |
現在のトレンドや活動の把握 |
fetch_multiple |
⚡ 複数のサブレディットから一括取得 |
複数コミュニティの調査 |
fetch_comments |
完全な議論を含む投稿を取得します。 |
会話の深掘り分析 |
3層アーキテクチャツール
| ツール |
目的 |
使用時期 |
discover_reddit_resources |
関連するコミュニティと操作を見つけます。 |
常に最初に使用 |
get_operation_requirements |
詳細なパラメータスキーマを取得します。 |
複雑な操作の前に |
execute_reddit_operation |
任意のReddit操作を実行します。 |
要件を取得した後に |
MCPリソース
サーバーは、一般的に使用されるデータにアクセスするための3つのMCPリソースを提供します。
1. reddit://popular-subreddits
25の最も人気のあるサブレディットのリストを、加入者数と説明とともに返します。
2. reddit://subreddit/{name}/about
特定のサブレディットに関する詳細情報を取得します。以下の情報が含まれます:
- タイトルと説明
- 加入者数とアクティブユーザー数
- サブレディットのルール
- 作成日とその他のメタデータ
3. reddit://server-info
MCPサーバーに関する包括的な情報を返します。以下の情報が含まれます:
- 利用可能なツールとリソース
- バージョン情報
- 使用例
- 現在のレート制限の状態
💻 使用例
基本的な使用法
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
})
テスト
テストスイートを実行します:
uv run pytest tests/
プロジェクト構造
reddit-mcp-poc/
├── src/
│ ├── server.py # 3層アーキテクチャを持つメインの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実装には、意図的な制限がいくつかあります。
- 読み取り専用アクセス(投稿、コメント、投票はできません)
- ユーザー認証なし(アプリケーションのみの認証を使用)
- コメントの展開が制限されています("more comments"を取得しません)
- キャッシュなし(各リクエストは直接Reddit APIにアクセスします)
次のステップ
3層アーキテクチャを基盤として、以下の機能を追加する予定です。
- 強化されたLLMガイダンス:
get_operation_requirementsを強化し、より豊富なコンテキスト認識型の提案を提供します。
- 高度な分析機能:探索したコミュニティに感情分析やトレンド検出を追加します。
- キャッシュ層:探索したコミュニティと頻繁に使用するクエリに対して、インテリジェントなキャッシュを実装します。
- ユーザー認証:適切な認証を伴う書き込み操作(投稿、コメント)を追加します。
- 拡張された探索機能:時間ベースやアクティビティベースのコミュニティ探索モードを追加します。
- 調査テンプレート:一般的な調査パターンに対応した事前設定のワークフローを提供します。
- 引用ツール:RedditのURLから自動的に参考文献を生成する機能を追加します。
トラブルシューティング
| 問題 |
解決策 |
| "Reddit API credentials not found" |
.envファイルが存在し、有効な認証情報が含まれていることを確認します。 |
| レート制限エラー |
数分待ってください。PRAWが自動的にこれを処理します。 |
| "Subreddit not found" |
サブレディット名(r/プレフィックスなし)を確認します。 |
| 検索結果がない |
より広い検索用語や異なる時間フィルターを試してみてください。 |
| インポートエラー |
uv syncを実行して、すべての依存関係をインストールします。 |
📄 ライセンス
MIT
コントリビューション
コントリビューションは大歓迎です!プルリクエストを送信してください。