Reddit Research MCP
Reddit Research MCP
Reddit を 読むだけ の MCP サーバー。 「自分が自然に役に立てる会話」を探して整理するところまでを担当し、 投稿は必ず人間が Reddit の UI で行う。
このサーバーは Reddit へ 書き込まない。投稿・コメント・編集・削除・投票・DM 送信・ フォローの経路をコードとして持たない。ブラウザ自動操作も HTML スクレイピングもしない。 方針ではなく、実装とテストで固定してある。
なぜそう作ったかは docs/DESIGN.md。
状態: v0.1。実際の Reddit へは 1 リクエストも送っていない。 MCP ツール 13 本・OAuth・rate limiter・SQLite・スコアリング・digest まで実装済み。 テストはすべてモックの Reddit に対して通っている。
実接続していないのは、Reddit の API 利用に事前の承認が要るため(下記)。
規約について(先に読む)
このリポジトリは「Reddit の規約上、この使い方が許されている」とは主張しない。
2026-09-08 時点で、Reddit の Responsible Builder Policy は次のように定めている:
"Approval is required: You must request access and get explicit approval before accessing any Reddit data through our API" / "This policy applies to everyone"
/prefs/apps からの自己申請では通らない。チケットでの申請が必要である。
商用目的での利用には、さらに別の書面での permission が要る。
承認を得るまで、実際の Reddit へ接続しないこと。 テストはモックに対して回るので、待つあいだも開発はできる。
何をするか
自分の活動を読む(貢献と自己宣伝の比率を出すため)
決められたサブレディットだけを検索し、答えられそうな質問を拾う
サブレディットの規約を読む。判定できなければ
unknownのままにする「製品に触れずに有益な回答が成立するか」を最大の重みにして並べる
1 日分の候補として、方針と材料を返す
返すのは方針と材料まで。そのまま貼れるコメント本文は返さない。
動かす
python -m venv .venv
.venv/Scripts/activate # Windows。POSIX なら .venv/bin/activate
pip install -e ".[dev]"
pytestPython 3.14 / mcp 2.2 / httpx / pydantic v2 / 標準の sqlite3 / keyring。
config.yaml が無い状態でもテストは通る。
tests/conftest.py が tests/fixtures/data/ の作り物へ切り替えるため。
自分の設定を作る
cp config.example.yaml config.yaml
cp data/product.example.yaml data/product.yaml
cp .env.example .env # REDDIT_CLIENT_ID などを埋めるdata/subreddits.yaml と data/expertise.yaml は同梱していない(下記)。
形は tests/fixtures/data/ を参考にすること。
Reddit の認可(承認を得たあと)
python -m reddit_research_mcp.auth --status
python -m reddit_research_mcp.authinstalled app として登録し、redirect URI は http://localhost:8765/callback。
refresh token は OS の資格情報ストア(keyring)へ入る。.env には置かない。
MCP サーバーとして起動
python -m reddit_research_mcp.serverReddit の認証が無くても、policy_status と product_* は応答する。
同梱していないもの
運用に使うデータは含まれない。個人の一次情報だからである。
含まれない | 何か |
| どこで貢献してよいか(role 付きのサブレディット表) |
| 本人が一次情報として持っている知識 |
| 製品の事実(既定では返らない) |
| 実機で確認する手順 |
| 運用の設定と資格情報 |
雛形と、テスト用の作り物(tests/fixtures/data/)は入っている。
中身の地図
src/reddit_research_mcp/
├── server.py MCP ツール 13 本。ここに業務ロジックを書かない
├── policy.py 安全境界の純関数。Reddit に触らない。門はすべてここ
├── logs.py 秘密情報を伏せるロガー
├── auth.py 初回の認可 CLI
├── config/ 設定とデータの読み込み。不変条件はここで落とす
├── reddit/ API アクセス層。書き込み系をここに置かない
│ ├── client.py GET だけを出す。唯一の出口は get() / get_dict()
│ ├── oauth.py POST を出す唯一の場所(トークン交換のみ)
│ └── rate_limiter.py 全リクエストがここを通る
├── services/ データを判断の材料に変える
├── product/ ローカル知識。mode が never なら製品情報を返さない
└── storage/ SQLite と retention cleanup候補を出す経路は必ず policy.evaluate() を通る。
サービス側で独自の判定を足さない。
テスト
pytest # 全部
pytest tests/unit/test_safety.py # 安全境界だけ
ruff check src tests
mypytests/unit/test_safety.py は、書き込み経路・ブラウザ自動操作・
秘密情報の漏れ・レート制限の回避を、ソースを読んで機械的に検出する。
ここを緩める変更は、まずテストが落ちる。
運用データを検査する tests/unit/test_data_files.py は、
対象のファイルが無ければ skip される(緩めているのではなく、対象が無い)。
ライセンス
MIT。LICENSE を参照。
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Asynchronous-0x4C/reddit-research-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server