mcpField
D
docs-mcp-server MCP Server

docs-mcp-server MCP Server

ローカル
github.com/xinlei413メモリ・ナレッジ279 週間前に更新

docs-mcp-server MCP Server について

docs-mcp-serverは、Webサイト、GitHub、npm、PyPI、ローカルファイルからソフトウェア文書を取得・索引化・検索するMCPサーバーです。ライブラリのバージョン別管理とSQLite全文検索に対応し、現行版ではembedding機能を無効化しています。

主な機能

  1. 01Webサイト、GitHub、npm、PyPI、ローカルファイルから取得
  2. 02文書を分割して索引化
  3. 03SQLite FTS5による全文検索
  4. 04ライブラリとバージョンで文書を絞り込み
  5. 05バックグラウンドジョブの状態確認とキャンセル
  6. 06索引と取得タスクを管理するCLI

活用シーン

  1. 01コーディングエージェント向けにパッケージ文書を検索
  2. 02ライブラリのバージョンごとに文書を索引化
  3. 03文書取得ジョブの監視やキャンセル
  4. 04単一のWebページをMarkdownに変換

MCP 対応

文書の取得・検索、バージョン検索、索引済みライブラリの一覧、ジョブ管理、URL取得のツールを提供します。現行版は全文検索に対応し、embeddingとベクトル検索には対応しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"MCP-DOC-Server-OpenRouter": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"\\"
]
}
}
}
起動コマンドdocker run -i --rm '\'

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
oci\

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

docs-mcp-server MCP サーバー

サードパーティ製パッケージのドキュメントを取得・検索する MCP サーバーです。

✨ 主な機能

  • 🌐 多様なスクレイピング: ウェブサイト、GitHub、npm、PyPI、ローカルファイルなど、さまざまなソースからドキュメントを取得します。
  • 🧠 インテリジェントな処理: コンテンツを意味に基づいて自動的に分割し、お好みのモデル(OpenAI、Google Gemini、Azure OpenAI、AWS Bedrock、Ollama など)を使用して埋め込みを生成します。
  • 💾 最適化されたストレージ: sqlite-vec を使用した効率的なベクトルストレージと、堅牢な全文検索を実現する FTS5 を備えた SQLite を活用します。
  • 🔍 強力なハイブリッド検索: 異なるライブラリバージョンを対象にベクトル類似度検索と全文検索を組み合わせ、関連性の高い結果を提供します。
  • ⚙️ 非同期ジョブ処理: バックグラウンドジョブキューと MCP/CLI ツールを使って、スクレイピングとインデックス作成のタスクを効率的に管理します。
  • 🐳 簡単なデプロイ: Docker または npx を使って、すぐに利用を開始できます。

概要

このプロジェクトは、さまざまなソフトウェアライブラリやパッケージのドキュメントをスクレイピング、処理、インデックス作成、検索するために設計された Model Context Protocol(MCP)サーバーを提供します。指定された URL からコンテンツを取得し、意味に基づく分割手法を使って意味のあるチャンクに分割し、OpenAI を使ってベクトル埋め込みを生成して、SQLite データベースにデータを保存します。サーバーは、効率的なベクトル類似度検索に sqlite-vec を、全文検索機能に FTS5 を使用し、これらを組み合わせてハイブリッド検索結果を提供します。バージョン管理に対応しており、異なるライブラリバージョン(バージョン指定のないコンテンツを含む)のドキュメントを区別して保存・検索できます。

サーバーは、次の MCP ツールを提供します。

  • スクレイピングジョブを開始します(scrape_docs):すぐに jobId を返します。
  • ジョブのステータスを確認します(get_job_status):特定のジョブの現在のステータスと進捗状況を取得します。
  • 実行中/完了済みのジョブを一覧表示します(list_jobs):最近のジョブと進行中のジョブを表示します。
  • ジョブをキャンセルします(cancel_job):実行中またはキューに入っているジョブの停止を試みます。
  • ドキュメントを検索します(search_docs)。
  • インデックス作成済みのライブラリを一覧表示します(list_libraries)。
  • 適切なバージョンを検索します(find_version)。
  • インデックス作成済みのドキュメントを削除します(remove_docs)。
  • 単一の URL を取得します(fetch_url):URL を取得し、そのコンテンツを Markdown として返します。

🆕 OpenRouter API の統合とマルチモデル対応

Chat/Completions 機能

このサービスは OpenRouter API に全面的に対応しており、主要な LLM(GPT-4.1、Claude 3.7、Gemini 2.5、Grok、Qwen など)とマルチモーダル入力(テキスト+画像)をサポートしています。

主な機能
  • ✅ OpenRouter 公式の主要モデルすべてに対応しています。モデルの一覧は src/utils/openrouter.ts の OPENROUTER_MODELS を参照してください。
  • ✅ マルチモーダルメッセージ形式(text、image_url など)に対応しています。
  • ✅ HTTP-Referer、X-Title などのカスタムヘッダーに対応しており、openrouter.ai の統計やランキングに活用できます。
  • ✅ OpenRouter API のすべての拡張パラメーター(stream、tools、temperature、max_tokens など)に対応しています。
環境変数の設定
  • OPENAI_API_KEY:OpenRouter API Key(必須)
  • OPENAI_API_BASE:OpenRouter API Base。https://openrouter.ai/api/v1 を推奨します。
  • MODEL_ID:デフォルトモデル(openai/gpt-4.1 など)。任意です。
サンプルコード
import { openrouterChat } from './src/utils/openrouter';

const messages = [
  {
    role: 'user',
    content: [
      { type: 'text', text: 'What is in this image?' },
      { type: 'image_url', image_url: { url: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg' } }
    ]
  }
];

const result = await openrouterChat({
  model: 'openai/gpt-4.1',
  messages,
  referer: 'https://your-site.com', // 可选
  xTitle: 'Your Site Name'           // 可选
  // 还可加 extraBody, headers 等参数
});
console.log(result);
対応する主なモデル(一部の例)
  • openai/gpt-4.1
  • openai/gpt-4.1-mini
  • anthropic/claude-3.7-sonnet
  • google/gemini-2.5-pro-preview-03-25
  • x-ai/grok-3-beta
  • qwen/qwen2.5-vl-32b-instruct:free
  • deepseek/deepseek-chat-v3-0324:free
  • thudm/glm-z1-32b:free
  • openrouter/auto
  • ...(詳細はソースコードの OPENROUTER_MODELS を参照してください)
その他の API パラメーター

ストリーミング出力、関数呼び出し、システムプロンプト、stop、temperature、max_tokens などの OpenRouter API パラメーターをサポートするには、extraBody フィールドで渡すだけで利用できます。基盤となるコードを変更する必要はありません。

⚠️ Embedding 機能について

Embedding 機能は無効になっています!

このプロジェクトの現行バージョンでは、埋め込みに関連する実装と依存関係がすべて完全に削除されており、ベクトルの生成と検索には対応していません。埋め込みに関連する API はすべて、例外を直接スローして通知します。

全文検索と LLM の chat/completions 機能のみを残しています。

設定

埋め込みモデルの動作を設定するには、次の環境変数を使用できます。

埋め込みモデルの設定
  • DOCS_MCP_EMBEDDING_MODEL:任意。 形式:provider:model_name または model_name のみ(デフォルトは text-embedding-3-small)。対応しているプロバイダーと必要な環境変数は次のとおりです。

    • openai(デフォルト):OpenAI の埋め込みモデルを使用します

      • OPENAI_API_KEY:必須。 OpenAI API キー
      • OPENAI_ORG_ID:任意。 OpenAI の組織 ID
      • OPENAI_API_BASE:任意。 OpenAI 互換 API 用のカスタムベース URL(例:Ollama、Azure OpenAI)
    • vertex:Google Cloud Vertex AI の埋め込みを使用します

      • GOOGLE_APPLICATION_CREDENTIALS:必須。 サービスアカウントの JSON キーファイルのパス
    • gemini:Google Generative AI(Gemini)の埋め込みを使用します

      • GOOGLE_API_KEY:必須。 Google API キー
    • aws:AWS Bedrock の埋め込みを使用します

      • AWS_ACCESS_KEY_ID:必須。 AWS アクセスキー
      • AWS_SECRET_ACCESS_KEY:必須。 AWS シークレットキー
      • AWS_REGION または BEDROCK_AWS_REGION:必須。 Bedrock 用の AWS リージョン
    • microsoft:Azure OpenAI の埋め込みを使用します

      • AZURE_OPENAI_API_KEY:必須。 Azure OpenAI API キー
      • AZURE_OPENAI_API_INSTANCE_NAME:必須。 Azure インスタンス名
      • AZURE_OPENAI_API_DEPLOYMENT_NAME:必須。 Azure デプロイ名
      • AZURE_OPENAI_API_VERSION:必須。 Azure API バージョン
ベクトルの次元数

データベーススキーマでは、埋め込みベクトルの次元数に 1536 を固定で使用します。次元数が 1536 以下のベクトルを生成するモデルのみ対応しています。ただし、Gemini など、次元数の削減に対応している一部のプロバイダーは例外です。

Ollama などの OpenAI 互換 API を使用する場合は、OPENAI_API_BASE にエンドポイントを指定して、openai プロバイダーを使用してください。

これらの変数は、サーバーの実行方法(Docker、npx、またはソースからの実行)にかかわらず設定できます。

MCP サーバーの実行

docs-mcp-server を実行する方法は 2 つあります。

オプション 1:Docker を使用する(推奨)

ほとんどのユーザーには、この方法をおすすめします。簡単で分かりやすく、Node.js をインストールする必要もありません。

  1. Docker がインストールされ、実行中であることを確認します。

  2. MCP の設定を行います:

    Claude/Cline/Roo の設定例: 必要に応じてパスを調整し、次の設定ブロックを MCP 設定ファイルに追加します。

    {
      "mcpServers": {
        "docs-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "OPENAI_API_KEY",
            "-v",
            "docs-mcp-data:/data",
            "ghcr.io/arabold/docs-mcp-server:latest"
          ],
          "env": {
            "OPENAI_API_KEY": "sk-proj-..." // Required: Replace with your key
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    

    "sk-proj-..." を実際の OpenAI API キーに置き換えて、アプリケーションを再起動してください。

  3. これで完了です! サーバーが AI アシスタントから利用できるようになります。

Docker コンテナの設定:

  • -i:STDIN を開いたままにします。stdio 経由の MCP 通信に不可欠です。
  • --rm:コンテナの終了時に自動的に削除します。
  • -e OPENAI_API_KEY:必須。 OpenAI API キーを設定します。
  • -v docs-mcp-data:/data:データの永続化に必須。 Docker の名前付きボリューム docs-mcp-data をマウントして、データベースを保存します。必要に応じて、特定のホストパスに置き換えることもできます(例:-v /path/on/host:/data)。

設定用の環境変数(上記の設定を参照)は、いずれも -e フラグを使ってコンテナに渡せます。例:

# Example 1: Using OpenAI embeddings (default)
docker run -i --rm \
  -e OPENAI_API_KEY="your-key-here" \
  -e DOCS_MCP_EMBEDDING_MODEL="text-embedding-3-small" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest

# Example 2: Using OpenAI-compatible API (like Ollama)
docker run -i --rm \
  -e OPENAI_API_KEY="your-key-here" \
  -e OPENAI_API_BASE="http://localhost:11434/v1" \
  -e DOCS_MCP_EMBEDDING_MODEL="embeddings" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest

# Example 3a: Using Google Cloud Vertex AI embeddings
docker run -i --rm \
  -e OPENAI_API_KEY="your-openai-key" \  # Keep for fallback to OpenAI
  -e DOCS_MCP_EMBEDDING_MODEL="vertex:text-embedding-004" \
  -e GOOGLE_APPLICATION_CREDENTIALS="/app/gcp-key.json" \
  -v docs-mcp-data:/data \
  -v /path/to/gcp-key.json:/app/gcp-key.json:ro \
  ghcr.io/arabold/docs-mcp-server:latest

# Example 3b: Using Google Generative AI (Gemini) embeddings
docker run -i --rm \
  -e OPENAI_API_KEY="your-openai-key" \  # Keep for fallback to OpenAI
  -e DOCS_MCP_EMBEDDING_MODEL="gemini:embedding-001" \
  -e GOOGLE_API_KEY="your-google-api-key" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest

# Example 4: Using AWS Bedrock embeddings
docker run -i --rm \
  -e AWS_ACCESS_KEY_ID="your-aws-key" \
  -e AWS_SECRET_ACCESS_KEY="your-aws-secret" \
  -e AWS_REGION="us-east-1" \
  -e DOCS_MCP_EMBEDDING_MODEL="aws:amazon.titan-embed-text-v1" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest

# Example 5: Using Azure OpenAI embeddings
docker run -i --rm \
  -e AZURE_OPENAI_API_KEY="your-azure-key" \
  -e AZURE_OPENAI_API_INSTANCE_NAME="your-instance" \
  -e AZURE_OPENAI_API_DEPLOYMENT_NAME="your-deployment" \
  -e AZURE_OPENAI_API_VERSION="2024-02-01" \
  -e DOCS_MCP_EMBEDDING_MODEL="microsoft:text-embedding-ada-002" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest
オプション 2:npx を使用する

ローカルファイルへのアクセス(例:ローカルファイルシステム内のドキュメントのインデックス作成)が必要な場合におすすめの方法です。パスを Docker コンテナにマウントして実現することもできますが、npx を使用するほうが簡単です。ただし、Node.js のインストールが必要です。

  1. Node.js がインストールされていることを確認します。

  2. MCP の設定を行います:

    Claude/Cline/Roo の設定例: 次の設定ブロックを MCP 設定ファイルに追加します。

    {
      "mcpServers": {
        "docs-mcp-server": {
          "command": "npx",
          "args": ["-y", "--package=@arabold/docs-mcp-server", "docs-server"],
          "env": {
            "OPENAI_API_KEY": "sk-proj-..." // Required: Replace with your key
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    

    "sk-proj-..." を実際の OpenAI API キーに置き換えて、アプリケーションを再起動してください。

  3. これで完了です! サーバーが AI アシスタントから利用できるようになります。

CLI の使用

Docker または npx を使って、CLI からドキュメントを直接管理できます。重要: インデックス化された同じドキュメントにアクセスできるよう、サーバーと CLI には同じ方法(Docker または npx)を使用してください。

Docker CLI の使用

Docker でサーバーを実行している場合は、CLI にも Docker を使用してください。

docker run --rm \
  -e OPENAI_API_KEY="your-openai-api-key-here" \
  -v docs-mcp-data:/data \
  ghcr.io/arabold/docs-mcp-server:latest \
  docs-cli <command> [options]

サーバーで使用したものと同じボリューム名(この例では docs-mcp-data)を指定してください。サーバーの場合と同様に、設定用の環境変数(上記の設定を参照)は、-e フラグを使って渡すことができます。

npx CLI の使用

npx でサーバーを実行している場合は、CLI にも npx を使用してください。

npx -y --package=@arabold/docs-mcp-server docs-cli <command> [options]

npx を使用すると、システムのデフォルトのデータディレクトリ(通常はホームディレクトリ内)が使われるため、サーバーと CLI の間で一貫性が保たれます。

(使用できるコマンドとオプションについては、下記の「CLI コマンドリファレンス」を参照してください。)

CLI コマンドリファレンス

docs-cli には、ドキュメントインデックスを管理するためのコマンドが用意されています。Docker(docker run -v docs-mcp-data:/data ghcr.io/arabold/docs-mcp-server:latest docs-cli ...)または npx(npx -y --package=@arabold/docs-mcp-server docs-cli ...)から実行できます。

一般的なヘルプ:

docs-cli --help
# or
npx -y --package=@arabold/docs-mcp-server docs-cli --help

コマンド固有のヘルプ:(グローバルにインストールされていない場合は、docs-cli を npx... コマンドに置き換えてください)

docs-cli scrape --help
docs-cli search --help
docs-cli fetch-url --help
docs-cli find-version --help
docs-cli remove --help
docs-cli list --help
単一 URL の取得(fetch-url)

単一の URL を取得し、その内容を Markdown に変換します。scrape とは異なり、このコマンドはリンクをたどったり、内容を保存したりしません。

docs-cli fetch-url <url> [options]

オプション:

  • --no-follow-redirects:HTTP リダイレクトの追跡を無効にします(デフォルト:リダイレクトを追跡)。
  • --scrape-mode <mode>:HTML の処理方式です:'fetch'(高速、JavaScript の処理は限定的)、'playwright'(低速、JavaScript を完全に処理)、'auto'(デフォルト)。

例:

# Fetch a URL and convert to Markdown
docs-cli fetch-url https://example.com/page.html
ドキュメントのスクレイピング(scrape)

指定したライブラリのドキュメントを、指定 URL からスクレイピングしてインデックス化します。

docs-cli scrape <library> <url> [options]

オプション:

  • -v, --version <string>:スクレイピングしたドキュメントに関連付ける特定のバージョンです。
    • 完全なバージョン(1.2.3)、プレリリースバージョン(1.2.3-beta.1)、または部分的なバージョン(1、1.2。それぞれ 1.0.0、1.2.0 に展開されます)を指定できます。
    • 省略した場合、ドキュメントはバージョン指定なしとしてインデックス化されます。
  • -p, --max-pages <number>:スクレイピングするページの最大数(デフォルト:1000)。
  • -d, --max-depth <number>:ナビゲーションの最大深度(デフォルト:3)。
  • -c, --max-concurrency <number>:同時リクエストの最大数(デフォルト:3)。
  • --scope <scope>:クロール範囲を定義します:'subpages'(デフォルト)、'hostname'、または 'domain'。
  • --no-follow-redirects:HTTP リダイレクトの追跡を無効にします(デフォルト:リダイレクトを追跡)。
  • --scrape-mode <mode>:HTML の処理方式です:'fetch'(高速、JavaScript の処理は限定的)、'playwright'(低速、JavaScript を完全に処理)、'auto'(デフォルト)。
  • --ignore-errors:スクレイピング中のエラーを無視します(デフォルト:true)。

例:

# Scrape React 18.2.0 docs
docs-cli scrape react --version 18.2.0 https://react.dev/
ドキュメントの検索(search)

インデックス化されたドキュメントを検索します。必要に応じてバージョンで絞り込めます。

docs-cli search <library> <query> [options]

オプション:

  • -v, --version <string>:検索対象のバージョンまたは範囲です。
    • 完全なバージョン(18.0.0)、部分的なバージョン(18)、または範囲(18.x)を指定できます。
    • 省略した場合、インデックス化された最新バージョンを検索します。
    • 指定したバージョンまたは範囲に一致するものがない場合、対象より_古い_最新のインデックス済みバージョンにフォールバックします。
    • バージョン指定なしのドキュメントのみを検索するには、空文字列を明示的に渡します:--version ""。(注:--version を省略すると最新のバージョンが検索されます。他のバージョンが存在しない場合は、バージョン指定なしのドキュメントが検索されることがあります)。
  • -l, --limit <number>:結果の最大数(デフォルト:5)。
  • -e, --exact-match:指定したバージョンと完全に一致するものだけを検索します(フォールバックと範囲指定での照合を無効化。デフォルト:false)。

例:

# Search latest React docs for 'hooks'
docs-cli search react 'hooks'
利用可能なバージョンの確認(find-version)

対象に基づいて、ライブラリに最適なバージョンがインデックスにあるかを確認し、バージョン指定なしのドキュメントが存在するかを示します。

docs-cli find-version <library> [options]

オプション:

  • -v, --version <string>:対象のバージョンまたは範囲です。省略した場合、利用可能な最新バージョンを検索します。

例:

# Find the latest indexed version for react
docs-cli find-version react
ライブラリの一覧表示(list)

現在ストアにインデックス化されているすべてのライブラリを一覧表示します。

docs-cli list
ドキュメントの削除(remove)

特定のライブラリとバージョンのインデックス済みドキュメントを削除します。

docs-cli remove <library> [options]

オプション:

  • -v, --version <string>:削除する特定のバージョンです。省略した場合、ライブラリのバージョン指定なしのドキュメントを削除します。

例:

# Remove React 18.2.0 docs
docs-cli remove react --version 18.2.0
バージョン処理の概要
  • スクレイピング: 特定の有効なバージョン(X.Y.Z、X.Y.Z-pre、X.Y、X)またはバージョン指定なし(バージョン指定なしのドキュメントの場合)である必要があります。範囲(X.x)はスクレイピングでは無効です。
  • 検索/検索結果の取得: 特定のバージョン、部分的なバージョン、または範囲(X.Y.Z、X.Y、X、X.x)を指定できます。対象が一致しない場合は、最新の古いバージョンにフォールバックします。バージョンを省略すると、利用可能な最新バージョンが対象になります。--version "" を明示的に指定して検索すると、バージョン指定なしのドキュメントが対象になります。
  • バージョン指定なしのドキュメント: スクレイピング時に --version を省略すると、特定のバージョンを指定せずにドキュメントを保存できます。--version "" を使うと、これらを明示的に検索できます。また、find-version コマンドは、semver に一致するバージョンに加えて、バージョン指定なしのドキュメントが存在する場合も報告します。

OpenRouter のローカル設定手順(初心者向けガイド)

1. .env ファイルを開く
  • パス:~/MCP/MCP DOC Server/docs-mcp-server-main/.env
  • TextEdit、メモ帳、VSCode などのテキストエディターで開きます。
2. OpenRouter の情報を入力する

以下の内容で .env ファイルを置き換えるか、内容を追加します。

OPENAI_API_KEY=你的OpenRouter Key
OPENAI_API_BASE=https://openrouter.ai/api/v1
MODEL_ID=qwen/qwen2.5-vl-3b-instruct:free

説明:

  • OPENAI_API_KEY には、上の例のように OpenRouter Key を指定します。
  • OPENAI_API_BASE は https://openrouter.ai/api/v1 に固定します。
  • MODEL_ID には qwen/qwen2.5-vl-3b-instruct:free を指定します。
3. .env ファイルを保存する
4. MCP サーバーを再起動する
  • 以前の MCP サーバーのターミナルウィンドウが開いている場合は、閉じます。
  • MCP ディレクトリで次を再度実行します。
npm run dev:server
  • Build success、Watching for changes と表示されるまで待ちます。

問題が発生した場合は、エラー内容を開発者またはテクニカルサポートにお送りください。

開発と高度なセットアップ

このセクションでは、開発目的でソースコードからサーバー/CLI を直接実行する方法を説明します。現在、主な利用方法は「方法 2」で説明している公開 Docker イメージを使用する方法です。

ソースからの実行(開発)

これにより、分離された環境が用意され、HTTP エンドポイント経由でサーバーにアクセスできるようになります。

  1. リポジトリをクローンします:

    git clone https://github.com/arabold/docs-mcp-server.git # Replace with actual URL if different
    cd docs-mcp-server
    
  2. .env ファイルを作成します: サンプルをコピーし、OpenAI キーを追加します(下記の「環境のセットアップ」を参照してください)。

    cp .env.example .env
    # Edit .env and add your OPENAI_API_KEY
    
  3. Docker イメージをビルドします:

    docker build -t docs-mcp-server .
    
  4. Docker コンテナを実行します:

    # Option 1: Using a named volume (recommended)
    # Docker automatically creates the volume 'docs-mcp-data' if it doesn't exist on first run.
    docker run -i --env-file .env -v docs-mcp-data:/data --name docs-mcp-server docs-mcp-server
    
    # Option 2: Mapping to a host directory
    # docker run -i --env-file .env -v /path/on/your/host:/data --name docs-mcp-server docs-mcp-server
    
    • -i:アタッチされていない場合でも STDIN を開いたままにします。stdio 経由でサーバーとやり取りするために不可欠です。
    • --env-file .env:ローカルの .env ファイルから環境変数(OPENAI_API_KEY など)を読み込みます。
    • -v docs-mcp-data:/data または -v /path/on/your/host:/data:永続化に不可欠です。 Docker の名前付きボリューム(必要に応じて Docker が docs-mcp-data を自動作成します)またはホストディレクトリを、コンテナ内の /data ディレクトリにマウントします。/data ディレクトリは、サーバーが documents.db ファイルを保存する場所です(Dockerfile の DOCS_MCP_STORE_PATH で設定されています)。これにより、コンテナを停止または削除しても、インデックス化されたドキュメントが保持されます。
    • --name docs-mcp-server:コンテナに便利な名前を割り当てます。

    コンテナ内のサーバーは、Node.js を直接使用して実行され、stdio 経由で通信します。

この方法は、プロジェクトへの貢献や、未公開バージョンの実行に役立ちます。

  1. リポジトリをクローンします:

    git clone https://github.com/arabold/docs-mcp-server.git # Replace with actual URL if different
    cd docs-mcp-server
    
  2. 依存関係をインストールします:

    npm install
    
  3. プロジェクトをビルドします: TypeScript をコンパイルし、dist/ ディレクトリに JavaScript を出力します。

    npm run build
    
  4. 環境をセットアップします: 下記の「環境のセットアップ」の説明に従って、.env ファイルを作成して設定します。OPENAI_API_KEY を指定するために不可欠です。

  5. 実行します:

    • サーバー(開発モード): npm run dev:server(ビルド、変更の監視、再起動を行います)
    • サーバー(本番モード): npm run start(ビルド済みのコードを実行します)
    • CLI: npm run cli -- <command> [options] または node dist/cli.js <command> [options]
環境のセットアップ(ソース/Docker 用)

注: この .env ファイルのセットアップは、主にソースからサーバーを実行する場合、または Docker を使用する場合に必要です。npx 統合方法を使用する場合、OPENAI_API_KEY は MCP 設定ファイルに直接設定します。

  1. .env.example を基に .env ファイルを作成します:

    cp .env.example .env
    
  2. .env の OpenAI API キーを更新します:

    # Required: Your OpenAI API key for generating embeddings.
    OPENAI_API_KEY=your-api-key-here
    
    # Optional: Your OpenAI Organization ID (handled automatically by LangChain if set)
    OPENAI_ORG_ID=
    
    # Optional: Custom base URL for OpenAI API (e.g., for Azure OpenAI or compatible APIs)
    OPENAI_API_BASE=
    
    # Optional: Embedding model name (defaults to "text-embedding-3-small")
    # Examples: text-embedding-3-large, text-embedding-ada-002
    DOCS_MCP_EMBEDDING_MODEL=
    
    # Optional: Specify a custom directory to store the SQLite database file (documents.db).
    # If set, this path takes precedence over the default locations.
    # Default behavior (if unset):
    # 1. Uses './.store/' in the project root if it exists (legacy).
    # 2. Falls back to OS-specific data directory (e.g., ~/Library/Application Support/docs-mcp-server on macOS).
    # DOCS_MCP_STORE_PATH=/path/to/your/desired/storage/directory
    
デバッグ(ソースからの実行)

MCP サーバーを Node.js 経由で直接実行すると、stdio 経由で通信するため、デバッグが難しい場合があります。ビルド後にパッケージスクリプトとして利用できる MCP Inspector の使用をおすすめします。

npx @modelcontextprotocol/inspector node dist/server.js

Inspector から、ブラウザーでデバッグツールにアクセスするための URL が提供されます。

リリース

このプロジェクトでは、semantic-release と Conventional Commits を使用して、リリースプロセスを自動化しています。

仕組み:

  1. コミットメッセージ: main ブランチにマージされるすべてのコミットは、必ず Conventional Commits の仕様に従う必要があります。
  2. 手動トリガー: 新しいリリースを作成する準備ができたら、Actions タブから「Release」GitHub Actions ワークフローを手動で実行できます。
  3. semantic-release の処理: バージョンを決定し、CHANGELOG.md と package.json を更新して、コミット、タグ付け、npm への公開、GitHub リリースの作成を行います。

必要な作業:

  • Conventional Commits を使用します。
  • 変更を main にマージします。
  • 準備ができたら、GitHub の Actions タブからリリースを手動で実行します。

自動化される作業: 変更履歴、バージョンの更新、タグ付け、npm への公開、GitHub リリース。

アーキテクチャ

プロジェクトのアーキテクチャと設計原則の詳細については、ARCHITECTURE.md をご覧ください。

特筆すべき点として、このプロジェクトのコードの大部分は、まさにこの MCP サーバーの機能を活用した AI アシスタント Cline によって生成されました。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。