stackexchange-mcp について
stackexchange-mcpは、AIアシスタント向けの読み取り専用MCPサーバーです。Stack Overflowなどを検索して質問と回答を取得し、デバッグや調査の根拠を提供します。
主な機能
- 01トピック、サイト、タグによる質問検索
- 02エラーメッセージからの検索
- 03質問と上位回答の取得
- 04タグと技術概要の参照
- 05APIクォータとレート制限の確認
活用シーン
- 01プログラミングエラーの高評価回答を探す
- 02Stack Exchangeの議論から手法を比較する
- 03技術に合った正確なタグを見つける
- 04サイトのタグを基に入門概要を作る
MCP 対応
MCPクライアントに検索、質問、タグ、クォータ、リソース、プロンプト機能を提供します。簡潔なMarkdown形式で、帰属表示の情報も返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| site | string | いいえ | Stack Exchange サイトのスラッグ。例:'stackoverflow' または 'serverfault'。 |
| sort | enum | いいえ | 結果の並び順。'votes' は評価の高い質問を優先します。relevance | votes | activity | creation |
| tags | any | いいえ | 結果を絞り込むための任意のタグ。例:['python', 'asyncio'](最大 5 個)。 |
| limit | integer | いいえ | 返す結果の数。 |
| query | string | はい | 検索するキーワード。例:'asyncio sleep vs time.sleep'。 |
| accepted_only | boolean | いいえ | 承認済みの回答がある質問のみを返します。 |
詳細
stackexchange-mcp
AI アシスタントが Stack Overflow やその他の Stack Exchange サイトを検索し、質問と最良の回答を読み、推測ではなく実際に投票された回答を根拠にデバッグを支援できる MCP サーバーです。
- **読み取り専用:**投稿、投票、編集は一切行いません。
- **モデルに適した出力:**短い要約、HTML ではなく Markdown、コードブロックを保持し、長い投稿はリンク付きで途中まで表示します。
- **API の利用制限を順守:**任意の API キー、バックオフ処理、リクエスト間隔の調整、再試行、キャッシュ、クォータ追跡に対応しています。
- **明確なエラー:**エラーが発生すると、その内容と次に試すことをモデルに伝えます。
Stack Exchange, Inc. とは提携していません。API から返されるコンテンツは、投稿に応じて CC BY-SA(3.0 または 4.0)のライセンスで提供されます。このサーバーは、アシスタントが適切に帰属表示できるよう、投稿者、リンク、ライセンスを返します。
提供機能
[project] name = "mcp-server" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "httpx>=0.28.1", "mcp[cli]>=1.0,<2", "pydantic>=2.14.2", ]
[dependency-groups] dev = [ "pytest>=9.2.0", ]
ツール
| ツール | 用途 |
|---|---|
search_questions | トピックについての議論を検索します。タグ、サイト、並べ替え順、承認済みの回答のみで絞り込めます。 |
get_question | 質問を 1 件、最良の回答(承認済みの回答が先頭)とともに読み込みます。 |
search_by_error_message | 貼り付けたエラーやスタックトレースに関連するスレッドを検索します。検索前にファイルパス、行番号、アドレスを取り除きます。 |
search_tags | 正確なタグ名を検索します(アシスタントがタグを推測しないようにします)。 |
get_tag_overview | 技術の概要、質問数、投票数の多い質問を取得します。 |
get_quota_status | 残りの API クォータと、現在適用中のレート制限による待機時間を確認します。 |
リソース
| URI | 内容 |
|---|---|
stackexchange://sites | site として指定できるサイトのスラッグ(24 時間キャッシュ)。 |
stackexchange://help/search-tips | 効果的な検索方法のガイダンス。 |
stackexchange://quota | 最新のクォータ情報(JSON)。 |
プロンプト
| プロンプト | 機能 |
|---|---|
debug_error | エラーを検索し、最良のスレッドを 2 件読み込み、リンク付きで考えられる修正方法を説明します。 |
compare_approaches | 高評価の議論を使って、2 つのアプローチを比較します。 |
tag_primer | 技術のタグをもとに、初心者向けの概要を作成します。 |
クイックスタート
1. 無料の API キーを取得する(推奨)
サーバーはキーなしでも動作しますが、匿名利用時のクォータは少なめです。API によると、キーなしでは 1 日あたり 300 リクエスト、キーありでは 10,000 リクエストです。Stack Apps でアプリを登録するとキーを取得できます。読み取り専用での使用に OAuth は必要ありません。
2. インストール
uv が必要です。サーバーは PyPI から直接実行できます。
uvx stackexchange-mcp
(これにより stdio サーバーが起動して待機状態になります。通常は、以下の設定のいずれかを使って AI アプリから起動します。)
3. AI アプリを接続する
アプリが uvx を見つけられない場合は、uvx のフルパスを使用してください(which uvx)。
VS Code(GitHub Copilot、エージェントモード) - .vscode/mcp.json:
{
"servers": {
"stackexchange": {
"type": "stdio",
"command": "uvx",
"args": ["stackexchange-mcp"],
"env": { "STACKEXCHANGE_KEY": "${input:se_key}" }
}
},
"inputs": [
{
"type": "promptString",
"id": "se_key",
"description": "Stack Exchange API key",
"password": true
}
]
}
Antigravity CLI - プロジェクト内の .agents/mcp_config.json(またはグローバル設定の ~/.gemini/config/mcp_config.json):
{
"mcpServers": {
"stackexchange": {
"command": "uvx",
"args": ["stackexchange-mcp"],
"env": { "STACKEXCHANGE_KEY": "your-key" }
}
}
}
agy を起動し、/mcp を実行して接続を確認してください。
Claude Code:
claude mcp add --env STACKEXCHANGE_KEY=your-key stackexchange -- uvx stackexchange-mcp
Claude Desktop(macOS/Windows)および Cursor - Antigravity と同じ JSON 形式(mcpServers)を、claude_desktop_config.json または ~/.cursor/mcp.json に設定します。
コミットするファイルにキーを保存しないでください。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
STACKEXCHANGE_KEY | なし | API キーです。1 日あたりのクォータが増加します。 |
SE_DEFAULT_SITE | stackoverflow | ツール呼び出しでサイトが指定されていない場合に使用するサイトです。 |
SE_CACHE_TTL_SECONDS | 300 | 同一のリクエストをキャッシュする期間です(0 にするとキャッシュが無効になります)。 |
SE_MAX_BODY_CHARS | 2000 | 返される質問または回答本文の最大文字数です。 |
レート制限とエラー
- キャッシュ期間内の同一リクエストでは、クォータを消費しません。
- API が
backoff値を返した場合、次の呼び出しの前にサーバーは指定された時間だけ待機します(最大 10 秒)。それを超える待機時間は、ブロックせずに通知されます。 - リクエストは少なくとも 0.2 秒間隔で送信されます。
- タイムアウト、ネットワークエラー、5xx レスポンスは、指数バックオフ(0.5 秒、次に 1 秒)で 2 回再試行されます。
- 1 日あたりのクォータを使い切ると、次の UTC 日になるまでサーバーは API を呼び出しません。
| 状況 | アシスタントに伝えられる内容 |
|---|---|
| 入力が無効(サイトやタグが不正) | 誤っているパラメーターと修正方法。 |
| 質問またはタグが見つからない | 削除されたか、別のサイトにある可能性があります。search_tags を使用してください。 |
| 検索結果がない | クエリを広げる、タグを削除する、または search_tags を使用してください。 |
| レート制限 | 待機する時間。 |
| クォータ超過 | STACKEXCHANGE_KEY を設定するか、1 日ごとのリセットを待ってください。 |
| API キーが無効 | STACKEXCHANGE_KEY を確認するか、設定を解除してください。 |
| Stack Exchange が利用できない | 通常は一時的な問題です。少し待ってから再試行してください。 |
API キーがログやエラーメッセージに書き込まれることはありません。
プロンプトの例
ツール名を指定する必要はありません。次のような場合、アシスタントはこのサーバーを使用します。
- 「
asyncio.sleepとtime.sleepの違いは何ですか? Stack Overflow で確認してください。」 - 「
AttributeError: 'NoneType' object has no attribute 'foo'が発生します。Stack Overflow で解決策を探してください。」(トレースバックを貼り付けてください) - 「pytest で非同期コードをテストするための Stack Overflow タグはありますか?」
- 「python-asyncio を使い始めたばかりです。Stack Overflow の情報をもとに概要を教えてください。」
- 「Server Fault で Docker ネットワークに関する最近の議論を探してください。」
テスト済み
各プロンプトの結果は TESTING.md に記載されています。
- Antigravity CLI: 接続して 6 つすべてのツールを一覧表示します。10 件のプロンプトを実行したところ、モデルは名前を伝えられなくても 9 件で期待されるツールを選択しました(1 件は再実行が必要です)。また、
site、sort、accepted_onlyなどの適切な引数を選択しました。無関係な質問ではツールを使用しませんでした。 - VS Code(Copilot エージェントモード): サーバーが起動し、6 つのツールが検出されます。ツール呼び出しの結果はまだ記録されていません。
- MCP Inspector: 接続してサーバーのツールを一覧表示します(リリース前にすべてのリソースとプロンプトを再確認してください)。
トラブルシューティング
- ログに「anonymous (low quota)」と表示される: キーがサーバーに届いていません。クライアントの設定の
envブロックにSTACKEXCHANGE_KEYを設定してください。 - コマンドが見つからない: 設定で
uvxの絶対パスを使用してください。 - VS Codeにツールが表示されない:
.vscode/mcp.jsonを含むワークスペースで、通常のCopilot Agent modeチャットセッションを使用してください。セッションの種類によっては、独自のサーバーリストが別に保持されています。 - アシスタントがツールを呼び出さない: 一度、「Stack Overflowで……を検索して」と明示的に依頼し、クライアントのツール一覧を確認してください。
- ログ: サーバーはログをstderrに書き込みます(プロトコルを伝送するstdoutには書き込みません)。VS Codeでは、出力パネルを開いてサーバーを選択してください。
開発
git clone https://github.com/YashLimbani/stackexchange-mcp
cd stackexchange-mcp
uv sync
uv run pytest -q
npx @modelcontextprotocol/inspector uv run stackexchange-mcp
テストにネットワーク接続は不要です。APIはsamples/に保存された実際のレスポンスを使用してモックされています。設計についてはDESIGN.mdを、協力方法についてはCONTRIBUTING.mdを参照してください。
ライセンス
コードはMITライセンスです(LICENSEを参照)。Stack ExchangeのコンテンツはCC BY-SAです。再利用する場合は、作者を明記し、リンクを記載してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。