devstack-mcp について
devstack-mcpは、開発者やMCPクライアント向けのリモートMCPアダプターで、DevStack APIの正規化されたパッケージ・レジストリデータを扱います。10個のツールで、パッケージ情報、依存関係、脆弱性、50以上のエコシステムを横断する検索を提供します。
主な機能
- 01パッケージ検索とバージョン情報
- 02ダウンロード数とプル数の統計
- 03解決済み依存関係グラフ
- 04パッケージの脆弱性スキャン
- 05OSSF Scorecardの分析情報
- 0650以上のエコシステム横断検索
活用シーン
- 01パッケージのバージョンとダウンロード傾向の確認
- 02特定バージョンの依存関係グラフの確認
- 03パッケージやロックファイルの脆弱性スキャン
- 04レジストリをまたいだパッケージ検索
MCP 対応
`/mcp`のストリーマブルHTTPを通じて、DevStack APIの各エンドポイントを型付きMCPツールとして公開します。呼び出しをDevStackに中継し、JSON応答をツール結果として返します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://devstack-mcp.vercel.app/mcpclaude mcp add --transport http isaiahdupree-devstack https://devstack-mcp.vercel.app/mcp{"mcpServers":{"isaiahdupree-devstack":{"type":"http","url":"https://devstack-mcp.vercel.app/mcp"}}}Cursor で開く{"servers":{"isaiahdupree-devstack":{"type":"http","url":"https://devstack-mcp.vercel.app/mcp"}}}VS Code で開く{"mcpServers":{"isaiahdupree-devstack":{"type":"http","url":"https://devstack-mcp.vercel.app/mcp"}}}{"mcpServers":{"isaiahdupree-devstack":{"serverUrl":"https://devstack-mcp.vercel.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
10| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | パッケージ名/ID。スコープ付き npm ID(@scope/pkg)、Docker の名前空間(ns/name、または公式イメージの名前のみの形式)、および VS Code の publisher.extension ID に対応します。 |
| registry | enum | はい | 対象のレジストリ。"all" はすべてのレジストリに並列で問い合わせ、結果を統合します。npm | pypi | docker | vscode | all |
詳細
devstack-mcp
DevStack API 用のリモート MCP(Model Context Protocol) コネクターです。libraries.io の後継であり、npm、PyPI、Docker Hub、VS Code Marketplace にまたがる開発者レジストリ全体を、キー不要で正規化された形で参照できます(検索、パッケージの詳細、バージョン、ダウンロード数/プル数の統計)。さらに、解決済みの依存関係グラフ(deps.dev)、バージョンごとの脆弱性(OSV.dev)、OSSF Scorecard の分析情報(deps.dev)、50 以上のエコシステムを対象としたレジストリ横断検索(ecosyste.ms)も利用できます。
デプロイ先: https://devstack-mcp.vercel.app/mcp — 10 個のツール。上流の DevStack デプロイは従量課金制(RapidAPI/Apify)であり、/v1/* は RapidAPI のプロキシシークレットによるガードで保護されています。そのため、このコネクターは同じプロキシシークレット(DEVSTACK_MCP_PROXY_SECRET。X-RapidAPI-Proxy-Secret ヘッダーとして送信)を使って外部への呼び出しを認証し、IP ごとのソフトレート制限(DEVSTACK_MCP_RATE_LIMIT。デフォルトは 1 時間あたり 30 回のツール呼び出し、メモリ内)を適用します。これにより、無料の MCP ティアが、従量課金制のリスティングを無制限に迂回する手段ではなく、探索用の窓口として機能します。lib/ratelimit.js を参照してください。
このコネクターの概要と、独立したコネクターである理由
DevStack API はシンプルな REST API です。任意の HTTP クライアントから直接呼び出せます。このリポジトリが存在するのは、MCP クライアント(Claude、ChatGPT、その他の MCP 対応エージェント)は、任意の REST API を利用するのではなく、MCP ツールを利用するためです。 devstack-mcp は、次の機能を提供する薄いアダプターレイヤーです。
- 各 DevStack エンドポイントを、LLM が理解して直接呼び出せる、検出可能で型付けされた MCP ツール(名前、説明、zod 入力スキーマ、アノテーション)として公開します。REST API の仕様を別途教える必要はありません。
- 1 つの
/mcpエンドポイントで MCP の streamable-HTTP トランスポートを使用するため、URL を 1 つ指定するだけで Claude、ChatGPT、その他の MCP クライアントにコネクターとして登録できます。 - それ以外のことは行いません。独自のビジネスロジックはなく、各ツール呼び出しは DevStack への
fetchの中継にすぎません。DevStack から返された JSON レスポンスは、そのままツールの結果として返されます。
認証:MCP 側では不要(意図的な設計)
DevStack のデータにはユーザーごとの違いは一切ありません。公開されている開発者レジストリのメタデータ(パッケージのリスティング、バージョン、ダウンロード数、依存関係グラフ、公開済み CVE)です。呼び出し元ごとにアクセスを制限する理由がないため、このコネクターでは意図的に以下を採用しています。
- OAuth、ログイン、ユーザーごとのベアラートークンはありません
- Supabase/データベースはありません
- デモ用アカウントと実アカウントの区別はありません。すべての呼び出し元が同じ最新の実データを利用できます
サーバー側に保持する唯一のシークレット(DEVSTACK_MCP_PROXY_SECRET)は、呼び出し元ごとの認証には使いません。これは単一の利用者であるこのコネクターが、上流の RapidAPI プロキシシークレットによるガードを通過し、実データにアクセスするためのものです。IP ごとのソフトレート制限と組み合わせることで、従量課金制の DevStack 製品を無制限に迂回する手段ではなく、RapidAPI/Apify の有料リスティングに対する無料の探索用ティアとして機能します。
ツール一覧
DevStack の各 /v1 エンドポイントに 1 つのツールが対応します(devstack-api/openapi.yaml に基づきます)。
| ツール | DevStack エンドポイント | 説明 |
|---|---|---|
get_package | GET /v1/package | レジストリと名前に基づく正規化されたパッケージの詳細です(registry=all の場合はすべてのレジストリに問い合わせます)。 |
search_packages | GET /v1/search | npm/Docker/VS Code(または all)を検索します。PyPI には検索 API がありません。 |
get_versions | GET /v1/versions | 公開済みバージョン/イメージタグ/拡張機能のバージョンです。 |
get_downloads | GET /v1/downloads | ダウンロード/プルの統計情報です(npm と PyPI のみ)。 |
get_dependency_graph | GET /v1/deps | 特定のバージョンの、完全に解決された依存関係グラフです(deps.dev)。 |
get_vulnerabilities | GET /v1/vulns | パッケージ/バージョンごとの既知の CVE/GHSA です(OSV.dev)。 |
scan_vulnerabilities_batch | POST /v1/vulns | 脆弱性の一括/ロックファイルスキャンです。1 回の呼び出しで最大 100 件を照会できます(OSV.dev)。 |
get_insights | GET /v1/insights | OSSF Scorecard + リポジトリのシグナル + ライセンス/アドバイザリです(deps.dev)。 |
search_ecosystems | GET /v1/ecosystems/search | 50 以上のエコシステムを対象に、複数のレジストリを横断して名前が完全一致する項目を検索します(ecosyste.ms)。 |
get_ecosystems_package | GET /v1/ecosystems/package | 1 つのレジストリにある 1 つのパッケージと、逆依存関係の件数を取得します(ecosyste.ms)。 |
10 個すべてのツールは読み取り専用で、{ readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true } の注釈が付いています。scan_vulnerabilities_batch は HTTP の POST ですが、読み取り専用のクエリであり(何も変更しません)、同じ読み取り専用の注釈が付いています。
devstack-api のラッパーの仕組み
各ツールハンドラーは、実際の DevStack REST API に対して fetch(\${DEVSTACK_MCP_API_BASE_URL}${path}`, ...)` を実行し、解析した JSON を MCP ツール結果のコンテンツとして返します。
{ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }
上流の HTTP エラー(4xx/5xx)は捕捉され、リクエストをクラッシュさせるのではなく、asError ヘルパーを介して型付き MCP エラー結果として返されます。
環境変数
| 環境変数 | 用途 | デフォルト |
|---|---|---|
DEVSTACK_MCP_API_BASE_URL | 上流 DevStack のベース URL です。 | https://devstack-api.vercel.app |
DEVSTACK_MCP_PROXY_SECRET | RapidAPI プロキシのシークレットです。上流の /v1/* ガードを通過するため、X-RapidAPI-Proxy-Secret として送信されます。 | ""(省略) |
DEVSTACK_MCP_RATE_LIMIT | この無料プランでの、IP ごとの 1 時間あたりのツール呼び出し数のソフト上限です。 | 30 |
プロジェクト構成
api/mcp.js MCP endpoint (StreamableHTTPServerTransport, stateless, no per-caller auth)
api/health.js GET /api/health
lib/tools.js All 10 tool definitions (zod schemas + fetch-and-forward handlers)
lib/ratelimit.js Soft per-IP tools/call cap (free discovery tier)
local-server.js Plain-Node http server for local dev / smoke testing (not deployed)
test/smoke.mjs Real end-to-end smoke test (initialize, tools/list, tools/call)
vercel.json Routes /mcp -> api/mcp.js, /health -> api/health.js
server.json MCP registry publish manifest
ローカル開発
npm install
npm run dev # starts local-server.js on http://localhost:3900
ローカルでのエンドポイント:POST http://localhost:3900/mcp、GET http://localhost:3900/health。
本番環境の代わりに、セルフホストまたはオープンな DevStack インスタンスを指定するには、次のようにします(本番環境の /v1/* は RapidAPI プロキシのシークレットガードの背後にあるため、完全にキーなしでエンドツーエンド実行する場合に便利です)。
# In devstack-api (guard is inert when RAPIDAPI_PROXY_SECRET is unset):
node server.js # listens on :8080
# In devstack-mcp:
DEVSTACK_MCP_API_BASE_URL=http://localhost:8080 npm run dev
スモークテスト
npm run dev & # terminal 1
npm run smoke # terminal 2
test/smoke.mjs は、実際の HTTP/JSON-RPC を介して実行中のサーバーを操作し、次の項目を検証します。
GET /healthが{ ok: true, ... }を返すinitializeが成功し、serverInfo.name === "devstack"を報告するtools/listが、zod から導出された JSON スキーマとともに 10 個すべてのツールを返す{ registry: "npm", name: "react" }を指定したget_packageのtools/callが、実際にライブ取得されたパッケージデータを返す(モックではありません)
本番環境では、ステップ 4 の実行に DEVSTACK_MCP_PROXY_SECRET の設定が必要です(RapidAPI プロキシガードのため)。RAPIDAPI_PROXY_SECRET を設定していないローカルのセルフホスト devstack-api では、ガードは無効となり、キーなしで実際のデータが取得されます。
デプロイ
このビルドではデプロイされません。準備ができたら、次のようにします。
cd /Users/isaiahdupree/Software/devstack-mcp
npx vercel --yes --prod
デプロイ後、コネクターがガード付きの本番環境 /v1/* にアクセスできるよう、Vercel プロジェクトで DEVSTACK_MCP_PROXY_SECRET を設定します。続いて、Claude/ChatGPT/任意の MCP クライアントに MCP コネクターの URL を登録します。
https://<deployment-domain>/mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。