GitLab Documentation MCP Server

io.github.nunolima由 GitHub 帳號 nunolima 發布v0.1.1更新於 Oct 24, 2026

Searchable access to GitLab documentation from multiple repositories with full-text search.

發布方自己的服務:Gitlab

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓 AI 助理對多個官方儲存庫的 GitLab 文件進行全文檢索,並依你使用的 GitLab 版本提供內容。

可以做什麼
在已建立索引的多個儲存庫中全文搜尋 GitLab 文件,回傳路徑、標題與儲存庫名稱(search_docs)。依搜尋結果中的確切路徑取得指定文件(get_doc)。一次呼叫完成搜尋並回傳每筆結果的完整 Markdown(search_and_fetch)。透過資源檢視已索引的儲存庫鍵,並讀取某篇已索引文件的完整 Markdown。
適用情境
適合讓助理依據官方文件而非模型記憶回答 GitLab 問題,例如 CI/CD 流程語法、Runner 設定、Pages 組態或備份與還原,並希望答案對應特定的 GitLab 版本。
執行需求
需要安裝並執行 Docker,以及相容 MCP 的用戶端。伺服器以本機 stdio 程序形式從已發佈的容器映像執行;未宣告驗證、API 金鑰或環境變數。映像依選定的 GitLab 版本或最新版建置。
安裝前請注意
文件索引在建置映像時固定,答案反映所標記的版本而非上游最新文件,應選擇與你的部署相符的版本標籤。用戶端每次使用都會啟動容器,因此 Docker 需保持執行。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 GitLab Documentation MCP Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

GitLab Documentation MCP Server

A Model Context Protocol (MCP) server that provides searchable access to GitLab's official documentation. This server indexes markdown documentation from multiple GitLab OSS repositories and makes it available for AI assistants and other MCP clients.

Features

  • Full-text search across GitLab documentation using SQLite FTS5
  • Version-specific docs - Build for any GitLab version (e.g., 18.7.2) or latest
  • Multiple repositories indexed:
    • GitLab CE/EE (main application)
    • GitLab Runner (CI/CD runner)
    • Omnibus GitLab (installation packages)
    • Gitaly (Git RPC service)
    • GitLab Pages (static sites)
    • GitLab Agent (Kubernetes integration, includes KAS)
  • Optimized Docker image - Uses sparse checkout and filters to minimize size

Building the Docker Image

Find the GitLab Version

Look for the latest patch version for your desired GitLab release:

Build for Specific Version

bash
# Set the GitLab version you want (use full patch version)GITLAB_VERSION=18.7.2
# Build the imageGITLAB_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 createdecho "\nCreated images:"docker images | grep gitlab-docs-mcp
# Test the image - initialize and list toolsecho "\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 .

Build for Latest (Main Branch)

bash
docker build -f docker/Dockerfile \    -t gitlab-docs-mcp:latest \    -t mcp/gitlab-docs-mcp:latest .
# Verify the images were createdecho "\nCreated images:"docker images | grep gitlab-docs-mcp
# Test the image - initialize and list toolsecho "\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 -20echo "\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"]       }     }   }
  1. Restart Claude Desktop - The server will appear in the MCP tools menu (🔌 icon)
Cline (VS Code Extension)
  1. Open Cline settings in VS Code
  2. Navigate to MCP Servers section
  3. Add this configuration:
    json
    {  "mcpServers": {    "gitlab-docs": {      "command": "docker",      "args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"]    }  }}
  4. Reload VS Code window
Cursor
  1. Open Cursor settings
  2. Go to Features → Model Context Protocol
  3. Add the server configuration:
    json
    {  "mcpServers": {    "gitlab-docs": {      "command": "docker",      "args": ["run", "-i", "--rm", "nunolima/gitlab-docs-mcp:18.7"]    }  }}

Version Selection

Choose the version that matches your GitLab deployment:

json
// 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"]

Verification

After setup, verify the server is working:

  1. In Claude Desktop: Look for the 🔌 icon - you should see "gitlab-docs" listed
  2. Test a query: Ask Claude to search GitLab documentation, e.g., "Search GitLab docs for CI/CD pipeline configuration"
  3. Check Docker: Run docker ps -a after making a query to see if the container ran

An good test AI request message is: 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/)?

Troubleshooting

Server not appearing in client:

  • Ensure Docker is running: docker info
  • Check config file JSON is valid (no trailing commas, proper quotes)
  • Restart your MCP client completely

"Cannot connect to Docker daemon" error:

  • Start Docker Desktop
  • Verify Docker is accessible: docker ps

Old documentation version:

Available Tools

Once connected, the server provides these tools (MCP Python SDK v2, structured outputs):

  • search_docs: Full-text search across all GitLab documentation (returns paths, titles, repos)
  • get_doc: Retrieve a specific document by exact path from search results
  • search_and_fetch: Search and return full markdown for each hit in one call

Resources

  • docs://repos: Indexed repository keys
  • docs://{+path}: Full markdown for an indexed document path

Example Queries

Try asking your AI assistant:

  • "Search GitLab docs for how to set up GitLab Runner with Docker"
  • "Find documentation about GitLab CI/CD pipeline syntax"
  • "What does the GitLab documentation say about backup and restore?"
  • "Search for GitLab Pages custom domain configuration"

How It Works

  1. Build time: Clones doc folders from GitLab repositories using sparse checkout
  2. Indexing: Parses markdown files and builds an SQLite FTS5 search index
  3. Runtime: MCP server provides search tools to query the indexed documentation

Versioning Strategy

  • Main GitLab repo: Uses full version tag (e.g., v18.7.2-ee)
  • Omnibus GitLab: Uses full version with +ee suffix (e.g., 18.7.2+ee.0)
  • Other repositories: Use major.minor.0 version (e.g., v18.7.0)
    • This uses the first stable release (.0) for each major.minor version
    • Example: Building GitLab 18.7.2 will use Runner/Gitaly/Pages/Agent v18.7.0

Development

Project Structure

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)

Local Development

bash
# Install dependenciespip install -r requirements.txt
# Clone repos manually for testing# (or let Docker handle it)
# Build indexpython indexer/build_index.py
# Run server (stdio)python -m server.main

Integration tests (curl + jq)

test.sh starts the Docker image with Streamable HTTP and validates discover, tools, and resources against MCP protocol 2026-07-28:

bash
# 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.mainMCP_BASE_URL=http://127.0.0.1:8000/mcp ./test.sh

License

MIT License - Copyright (c) 2026 Nuno Lima

This project indexes documentation from GitLab's open source repositories. See individual repository licenses for details.

Acknowledgments

Development of this project was supported by OLX, which provided access to AI-assisted development tools.

來源:README.md,提交 30cc1f2

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Gitlab 整合