Reddit MCP Buddy について
Reddit MCP Buddyは、AIアシスタントがRedditの投稿、コメント、ユーザーの活動を調べるためのMCPサーバーです。利用可能な場合は公開RSSで匿名閲覧でき、検索や詳細データには承認済みのReddit APIアクセスが必要です。投稿ツールは任意で有効にできます。
主な機能
- 01サブレディットの投稿を閲覧
- 02Redditの投稿を検索
- 03投稿のコメントを取得
- 04ユーザーの活動を分析
- 05任意の投稿・コメントツール
- 06RSS閲覧とローカルレート制限
活用シーン
- 01人気のサブレディット投稿を確認
- 02Reddit検索で議論を調査
- 03投稿コメントとユーザー履歴を確認
- 04任意のツールで投稿を作成・送信
MCP 対応
MCPクライアントにRedditの閲覧、検索、投稿詳細、ユーザー分析、用語説明のツールを提供します。有効化すると投稿ツールも利用でき、RSS閲覧は利用可能な場合に認証情報なしで行えますが、検索などのAPIデータには承認済みアクセスが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| subreddit | string | はい | r/ プレフィックスを含まない subreddit 名です。特定の subreddit(例:"technology")、Reddit 全体の投稿には "all"、デフォルトの subreddit 全体のトレンド投稿には "popular" を指定します。 |
| sort | enum | いいえ | hot | new | top | rising | controversial |
| time | enum | いいえ | hour | day | week | month | year | all |
| limit | number | いいえ | デフォルトは 25、範囲は (1-100) です。ユーザーが指定した場合にのみ変更してください。 |
| include_nsfw | boolean | いいえ | |
| include_subreddit_info | boolean | いいえ | 購読者数や説明などの subreddit メタデータを含めます。Reddit の認証情報が必要です。RSS にフォールバックして匿名で閲覧する場合は通知なしで省略されます。 |
詳細
Reddit MCP Buddy
Claude Desktop と AI アシスタント向けの Reddit ブラウザー
Reddit の閲覧、投稿の検索、ユーザーのアクティビティ分析に対応した Model Context Protocol (MCP) サーバーです。匿名での閲覧には、利用可能な場合に Reddit の公開 RSS フィードを使用します。検索、コメント、ユーザー分析、詳細な指標には、承認済みの Reddit API アクセスが必要です。バージョン 1.2.0 では、プロセスごとの上限とクライアント依存の確認フローを備えた、オプションの投稿機能とコメント機能が追加されました。投稿をご覧ください。
🎬 動作を見る

Claude が Dune Part Three の予告編に対する Reddit の反応と、AirPods Max 2 が 549 ドルの価値があるかどうかを確認しています

Claude が r/cscareerquestions と r/india における H-1B ビザの変更に関するリアルタイムの感情を分析しています
目次
- Reddit MCP Buddy の特長
- クイックスタート
- できること
- 利用可能なツール
- 認証
- 投稿(v1.2.0)
- インストール方法
- 他のツールとの比較
- トラブルシューティング
- 開発
- サポート
- 関連リソース
Reddit MCP Buddy の特長
- 🚀 匿名での閲覧 - 利用可能な場合、公開 RSS フィードを通じてサブレディットを閲覧できます。他のライブデータツールでは承認済みの API アクセスが必要です
- ✍️ オプトインでの投稿(v1.2.0) - クライアント依存の確認フロー、プロセスごとの上限、重複抑制機能を備え、投稿とコメントを作成できます
- ⚡ ローカルレート制限 - 1 分あたり 10/60/100 リクエストの上限を設定できます。Reddit 独自の制限も適用されます
- 🎯 クリーンなデータ - 偽の「感情分析」やでっち上げの指標はありません
- 🧠 LLM に最適化 - Claude のような AI アシスタント向けに特化して構築されています
- 📦 TypeScript - 完全な型付けにより、信頼性と保守性を確保しています
- ✅ レート制限テスト - サーバーのローカル認証ティアを検証するツールを備えています
クイックスタート(30 秒)
Claude Desktop の場合 - デスクトップ拡張機能(最も簡単!)
- ダウンロード:reddit-mcp-buddy.mcpb
- インストール:ダウンロードしたファイルを開きます
- 完了! Reddit ツールが Claude で利用できるようになります
Claude Desktop の場合 - NPM 方式(代替方法)
以下を claude_desktop_config.json に追加します。
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "reddit-mcp-buddy"]
}
}
}
Claude Code の場合
次のコマンドを実行して、ユーザースコープで MCP サーバーを追加します。
claude mcp add --transport stdio reddit-mcp-buddy -s user -- npx -y reddit-mcp-buddy
その他の MCP クライアントの場合
NPM 方式を使用します:npx -y reddit-mcp-buddy
できること
AI アシスタントに次のように依頼できます。
- 📊 「Redditで今話題のものは?」 - r/all の人気投稿を閲覧
- 🔍 「AIに関するディスカッションを検索して」 - すべてのサブレディットを横断して検索
- 💬 「このReddit投稿のコメントを取得して」 - すべてのコメントスレッドを含む投稿を取得
- 👤 「ユーザー spez を分析して」 - ユーザーの履歴、カルマ、アクティビティを取得
- 📚 「Redditのカルマについて説明して」 - Redditの用語を理解
- ✍️ 「これを r/test に投稿して」 - 下書きを作成し、サブレディットのルールを確認して、確認後に送信(オプトイン。詳しくは投稿を参照)
利用可能なツール
browse_subreddit
並べ替えオプションを指定して、任意のサブレディットの投稿を閲覧します。
- Subreddit:
- "all" - entire Reddit frontpage
- "popular" - trending across Reddit
- Any specific subreddit (e.g., "technology", "programming", "science")
- Sort by: hot, new, top, rising, controversial
- Time range: hour, day, week, month, year, all (for top/controversial sort)
- Include subreddit info: Optional flag for subreddit metadata (requires credentials)
認証情報がありませんか? 結果はRedditの公開RSSフィード(
data_source: "rss")から提供されます。score、num_comments、upvote_ratio、nsfwはnullになり、include_nsfwフィルターは適用できません。API経由ですべてのデータを取得するには、認証情報を追加してください(認証)。
search_reddit
Reddit全体または特定のサブレディットを検索します。
- Query: Your search terms
- Filter by: subreddit, author, time, flair
- Sort by: relevance, hot, top, new, comments
get_post_details
すべてのコメントを含む投稿を取得します。
- Input:
- Reddit URL (supports multiple formats), OR
- Post ID alone (will auto-detect subreddit, 2 API calls), OR
- Post ID + subreddit (most efficient, 1 API call)
- Supported URL formats:
- reddit.com, www.reddit.com
- old.reddit.com, new.reddit.com
- np.reddit.com (No Participation links)
- m.reddit.com (mobile links)
- redd.it short URLs
- URLs with query params (?utm_source=...) or fragments (#comment)
- Options: comment sorting, depth, link extraction
user_analysis
Redditユーザーのプロフィールを分析します。
- Username: Any Reddit user
- Returns: karma, posts, comments, active subreddits
reddit_explain
Reddit用語の説明を取得します。
- Terms: karma, cake day, AMA, ELI5, etc.
書き込みツール(オプトイン)
create_post、add_comment、subreddit_rules は投稿を有効にした場合にのみ表示されます。読み取り専用でインストールした場合は、上記の5つのツールだけが表示されます。詳しくは投稿(v1.2.0)を参照してください。
認証(任意)
検索、投稿の詳細、ユーザー分析、およびすべてのメトリクスを利用するには、承認済みのアプリとユースケースに対するReddit API認証情報が必要です。
Reddit APIの承認
RedditのResponsible Builder Policyでは、APIを使用する前に明示的な承認が必要です。アプリを作成しても、アクセスが保証されるわけではありません。Redditは、まず開発者にDevvitを利用するよう案内しています。Devvitがサポートしていないユースケースについては、RedditのAPIアクセス申請フォームを利用してください。
すでに承認済みのアクセス権がある場合は、以下にアプリの認証情報を入力してください。このプロジェクトでは承認を付与したり、承認までの期間を保証したりすることはできません。また、共有APIキーやサードパーティのOAuthサービスも提供していません。
認証情報がなくても、browse_subreddit は公開RSSフィードを利用でき、reddit_explain はオフラインで動作します。RSSはブロックまたはスロットリングされる場合があり、エンゲージメントのメトリクスやNSFWフラグは提供されません。また、検索、投稿の詳細、ユーザー分析は利用できず、APIの承認も得られません。
セットアップ手順
- 上記のリンクを使用して、アプリとユースケースについてReddit APIの承認を取得します。
- https://www.reddit.com/prefs/apps を開き、承認済みのアプリを選択します。Redditからアプリの作成を指示された場合は、その指示に従ってください。
- フォームに入力します。
- 名前:例:「mcp-buddy」。Redditは「reddit」を含むクライアント名を拒否します。
- アプリの種類:パスワードグラント認証には 「script」、リフレッシュトークンを使用するOAuth同意には 「web app」 を選択します。アプリのみのモードでは、どちらもサポートされています。
- 説明:任意
- About URL:空欄のままにします
- リダイレクトURI:登録済みのOAuthコールバック。例:
http://localhost:8080。パスワードグラント認証では使用されません。
- Redditの指示に従ってアプリの登録を完了します。作成できない場合は、Redditのアクセス申請プロセスを通じて問い合わせてください。
- 認証情報を確認します。
- Client ID:アプリ名と種類の下に表示されている文字列
- Client Secret:シークレット文字列
- Claude Desktopの設定を更新します。
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "reddit-mcp-buddy"],
"env": {
"REDDIT_CLIENT_ID": "your_client_id",
"REDDIT_CLIENT_SECRET": "your_client_secret",
"REDDIT_USERNAME": "your_username",
"REDDIT_PASSWORD": "your_password"
}
}
}
}
OAuth の同意が必要なウェブアプリ
承認済みのウェブアプリは、Reddit のパスワードを使わずにユーザーを認証できます。登録済みのリダイレクト URI と、コールバックで検証するランダムな state 値を使用して Reddit の認可コードフローを完了し、duration=permanent を指定してリフレッシュトークンを取得します。読み取り専用ツールには identity、read、history をリクエストしてください。各エンドポイントで必要なスコープは、Reddit のAPI リファレンスに記載されています。
サーバーの環境変数に次の変数を設定します。
{
"REDDIT_CLIENT_ID": "your_client_id",
"REDDIT_CLIENT_SECRET": "your_client_secret",
"REDDIT_REFRESH_TOKEN": "your_refresh_token"
}
リフレッシュトークンを使用する場合は、REDDIT_PASSWORD を設定しないでください。両方を設定すると、起動時に拒否されます。サーバーは必要に応じてリフレッシュトークンをアクセストークンと交換し、環境変数の認証情報を auth.json に書き込みません。そのファイルから読み込まれたリフレッシュトークンは使用されません。このモードは環境変数で設定してください。
リフレッシュトークンはパスワードと同様に扱ってください。バージョン管理の対象外に保管し、不要になったらReddit アプリの設定でアクセスを取り消してください。OAuth の同意によって Reddit API の承認が得られるわけではなく、承認済みのユースケースが拡張されるわけでもありません。
3 段階の認証システム
Reddit MCP Buddy では、次のローカル上限が適用されます。これらは Reddit API のクォータでも、保証された処理量でもありません。
| モード | ローカル上限 | 必要な認証情報 | 最適な用途 |
|---|---|---|---|
| 匿名 | 10 req/min* | なし | テスト、軽い利用 |
| アプリのみ | 60 req/min | クライアント ID + シークレット | 通常のブラウジング |
| 認証済み | 100 req/min | クライアント ID + シークレット、さらにリフレッシュトークンまたはユーザー名/パスワード | 大量利用、自動化 |
*サーバー側の上限です。匿名リクエストは、ログアウト状態の Reddit RSS フィードから提供されます。このフィードには、IP ごとに独自のより厳しいスロットリングが適用されます(キャッシュされていないリクエストは、多くの場合 25~60 秒に 1 回です)。15 分のキャッシュと自動再試行でこれをかなり吸収できますが、匿名で継続的にブラウジングする場合、実質的な速度は 10 req/min より遅くなります。
仕組み:
- 匿名モード:デフォルトのモードで、セットアップは不要です。利用できるのは
browse_subreddit(およびオフラインのreddit_explain)のみです。Reddit はログアウト状態での JSON API をブロックするため、ブラウジング結果は Reddit の公開 RSS フィード(data_source: "rss")から取得され、エンゲージメント指標と NSFW フラグはnullになります。残りのツールには認証情報が必要です。 - アプリのみモード:OAuth2 のクライアント認証情報グラントを使用します(スクリプトアプリとウェブアプリの両方で動作します)。
- 認証済みモード:承認済みウェブアプリの OAuth2 リフレッシュトークン認証、またはスクリプトアプリのパスワードグラントを使用します。
重要な注意事項:
- クライアント認証情報を設定するとアプリのみモードが選択され、リフレッシュトークンまたはユーザー名/パスワードを設定するとユーザー認証が選択されます。
- リフレッシュトークンには、同意時に許可されたスコープが含まれます。スコープが不足していると、一部のツールが動作しない場合があります。
- ユーザー認証によってこのサーバーのローカル上限は変わりますが、Reddit のクォータが増えるわけではありません。
投稿(v1.2.0)
v1.2.0 以降、サーバーから投稿できるようになりました。ツールは 3 つあり、すべてオプトインです。
create_post- 1 つのサブレディットにテキストまたはリンクの投稿を送信します。機械的なルール(タイトルの上限、必須フレア、リンク投稿とテキスト投稿の可否)を確認し、ドライランとしてvalidate_only: trueをサポートします。確認の流れは、以下で説明するクライアントの機能によって異なります。add_comment- 同じ確認フローで、投稿にコメントするか、ID または URL を指定して特定のコメントに返信します。subreddit_rules- 読み取り専用です。サブレディットのルール、投稿要件、機能フラグ、フレアの選択肢を、キャッシュされた 1 回の呼び出しで取得するため、投稿前にサブレディットに合った下書きを作成できます。
想定されるワークフローは、まず subreddit_rules を呼び出し、次に create_post で validate_only: true を指定し、下書き全体と選択肢をユーザーと確認してから、同一のペイロードを送信することです。
投稿機能を有効にする
既存の認証情報の隣に REDDIT_BUDDY_WRITE を追加します。
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "reddit-mcp-buddy"],
"env": {
"REDDIT_CLIENT_ID": "your_client_id",
"REDDIT_CLIENT_SECRET": "your_client_secret",
"REDDIT_USERNAME": "your_username",
"REDDIT_PASSWORD": "your_password",
"REDDIT_BUDDY_WRITE": "true"
}
}
}
}
Claude Desktop 拡張機能のユーザー:代わりに、拡張機能の設定で Enable posting tools のトグルをオンにしてください。これは同じ REDDIT_BUDDY_WRITE 変数に対応します。
または、上記のウェブアプリの同意フローで取得した REDDIT_REFRESH_TOKEN を使い、REDDIT_PASSWORD を置き換えます。投稿には、許可されたスコープ identity、read、submit、flair が必要です。user_analysis も使う場合は、history を追加してください。リフレッシュトークンを使う場合、REDDIT_USERNAME は任意です。指定する場合は、Reddit から返されるアカウントと一致している必要があります。
認証情報は環境変数(または環境変数に変換される拡張機能の設定フィールド)から取得する必要があります。対話型の --auth ファイル設定では投稿機能は有効になりません。起動時に Reddit を通じてアカウントを検証し、許可されたスコープを確認します。要件が満たされていない場合、サーバーは理由をログに記録し、投稿ツールを無効のままにします。
安全性の仕組みを簡単に説明すると
投稿にはアカウントが使われます。サーバーは登録、レート制限、重複チェックを適用します。人間による承認は、クライアントにも左右されます。
- デフォルトでは無効です。
REDDIT_BUDDY_WRITEが設定されていない場合、書き込みツールは存在しません。読み取り専用のインストールでは、これまでと同じ5つのツールだけが表示され、余計なコンテキストも消費しません。 - stdio のみです。 HTTP トランスポートには認証がないため、書き込みツールはそこでの登録を拒否します。お使いのマシンやネットワーク上のプロセスが、HTTP エンドポイントを投稿プロキシに変えることはできません。
- 確認方法はクライアントによって異なります。 MCP elicitation に対応したクライアントでは、投稿先、アカウント、コンテンツのプレビュー、全文の長さ、投稿オプションを含む確認プロンプトが表示されます。このプロンプトでは明示的な承認が必要です。プレビューは省略されることがあるため、まずクライアントで下書き全文を確認してください。elicitation に対応していない場合、サーバーはプレビューまたは正常に完了したドライランの後、15分以内に同一のペイロードが送信されることを要求します。その繰り返しを人間が承認したかどうかは検証できません。承認は、クライアントのツールプロンプトとモデルが指示に従うかどうかに依存します。承認動作を信頼できるクライアントでのみ投稿機能を有効にしてください。
- 引き上げられない時間あたりの上限があります。 サーバーによって、1時間あたり最大5件の投稿、30件のコメント、書き込み間隔15秒に制限されます。環境変数で制限を厳しくすることはできますが、緩めることはできません。正直なところ、上限はサーバープロセス内で管理されます(再起動すると時間あたりのカウントはリセットされ、並列セッションにはそれぞれ別の上限が適用され、このオープンソースコードのフォークでは上限を削除できます)。これらは手軽な不正利用を割に合わなくするためのもので、断固とした運用者を止めるものではありません。
- 重複投稿を抑制します。 同一の送信を15分以内に再試行すると、二重投稿せずに元の投稿を返します。これには、同じサブ向けに同じ内容を再度下書きした場合も含まれます。同じ内容を別のサブレディットに投稿することは可能で、その場合は先行する投稿を明記した警告が表示されます。
- 送信後に検証します。 Reddit は AutoModerator が数秒後に削除する投稿にも「success」を返すことがあります。サーバーは送信後に再確認し、そのような場合は公開されたと伝えるのではなく、警告とともに
status: "filtered"を返します。 - 目立つ形でログに記録します。 許可された書き込みはすべて、種類、対象(判明している場合はサブレディット)、操作ユーザーとともに stderr に記録されます。
有効にする前にトレードオフを理解する
Reddit のパスワードグラントは、アカウント全体のスコープを持つトークンを返します。OAuth リフレッシュトークンには、同意時に許可された権限が含まれます。これらの権限は特定のサブレディットだけでなく、アカウント全体に適用されます。投稿機能が無効な場合、サーバーは認証情報を読み取りに使用します。投稿機能を有効にすると、投稿やコメントを送信できるようになります。パスワードとリフレッシュトークンはバージョン管理に含めず、共有マシンにも保存しないでください。
さらに、Reddit は上記の制限に加えて、アカウントの経過期間やカルマに基づくアカウント単位の投稿制限を適用します。Reddit が「N 分後に再試行してください」と表示した場合、サーバーはリクエストを繰り返し送るのではなく、待ち時間を伝えます。
プライバシーとデータの取り扱い
Reddit MCP Buddy は、プライバシーと透明性を重視して設計されています。データの取り扱いは次のとおりです。
データの収集
- Reddit API データ:サーバーは Reddit の公式 API を通じて、公開されている Reddit のコンテンツ(投稿、コメント、ユーザープロフィール)を取得します
- トラッキングなし:分析、テレメトリー、使用状況データを収集、保存、送信することはありません
- 第三者なし:すべてのデータは、お使いのマシン、Reddit の API、AI アシスタントの間で直接やり取りされます
ローカルストレージ
- 認証情報(任意):
--authCLI セットアップを使用すると、~/.reddit-mcp-buddy/auth.jsonにローカル保存されます- パスワードがディスクに書き込まれることは決してありません。OAuth トークンの交換時にメモリー上でのみ使用されます
- 環境変数(Claude Desktop では推奨)は、このサーバーによって永続化されることはありません
- キャッシュデータ:
- パフォーマンス向上のため、Reddit API のレスポンスはメモリーに一時的にキャッシュされます
- キャッシュサイズは最大 50MB に制限されています
- サーバーの停止時にキャッシュデータはすべて消去されます
REDDIT_BUDDY_NO_CACHE=trueで無効にできます
データの送信
- Reddit API のみ:認証情報は Reddit の公式 OAuth エンドポイント(
https://oauth.reddit.comおよびhttps://www.reddit.com)にのみ送信されます - 外部サービスなし:その他の外部サービス、分析プラットフォーム、第三者にデータが送信されることはありません
- ローカル処理:すべてのデータ処理はお使いのマシン上でローカルに行われます
セキュリティに関する注意事項
- デフォルトでは読み取り専用:投稿には明示的なオプトインが必要です。有効にする前に、クライアント依存の確認フローを確認してください。
- 認証情報の安全性:
- OAuth トークンは自動的に更新され、メモリー上に保持されます。トークンが
~/.reddit-mcp-buddy/auth.jsonにキャッシュされるのは、--authCLI セットアップを使用した場合のみです(ファイルモードは 600) - クライアントシークレットは機密情報として扱われ、ログに記録されることはありません
- 最大限のセキュリティを確保するには、Claude Desktop の設定で環境変数を使用してください
- OAuth トークンは自動的に更新され、メモリー上に保持されます。トークンが
- オープンソース:セキュリティ監査のため、完全なソースコードを https://github.com/karanb192/reddit-mcp-buddy で公開しています
GDPR とプライバシーへの準拠
- 個人データの収集なし:Reddit の API での認証に必要な範囲を超えて、個人データを収集または処理することはありません
- ユーザーによる管理:認証情報はすべてご自身で管理でき、
~/.reddit-mcp-buddy/auth.jsonはいつでも削除できます - 消去する権利:認証ファイルを削除するか、サーバーをアンインストールするだけで、ローカルデータをすべて削除できます
ご質問やご懸念はありますか?
プライバシーに関するご質問やご懸念がある場合は、GitHub でイシューを作成してください。
テストと開発
レート制限のテスト
Reddit MCP Buddy には、認証が正しく機能していることを確認するための包括的なテストツールが含まれています。
# Clone the repository first
git clone https://github.com/karanb192/reddit-mcp-buddy.git
cd reddit-mcp-buddy
npm install
# Test with your current environment settings
npm run test:rate-limit
# Test specific authentication modes
npm run test:rate-limit:anon # Test anonymous mode (10 rpm)
npm run test:rate-limit:app # Test app-only mode (60 rpm)
npm run test:rate-limit:auth # Test authenticated mode (100 rpm)
レート制限テスターは次の処理を行います。
- ローカルサーバーインスタンスを起動します
- レート制限をテストするため、API リクエストを短時間に連続して送信します
- リアルタイムのプログレスバーを表示します
- 使用中の認証ティアを確認します
- レート制限が適用されるタイミングを正確に表示します
対話形式の認証セットアップ(ローカルテスト専用)
ローカルでの開発やテストでは、対話形式で認証をセットアップできます。
npx -y reddit-mcp-buddy --auth
Reddit アプリの認証情報を入力するよう求められ、認証情報はローカルに保存されます。注:これは Claude Desktop では機能しません。代わりに、Claude の設定で環境変数を使用してください。
プライベートサンドボックスへの投稿テスト
チェックアウトをビルドし、リクエストを送信せずに、実行予定のテストを表示します。
npm run build
REDDIT_TEST_SUBREDDIT=your_private_sub node tests/live-write.mjs
実際に実行するには、承認済みのアプリ、REDDIT_CLIENT_ID と REDDIT_CLIENT_SECRET、さらに REDDIT_REFRESH_TOKEN またはスクリプトアプリ用の REDDIT_USERNAME/REDDIT_PASSWORD の組み合わせが必要です。アカウントには、プライベートなテスト用サブレディットのモデレーター権限が必要です。OAuth の検証には、6 つすべてのスコープが必要です:identity、read、submit、flair、復旧用の history、クリーンアップ用の edit。ハーネスは、投稿クライアントに接続する前にこれらを確認します。認証情報はリポジトリの外に保管してください。--env-file に対応する Node のバージョンでは、ローカルの環境ファイルから認証情報を指定できます。
RUN_WRITE_TESTS=1 REDDIT_TEST_SUBREDDIT=your_private_sub \
node --env-file=/path/to/private.env tests/live-write.mjs --run
このコマンドは実際に書き込みを行います。実際の stdio MCP 接続を開始し、1 件の投稿リクエストを拒否し、テスト用の投稿を 1 件承認します。また、コメントのプレビュー後に、エリシテーション機能のないクライアントから同一のコメントを送信するテストも行います。ハーネスは確認応答を自動で返します。このコマンドを実行すると、これらのテストアクションが承認されます。投稿とコメントを 1 件ずつ作成して内容を検証した後、失敗した場合も含め、両方の削除を試みます。
一意のマーカーと、クリーンアップに失敗した場合はその内容が表示されるため、手動で確認できます。応答が失われた場合は、テストユーザーの最新の投稿とコメントを検索します。結果が特定できない場合や削除を検証できない場合、実行は失敗します。プロセスが強制終了された場合や Reddit を利用できない場合、クリーンアップは保証されません。通常のユニットテストではオフラインの API フィクスチャを使用し、通常の統合テストでは、明示的に有効化しない限り投稿をスキップします。
HTTP モードでのテスト
ターミナルからサーバーを直接テストするには:
# Run in HTTP mode on port 3000
npx -y reddit-mcp-buddy --http
# Or with custom port
REDDIT_BUDDY_PORT=8080 npx -y reddit-mcp-buddy --http
注: サーバーはデフォルトで stdio モード(Claude Desktop 用)で実行されます。Postman MCP または直接の API 呼び出しでテストするには、--http フラグを使用してください。
インストール方法
グローバルインストール
npm install -g reddit-mcp-buddy
reddit-buddy --http # For testing
ソースからインストール
git clone https://github.com/karanb192/reddit-mcp-buddy.git
cd reddit-mcp-buddy
npm install
npm run build
npm link
Docker を使用する
Docker イメージと CI ワークフローでは Node.js 26 を使用します。イメージをビルドして実行するには:
git clone https://github.com/karanb192/reddit-mcp-buddy.git
cd reddit-mcp-buddy
docker build --pull -t reddit-mcp-buddy .
docker run -it reddit-mcp-buddy
Docker、curl、jq をインストールした状態で、コンテナのスモークテストを実行します:
bash tests/test-docker.sh reddit-mcp-buddy
このテストでは、Reddit の認証情報を使わずに、コンテナのヘルス、MCP の初期化、ツールの検出、シャットダウンを確認します。
Claude Desktop 拡張機能
Claude Desktop にワンクリックでインストールするには、ビルド済みの拡張機能をダウンロードしてください:
📦 reddit-mcp-buddy.mcpb をダウンロード
インストール: ダウンロードした .mcpb ファイルを開くだけで、Claude Desktop が拡張機能を自動的にインストールします。Reddit ツールをすぐに利用できるようになります。
ソースからビルドする(任意)
拡張機能を自分でビルドする場合:
git clone https://github.com/karanb192/reddit-mcp-buddy.git
cd reddit-mcp-buddy
./scripts/build-mcpb.sh
注: ほとんどのユーザーには、クイックスタート(30 秒)に記載されている標準的な npm インストール方法をおすすめします。
他のツールとの比較
| 機能 | Reddit MCP Buddy | 他の MCP ツール |
|---|---|---|
| 匿名アクセス | RSS 閲覧。他のデータツールには承認済みの API アクセスが必要 | サーバーによって異なる |
| 言語 | TypeScript/Node.js | Python(ほとんど) |
| ツール数 | 5 件の読み取り+オプトインの書き込み 3 件 | 8〜10 件(重複あり) |
| 偽の指標 | ✅ 実データのみ | ❌「感情スコア」 |
| 検索 | ✅ 全機能の検索 | 制限あり、またはなし |
| キャッシュ | ✅ スマートキャッシュ | 通常なし |
| LLM 向け最適化 | ✅ 分かりやすいパラメーター | 分かりにくいオプション |
| レート制限のテスト | ✅ テスト用ツールを内蔵 | ❌ 検証なし |
レート制限
| モード | リクエスト数/分 | キャッシュ TTL | 必要な設定 |
|---|---|---|---|
| 匿名 | 10 | 15 分 | なし |
| アプリのみ | 60 | 5 分 | クライアント ID +シークレット |
| 認証済み | 100 | 5 分 | すべての認証情報 |
キャッシュ TTL はサブレディット一覧に適用されます。投稿の詳細(10 分)、検索結果(10 分)、ユーザープロフィール(15 分)には、すべてのモードで固定 TTL が適用されます。匿名モードのスループットは、Reddit 独自の IP ごとの RSS スロットリングによっても制限されます。キャッシュされていないリクエストでは、この制限は 10 件/分より厳しくなります。
Reddit MCP Buddy を選ぶ理由
他のツールにありがちな問題:
- ❌ 偽の指標 - キーワードを数えているだけの「感情スコア」
- ❌ 複雑なセットアップ - 使い始めるだけなのに API キーを要求する
- ❌ 冗長なレスポンス - Reddit の生の API から 100 個以上のフィールドを返す
- ❌ LLM との連携が不十分 - パラメーターが分かりにくく、説明も不明瞭
私たちが実現していること:
- ✅ 実データのみ - Reddit の API 由来でないデータを捏造しません
- ✅ 見やすいレスポンス - 重要なフィールドのみを返します
- ✅ 明確なパラメーター - LLM が何を送ればよいか正確に理解できます
- ✅ 高速かつキャッシュ対応 - 可能な場合、レスポンスを即座に返します
使用例
AI が次の質問に答えられるようになります:
「今日の GPT-4 に関する人気の投稿は?」
→ search_reddit with query="GPT-4", time="day", sort="top"
「テクノロジー分野で話題になっているものを見せて」
→ browse_subreddit with subreddit="technology", sort="hot"
「この記事について、人々はどう思っている?」
→ search_reddit with the article URL to find discussions
「ユーザー DeepFuckingValue を分析して」
→ user_analysis with username="DeepFuckingValue"
「この Reddit 投稿のコメントを取得して」
→ get_post_details with url="https://reddit.com/r/..."
「Reddit 全体で話題になっているものは?」
→ browse_subreddit with subreddit="all", sort="hot"
トラブルシューティング
よくある問題
「アプリを作成できない」または「API の承認が必要」
- Reddit の承認プロセスに従ってください。このプロジェクトではアプリの承認や Reddit の制限解除はできません
- Reddit が承認したアプリとユースケースにのみ、認証情報を使用してください
「毎分 100 リクエストを達成できない」
- 10/60/100 の各ティアは、このサーバーのローカル上限であり、Reddit から保証されるスループットではありません
- Reddit のレート制限レスポンスに従ってください。アカウントの認証情報を追加しても、Reddit が付与した割り当ては増えません
npm run test:rate-limit:appまたはnpm run test:rate-limit:authを実行すると、対応するローカルモードを確認できます(リポジトリのクローンが必要です)
「コマンドが見つかりません」エラー
# Ensure npm is installed
node --version
npm --version
# Try the full global-bin path
$(npm prefix -g)/bin/reddit-mcp-buddy
ブラウジングは動作するが、検索/コメント/ユーザー分析が失敗する
- 認証情報がない場合に使えるのは、
browse_subreddit(Reddit の公開 RSS フィードから提供され、スコアやコメント数は含まれません)とオフラインのreddit_explainのみです - 匿名でのブラウジングでも Reddit 独自の RSS レート制限(HTTP 429)に達することがあります。サーバーは自動で再試行しますが、制限が継続すると失敗する場合があります
- 解決策:Reddit の認証情報を追加してください(認証を参照)
レート制限エラー
- ローカル上限:認証なしの場合は毎分 10 リクエスト、アプリの認証情報がある場合は 60 リクエスト、完全な認証がある場合は 100 リクエスト
- Reddit では API と RSS に別々の制限が適用されます。サーバーは一時的な失敗を再試行しますが、制限が継続すると失敗する場合があります
- リクエスト頻度を下げ、Reddit のレート制限レスポンスに従ってください
- エラーに
Retry in Nsと表示された場合は、再試行する前にその時間だけ待ってください。サーバーは、クライアントのリクエストタイムアウトを超えて待機するのではなく、上流側の待機時間が長い場合は即座に返します。
書き込みツールが表示されない
- 次のすべてを満たす必要があります:
REDDIT_BUDDY_WRITE=true、クライアント認証情報とリフレッシュトークン、または環境変数でのユーザー名/パスワード、stdio トランスポート、検証済みのユーザー ID、identity/read/submit/flairスコープの付与 - 起動ログ(stderr)には、失敗した条件が正確に示されます
--authファイルを使った設定では書き込みできません。パスワードは保存されないため、再起動後はアプリ専用トークンに戻ります。認証情報を MCP クライアント設定のenvブロックに移してください- HTTP モードでは、設計上、書き込みツールは登録されません(HTTP エンドポイントには認証がありません)
「サブレディットが見つかりません」
- スペルを確認してください(大文字と小文字は区別されません)
- 非公開または隔離状態のサブレディットもあります
- 代わりに「all」または「popular」を試してください
接続の問題
- Reddit が停止している可能性があります(https://www.redditstatus.com を確認してください)
- ファイアウォールによってリクエストがブロックされている可能性があります
- MCP サーバーを再起動してみてください
環境変数
認証変数
| 変数 | 説明 | 必須 | レート制限 |
|---|---|---|---|
REDDIT_CLIENT_ID | Reddit アプリのクライアント ID | いいえ | ローカル上限:60 リクエスト/分(シークレット併用時) |
REDDIT_CLIENT_SECRET | Reddit アプリのシークレット | いいえ | ローカル上限:60 リクエスト/分(ID 併用時) |
REDDIT_USERNAME | Reddit アカウントのユーザー名 | いいえ | ローカル上限:100 リクエスト/分(4 つすべて併用時) |
REDDIT_PASSWORD | Reddit アカウントのパスワード | いいえ | ローカル上限:100 リクエスト/分(4 つすべて併用時) |
REDDIT_REFRESH_TOKEN | OAuth リフレッシュトークン。パスワードは未設定にしてください | いいえ | クライアント ID とシークレット併用時、ローカル上限:100 リクエスト/分 |
REDDIT_USER_AGENT | カスタムユーザーエージェント文字列(認証情報が設定されている場合に適用) | いいえ | - |
サーバー設定
| 変数 | 説明 | デフォルト |
|---|---|---|
REDDIT_BUDDY_HTTP | stdio の代わりに HTTP サーバーとして実行します | false |
REDDIT_BUDDY_PORT | HTTP サーバーのポート(HTTP=true の場合) | 3000 |
REDDIT_BUDDY_HOST | HTTP サーバーがバインドするインターフェース | 127.0.0.1 |
REDDIT_BUDDY_ALLOWED_ORIGINS | HTTP エンドポイントへの呼び出しを許可するブラウザーのオリジン(カンマ区切り) | なし |
REDDIT_BUDDY_ALLOWED_HOSTS | Host ヘッダーで受け入れる host:port 値(カンマ区切り、DNS リバインディング対策) | localhost にバインドする場合はループバック値 |
REDDIT_BUDDY_NO_CACHE | キャッシュを無効にします(常に最新データを取得) | false |
投稿(v1.2.0)
| 変数 | 説明 | デフォルト |
|---|---|---|
REDDIT_BUDDY_WRITE | 投稿ツールを登録します。環境変数でのユーザー認証情報、検証済みの ID とスコープ、および stdio が必要です | false |
REDDIT_BUDDY_MAX_POSTS_PER_HOUR | 1 時間あたりの投稿数。1~4 の値のみ有効です(0 と無効な値は無視されます) | 5 |
REDDIT_BUDDY_MAX_COMMENTS_PER_HOUR | 1 時間あたりのコメント数。1~29 の値のみ有効です(0 と無効な値は無視されます) | 30 |
REDDIT_BUDDY_MIN_WRITE_INTERVAL_S | 書き込み間隔(秒)。15 を超える値のみ有効です | 15 |
3 つのレート制限下限値は、組み込みの上限を厳しくする場合にのみ有効です。デフォルトより緩い値を設定しても意図的に何も変わらず、0 は「投稿を一時停止する」という意味ではありません。デフォルトの上限が適用されます。
HTTP モードには認証がありません。 localhost にバインドされるため、このマシンからのみアクセスでき、ループバック範囲外の Host ヘッダーは拒否されます。
REDDIT_BUDDY_HOST=0.0.0.0を設定するとネットワーク全体に公開されるため、信頼できるネットワーク上でのみ使用してください(意図的に設定される Docker 内部など)。ループバック以外にバインドする場合、クライアントがコンテナーの IP アドレスやサービス名を使って正当にアクセスするため、デフォルトでは Host チェックは無効です。制限するにはREDDIT_BUDDY_ALLOWED_HOSTSを設定してください。ブラウザーからのリクエストは、オリジンがREDDIT_BUDDY_ALLOWED_ORIGINSに記載されていない限り拒否されます。Postman などのブラウザー以外のクライアントには影響しません。
HTTP および HTTPS プロキシ
22.x 系の Node 22.21.0 以降、または Node 24 以降では、サーバーを起動する前に Node の組み込みプロキシサポートを有効にしてください。このプロジェクトの Node 26 Docker イメージはこの機能に対応しています。まず node --version を確認してください。サポートされていないバージョンでは、これらの設定が無視され、直接接続されることがあります。Node は現在、この機能を開発中として扱っています。
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "reddit-mcp-buddy"],
"env": {
"NODE_USE_ENV_PROXY": "1",
"HTTP_PROXY": "http://proxy.example.com:8080",
"HTTPS_PROXY": "http://proxy.example.com:8080",
"NO_PROXY": "localhost,127.0.0.1"
}
}
}
}
HTTP_PROXY は HTTP リクエストを、HTTPS_PROXY は Reddit API や RSS の呼び出しを含む HTTPS リクエストをプロキシ経由にします。NO_PROXY は一致するホストを除外します。CLI で使う場合はシェルでこれらの変数をエクスポートするか、Docker の -e オプションで渡してください。起動前にプロセス環境に設定してください。サーバーはプロジェクトの .env ファイルを自動的には読み込みません。
Docker 内では、localhost はコンテナを指します。Docker Desktop では、ホスト上で実行されているプロキシに接続するために host.docker.internal を使用してください。
プロキシ認証情報は、http://username:[email protected]:8080 のようにプロキシ URL に含めることができます。この値は認証情報として扱い、共有するログや設定から削除してください。プライベート認証局を使用するネットワークでは、TLS 検証を無効にする代わりに、組織の PEM 証明書ファイルを指定して NODE_EXTRA_CA_CERTS を使用してください。
Node のプロキシおよび証明書の設定ガイドを参照してください。プロキシサポートはネットワークトラフィックを経由させる機能であり、Reddit API の承認を得たり、Reddit のアクセスルールを回避したりするものではありません。
技術的な詳細
スマートキャッシュシステム
Reddit MCP Buddy には、パフォーマンスを向上させ、API 呼び出しを減らすインテリジェントなキャッシュ機能が含まれています。
- メモリ安全:上限を 50MB に設定しているため、システムのパフォーマンスに影響しません
- コンテンツごとの TTL:投稿の詳細(10 分)、ユーザープロフィール(15 分)、検索結果(10 分)。サブレディットの一覧にはモードのデフォルト値が適用されます(匿名の場合は 15 分、認証情報がある場合は 5 分)
- LRU による削除:上限に近づくと、最も使用頻度の低いデータを自動的に削除します
- ヒット数の追跡:実際の使用パターンに基づいてキャッシュを最適化します
これにより、最小限のシステムリソースで、応答が速くなり、Reddit のレート制限内に余裕を持って収まります。
開発
# Install dependencies
npm install
# Run in development
npm run dev
# Build
npm run build
# Run tests
npm test # Unit tests
npm run test:integration # Integration tests
npm run test:all # All tests
# Test rate limits
npm run test:rate-limit # Test with current environment
npm run test:rate-limit:anon # Test anonymous mode (10 rpm)
npm run test:rate-limit:app # Test app-only mode (60 rpm)
npm run test:rate-limit:auth # Test authenticated mode (100 rpm)
# Lint
npm run lint
# Type check
npm run typecheck
要件
- Node.js >= 18.0.0
- npm または yarn
- TypeScript 5.5+
コントリビューション
PR を歓迎します!ガイドラインについては CONTRIBUTING.md をご覧ください。
シンプルさを大切にしています。
- 偽の分析機能を使わない
- クリーンで型付けされたコード
- 明確なドキュメント
- 速い応答
サポート
- 🐛 バグを報告
- 💡 機能をリクエスト
- ⭐ GitHub でスターを付ける
🔗 関連リソース
MCP 公式リソース
- MCP Registry - MCP サーバーの公式レジストリ
- MCP Specification - Model Context Protocol の公式仕様
- MCP TypeScript SDK - このサーバーの構築に使用されている SDK
- MCP Servers Repository - MCP サーバーの公式実装集
- Awesome MCP Servers - コミュニティが選定した MCP サーバーの一覧
このサーバーの掲載先
- MCP Registry API Link - このサーバーを直接 API で検索
- MCP Registry Search - 「reddit」を検索してすべてのバージョンを表示
- NPM Package - npm/npx でインストール
- GitHub Repository - ソースコードと課題
API で全バージョンを表示
# Get all versions of reddit-mcp-buddy from the registry
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=reddit-mcp-buddy" | jq
# Get just names, version numbers, and latest flag
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=reddit-mcp-buddy" | \
jq '.servers[] | {name: .server.name, version: .server.version, isLatest: ._meta."io.modelcontextprotocol.registry/official".isLatest}'
ライセンス
MIT - 自由にお使いください!
MCP コミュニティのために ❤️ を込めて作りました。ベンチャーキャピタルの資金も、トラッキングもありません。あるのは優れた MCP サーバーだけです。
karanbansal.in の AI 部門責任者、Karan Bansal が開発しました。Claude Code、MCP、そして本番環境でのエージェント型 AI について、karanbansal.in/blog で記事を書いています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。