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 集成