GitLab Documentation MCP Server について
GitLab Documentation MCP Serverは、AIアシスタントやMCPクライアントからGitLab公式ドキュメントを検索できるようにします。複数のGitLabオープンソースリポジトリのMarkdownを全文索引化し、指定したGitLabバージョン向けに構築できます。
主な機能
- 01複数のGitLabリポジトリを全文検索
- 02GitLabの指定バージョン向けに構築
- 03SQLite FTS5のドキュメント索引
- 04Dockerイメージのビルド
- 05検索結果から文書全文を取得
活用シーン
- 01GitLab CI/CDの設定方法を検索
- 02RunnerやGitalyの文書を参照
- 03運用バージョンに合う文書を検索
MCP 対応
このMCPサーバーはsearch_docs、get_doc、search_and_fetchツールを提供し、索引対象のリポジトリと文書内容をリソースとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GitLab Documentation MCP サーバー
GitLab の公式ドキュメントを検索できる Model Context Protocol(MCP)サーバーです。複数の GitLab OSS リポジトリの Markdown ドキュメントをインデックス化し、AI アシスタントやその他の MCP クライアントから利用できるようにします。
特長
- 全文検索:SQLite FTS5 を使用して GitLab ドキュメントを検索します
- バージョン別ドキュメント:任意の GitLab バージョン(例:18.7.2)または最新バージョン向けにビルドできます
- 複数のリポジトリをインデックス化します:
- GitLab CE/EE(メインアプリケーション)
- GitLab Runner(CI/CD ランナー)
- Omnibus GitLab(インストールパッケージ)
- Gitaly(Git RPC サービス)
- GitLab Pages(静的サイト)
- GitLab Agent(Kubernetes 統合。KAS を含みます)
- 最適化された Docker イメージ:スパースチェックアウトとフィルターを使用してサイズを最小限に抑えます
Docker イメージのビルド
GitLab のバージョンを確認する
使用する GitLab リリースの最新のパッチバージョンを探します:
特定のバージョン向けにビルドする
# Set the GitLab version you want (use full patch version)
GITLAB_VERSION=18.7.2
# Build the image
GITLAB_MINOR=$(echo $GITLAB_VERSION | cut -d. -f1,2)
docker build -f docker/Dockerfile --build-arg GITLAB_VERSION=$GITLAB_VERSION \
-t gitlab-docs-mcp:$GITLAB_VERSION \
-t mcp/gitlab-docs-mcp:$GITLAB_VERSION \
-t gitlab-docs-mcp:$GITLAB_MINOR \
-t mcp/gitlab-docs-mcp:$GITLAB_MINOR .
# Verify the images were created
echo "\nCreated images:"
docker images | grep gitlab-docs-mcp
# Test the image - initialize and list tools
echo "\nTesting MCP server initialization:"
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | \
docker run -i --rm mcp/gitlab-docs-mcp:$GITLAB_VERSION | jq .
echo "\nListing available tools:"
(echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'; \
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}') | \
docker run -i --rm mcp/gitlab-docs-mcp:$GITLAB_VERSION 2>/dev/null | tail -1 | jq .
最新版(Main ブランチ)向けにビルドする
docker build -f docker/Dockerfile \
-t gitlab-docs-mcp:latest \
-t mcp/gitlab-docs-mcp:latest .
# Verify the images were created
echo "\nCreated images:"
docker images | grep gitlab-docs-mcp
# Test the image - initialize and list tools
echo "\nTesting MCP server initialization:"
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | \
docker run -i --rm mcp/gitlab-docs-mcp:latest | head -20
echo "\nListing available tools:"
(echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'; \
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}') | \
docker run -i --rm mcp/gitlab-docs-mcp:latest 2>/dev/null | tail -1 | jq .```
## Installation
This server is published to the [MCP Community Registry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.nunolima/gitlab-docs-mcp).
### Prerequisites
- Docker installed and running
- MCP-compatible client (Claude Desktop, Cline, Cursor, etc.)
### Setup Instructions
#### Claude Desktop
1. **Locate your config file**:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
2. **Add the server configuration**:
```json
{
"mcpServers": {
"gitlab-docs": {
"command": "docker",
"args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"]
}
}
}
- Claude Desktop を再起動する — MCP ツールメニュー(🔌 アイコン)にサーバーが表示されます
Cline(VS Code 拡張機能)
- VS Code で Cline の設定を開きます
- MCP Servers セクションに移動します
- 次の設定を追加します:
{ "mcpServers": { "gitlab-docs": { "command": "docker", "args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"] } } } - VS Code ウィンドウを再読み込みします
Cursor
- Cursor の設定を開きます
- Features → Model Context Protocol に移動します
- サーバー設定を追加します:
{ "mcpServers": { "gitlab-docs": { "command": "docker", "args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"] } } }
バージョンの選択
GitLab のデプロイに一致するバージョンを選択します:
// For GitLab 18.7.x
"args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"]
// For latest GitLab version
"args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:latest"]
動作確認
セットアップ後、サーバーが動作していることを確認します:
- Claude Desktop の場合:🔌 アイコンを探し、「gitlab-docs」が一覧に表示されていることを確認します
- クエリをテストする:Claude に GitLab ドキュメントの検索を依頼します。例:「CI/CD パイプラインの設定について GitLab ドキュメントを検索して」
- Docker を確認する:クエリを実行した後に
docker ps -aを実行し、コンテナーが起動したか確認します
適切なテスト用 AI リクエストメッセージの例:Using only the "gitlab-docs-mcp" mcp tools as source, what is the latest x.y.z GitLab version covered in the GitLab upgrade notes (doc/update/versions/)?
トラブルシューティング
サーバーがクライアントに表示されない場合:
- Docker が実行中であることを確認します:
docker info - 設定ファイルの JSON が有効であることを確認します(末尾のカンマがないこと、引用符が正しいこと)
- MCP クライアントを完全に再起動します
「Cannot connect to Docker daemon」エラーが発生する場合:
- Docker Desktop を起動します
- Docker にアクセスできることを確認します:
docker ps
ドキュメントのバージョンが古い場合:
- 別のバージョンタグを使用します(上記の「バージョンの選択」を参照)
- 利用可能なタグを確認します:https://hub.docker.com/r/nunolima/gitlab-docs-mcp/tags
利用可能なツール
接続すると、サーバーは次のツールを提供します(MCP Python SDK v2、構造化出力):
search_docs:すべての GitLab ドキュメントを全文検索します(パス、タイトル、リポジトリを返します)get_doc:検索結果にある正確なパスを指定して、特定のドキュメントを取得しますsearch_and_fetch:1 回の呼び出しで検索し、各検索結果の完全な Markdown を返します
リソース
docs://repos:インデックス化されたリポジトリのキーdocs://{+path}:インデックス化されたドキュメントのパスに対応する完全な Markdown
クエリの例
AI アシスタントに次のように尋ねてみてください:
- 「Docker を使って GitLab Runner をセットアップする方法について GitLab ドキュメントを検索して」
- 「GitLab CI/CD パイプラインの構文に関するドキュメントを探して」
- 「バックアップと復元について、GitLab ドキュメントには何と書かれている?」
- 「GitLab Pages のカスタムドメイン設定を検索して」
仕組み
- ビルド時:スパースチェックアウトを使用して、GitLab リポジトリからドキュメントフォルダーをクローンします
- インデックス化:Markdown ファイルを解析し、SQLite FTS5 の検索インデックスを作成します
- 実行時:MCP サーバーが検索ツールを提供し、インデックス化されたドキュメントを検索できるようにします
バージョン管理戦略
- メインの GitLab リポジトリ:完全なバージョンタグを使用します(例:
v18.7.2-ee) - Omnibus GitLab:+ee サフィックス付きの完全なバージョンを使用します(例:
18.7.2+ee.0) - その他のリポジトリ:major.minor.0 形式のバージョンを使用します(例:
v18.7.0)- 各 major.minor バージョンの最初の安定版(.0)を使用します
- 例:GitLab 18.7.2 をビルドする場合、Runner/Gitaly/Pages/Agent v18.7.0 を使用します
開発
プロジェクト構成
python/gitlab-docs-mcp/
├── docker/
│ └── Dockerfile # Main Dockerfile with version support
├── indexer/
│ └── build_index.py # Builds search index from markdown files
├── server/
│ └── main.py # MCP server implementation
├── data/
│ └── docs.db # SQLite FTS5 database (generated)
└── repos/ # Cloned documentation (generated)
ローカル開発
# Install dependencies
pip install -r requirements.txt
# Clone repos manually for testing
# (or let Docker handle it)
# Build index
python indexer/build_index.py
# Run server (stdio)
python -m server.main
統合テスト(curl + jq)
test.sh は Streamable HTTP を使用する Docker イメージを起動し、MCP プロトコル 2026-07-28 に対して、discover、ツール、リソースを検証します。
# Rebuild image first, then:
./test.sh 19.0.5
# Or against an already-running HTTP server:
MCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_PORT=8000 python -m server.main
MCP_BASE_URL=http://127.0.0.1:8000/mcp ./test.sh
ライセンス
MIT License - Copyright (c) 2026 Nuno Lima
このプロジェクトは、GitLab のオープンソースリポジトリからドキュメントをインデックス化します。詳細については、各リポジトリのライセンスをご確認ください。
謝辞
このプロジェクトの開発は、AI 支援開発ツールへのアクセスを提供した OLX の支援を受けました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。