devdocs-mcp について
DevDocs-MCPは、DevDocs.ioのバージョン固定ドキュメントをコーディングエージェントに提供するローカルMCPサーバーです。プロジェクトの依存関係に合わせて内容を絞り込み、オフライン検索用にキャッシュします。
主な機能
- 01依存関係に応じたドキュメントのバージョン選択
- 02オフライン利用向けのドキュメントキャッシュ
- 03ランキング付きファジー検索
- 04構造化されたドキュメント出力
- 05SQLiteによるメタデータ管理
活用シーン
- 01プロジェクト依存関係のAPIドキュメントを検索
- 02インターネット接続なしでキャッシュ済み文書を検索
- 03コーディング中のバージョン混同を防止
MCP 対応
MCPサーバーとしてドキュメントの取り込みと検索ツールを提供します。stdioに加え、リモートクライアント向けのHTTP SSEに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 返す結果の最大数(デフォルトは 5) |
| query | string | はい | 検索クエリ(例:“react hooks”“python list”) |
| projectId | string | いいえ | プロジェクトの依存関係に関連するドキュメントを優先するための任意のプロジェクト ID |
詳細
DevDocs-MCP:AI エージェント向けドキュメントの信頼できる情報源
|
|
|
ローカルでバージョンを認識した信頼できるドキュメントを使い、AI のハルシネーションをなくしましょう。
DevDocs-MCP は、DevDocs.io を情報源とする、バージョンを固定した決定論的なドキュメントを AI アシスタント(Claude、RooCode、Cline、Copilot など)に提供する Model Context Protocol(MCP)サーバーです。ローカルのドキュメントインテリジェンスレイヤーとして機能し、ネットワーク遅延や学習データの変化に左右されることなく、エージェントが常に正しい API コンテキストを利用できるようにします。
このサーバーは、MCP が定める提案中の MCP サーバー標準に準拠しています。この標準は、Anthropic、OpenAI、Google などのプロバイダーが提供するものを含め、エコシステム全体の AI ツールやエージェントに採用されつつあります。
⚠️ プロジェクトのステータスに関するお知らせ ⚠️ このプロジェクトは現在、活発に開発を進めています。既存の機能のテストに加え、最適なキャッシュ、最新ドキュメントの自動更新およびリクエストに応じた更新、最適なクエリ処理など、さらに多くの新機能を実装する必要があります。設計上の決定、API、構成は、開発者コミュニティからの強い意見、レビュー、フィードバックを受けて進化していく予定です。このプロジェクトを正しい方向へ導くため、議論、批評、貢献を心より歓迎します。
📑 目次
🎯 概要
このプロジェクトとは
- NestJS(TypeScript)で記述されたローカル MCP サーバーです。
- ドキュメントのメタデータとコンテンツに関する決定論的な情報源です。
- DevDocs をオフラインでキャッシュする遅延取り込みエンジンです。
package.jsonのバージョンにドキュメントを固定する、プロジェクトを認識したコンテキストマネージャーです。
このプロジェクトではないもの
- ❌ AI エージェントやコード生成ツールではありません。
- ❌ ウェブスクレイパーではありません(構造化された DevDocs データセットを使用します)。
- ❌ DevDocs UI の代替ではありません。
- ❌ ホスト型 SaaS ではありません(100% ローカルで実行されます)。
このプロジェクトが存在する理由(課題)
最新の AI コーディングエージェントは、主に次の 3 つの課題に直面しています。
- ハルシネーション:API のシグネチャを推測したり、非推奨のメソッドを使用したりします。
- 遅延:クエリのたびに最新のウェブドキュメントを取得すると、時間がかかります。
- バージョンのずれ:React 18 と React 19 の機能を取り違えます。
解決策:DevDocs-MCP は、ローカルストレージから取得した「ジャストインタイム」のドキュメントを、プロジェクト固有の依存関係のバージョンに合わせて絞り込んで提供します。
メンタルモデル
DevDocs-MCP は、IDE エージェントとドキュメントの情報源の間に立つミドルウェアとして機能します。
graph TD
Agent["AI Agents"] -->|MCP Search/Explain| Server["DevDocs-MCP Server"]
Server -->|Metadata| DB[(SQLite - sql.js)]
Server -->|Content| FS[Local Disk - JSON Cache]
Server -.->|Lazy Fetch| Web[DevDocs.io API]
🚀 主な機能
- オフラインファースト:ドキュメントはローカルにキャッシュされるため、取り込み後はインターネット接続が不要です。
- ランキング付きあいまい検索:「intersection observer」などの関連項目をすぐに見つけられます。
- バージョン認識:プロジェクト内の特定のライブラリバージョンに自動で対応付けます。
- Node のみのアーキテクチャ:
sql.jsを使用するため、ネイティブ依存関係はありません(Python/C++ のビルド手順は不要です)。 - 構造化された出力:LLM に最適化された、整理されたコンテンツを返します。
⚡ クイックスタート
- クローンとインストール
git clone https://github.com/madhan-g-p/DevDocs-MCP.git
cd DevDocs-MCP
pnpm install
- 環境を設定
cp .env.example .env
# Edit .env: Set DEVDOCS_DATA_PATH to where you want to store docs.
- ビルドして実行
pnpm build
pnpm start:prod
注: 開発およびコントリビューションでは、必ず
pnpmを使用してください。
🛠️ インストールとセットアップ
DevDocs-MCP は、pnpm による手間のかからないセットアップに最適化されています。Node のみで動作するプロジェクトです。
前提条件
- Node.js 18 以上(18.x および 20.x でテスト済み)。
🐳 Docker の使用
DevDocs-MCP は、軽量でデータを永続化できるように設計されています。大規模なドキュメントデータセットをダウンロードしてキャッシュするため、データボリュームを適切に管理することが重要です。
方法 A:Docker Compose(動的かつ永続的)
こちらが推奨される方法です。.env ファイル内の DEVDOCS_VOLUME_SOURCE 変数を使って、3 種類のストレージモードを利用できます。
-
.envで使用するストレージを設定します:# モード 1:名前付きボリューム(デフォルト — Docker が管理) DEVDOCS_VOLUME_SOURCE=devdocs_data # モード 2:ホストパス(Docker の外部 — ローカルフォルダー) # DEVDOCS_VOLUME_SOURCE=./my-docs-storage -
サーバーを起動します:
docker compose up -d
柔軟性:コンテナーを起動するたびに、
.envファイルのDEVDOCS_VOLUME_SOURCEを変更するだけで、新しいボリューム(新たに開始する場合)または既存のボリューム(データを保持する場合)を指定できます。mcp.db(データベースライブラリ)とdata/(ダウンロードしたドキュメント)は、どちらもこのボリューム内に保存されます。
方法 B:Docker Run(手動)
Docker Hub から公開イメージを直接実行する場合は、次の手順を使用してください:
docker run -d -p 3000:3000 \
-v "devdocs_data:/app/data" \
--name devdocs-mcp \
madhandock1/devdocs-mcp:latest
💾 データ戦略
このプロジェクトでは、/app/data を単一のマウントポイントとして使用し、次のものを格納します:
/app/data/mcp.db:SQLite レジストリ。/app/data/docs/:キャッシュされたドキュメントファイル。 この統一された構成により、フォルダーまたはボリュームを移動するだけで、ドキュメントデータ一式を簡単にバックアップまたは移動できます。
設定(.env)
| 変数 | 説明 | デフォルト |
|---|---|---|
DEVDOCS_DATA_PATH | ダウンロードしたドキュメントの JSON を保存するパス。 | ./data |
MCP_DB_PATH | SQLite メタデータデータベースのパス。 | mcp.db |
LOG_LEVEL | ログの詳細度(debug、info、warn、error)。 | info |
ドキュメントの取り込み
サーバーをエージェントに接続したら、ingest ツールを使って、使用するスタックに対応するドキュメントをダウンロードします:
サーバーが起動して稼働すると、エージェントが利用可能なツールを一覧表示し、それに応じて判断するはずです。
{
"dependencies": {
"react": "18.2.0",
"typescript": "5.0.0"
}
}
注意:取り込みに使用する Devdocs の取得 URL は、
src/config/constants.tsで定義されています。現在、この URL は正しく、公式にサポートされているパスを指しています。devdocs コミュニティが将来このパスを変更した場合は、それに応じて設定を更新する必要がある可能性があります。
この方法ではウェブスクレイピングは行いません。DevDocs 自体でユーザーがドキュメントをダウンロードする方法と同様に、オフライン利用向けに DevDocs が提供する、同じサポート対象の仕組みに従います。
🤖 AI エージェントの設定
RooCode / Cline / Claude Desktop(推奨:STDIO)
これを mcp_settings.json に追加します。cwd(現在の作業ディレクトリ)を設定すると、サーバーが .env ファイルから設定を自動的に読み込むため、データの保存に相対パスを使用できます。
{
"mcpServers": {
"devdocs": {
"command": "node",
"args": ["dist/main.js"],
"cwd": "file://path/to/your/DevDocs-MCP"
}
}
}
ヒント:
cwdにはプロジェクトの絶対パスを使用してください。サーバーが.envを見つけて、そこで定義したDEVDOCS_DATA_PATHとMCP_DB_PATH(例:./dataまたはmcp.db)を使用するため、セットアップを移植可能にできます!
リモート/ウェブクライアント(HTTP SSE)
ポートを介してサーバーを公開する必要がある場合(本番環境またはリモート環境でのセットアップ):
- ポートフラグを付けてサーバーを起動します:
node dist/main.js --port 3000 - クライアントを設定します:
- SSE URL:
http://your-server:3000/mcp/sse - 種類:
SSE(ほとんどの MCP クライアントでサポートされています。少なくともそうだと思います)
- SSE URL:
📖 さらに詳しく
- システムアーキテクチャ:データフロー、スキーマ、
sql.jsの内部実装について詳しく説明しています。 - コントリビューターガイドライン:ワークフロー、コーディング規約、PR の要件について説明しています。
- ライセンス:MIT ライセンスです。
このプロジェクトは、@Nathaniel Whiteinge による devdocs-local、 devdocs-local-demo に着想を得ています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。