GitLab问题列表服务器

一个用于列出和过滤GitLab问题的模型上下文协议(MCP)服务器,支持本地Docker运行和开发容器集成。

  • by estrazulas
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 estrazulas/mcp-gitlab

使用说明

MCP GitLab发布服务器

用于列出GitLab过滤器问题的模型上下文协议(MCP)服务器。

特性

  • 列出GitLab项目的问题
  • 列出可访问的GitLab项目以推断正确的项目路径
  • 按用户、项目、里程碑和标签筛选
  • 使用GitLab应用程序令牌进行身份验证(只读)
  • 在Docker中本地运行

设置

  1. 克隆存储库
  2. 以.env.example.为基础的Config.env
  3. 插入您的gitlab个人令牌
  4. 运行docker

码头工人

使用Docker构建和运行:

# Start MCP SERVER
docker compose up -d --build

# GET LOGS
docker compose logs -f

# REMOVE MCP_SERVER FROM DOCKER
docker compose down

开发人员容器(可选)

对于不在本地安装任何东西的完整开发环境,请使用VS Code Dev Containers:

  1. 在VS Code中打开项目
  2. 出现提示时,单击“在容器中重新打开”或使用命令面板: Dev Containers: Reopen in Container
  3. 容器将在端口8000上自动构建并启动MCP服务器

Dev容器包括:

  • 具有所有依赖项的Python环境
  • Python开发的VS代码扩展
  • MCP服务器在后台运行
  • 端口转发,便于访问

配置(必填)

服务器使用环境变量进行配置。您可以直接设置它们或使用 .env 文件:

  • GITLAB_BASE_URL:您的GitLab实例URL(默认值:https://git.yourorg.edu.br)
  • GITLAB_TOKEN:您的GitLab应用程序令牌(必填)

使用.env文件(推荐)

  1. 复制示例文件: cp .env.example .env
  2. 编辑 .env 根据您的实际值:
    GITLAB_BASE_URL=https://git.yourorg.edu.br
    GITLAB_TOKEN=glpat-your-actual-token-here
    

服务器将自动从 .env 文件。

客户端集成

1.配置MCP(stdio——推荐)

服务器通过运行 标准,让Claude Code自动管理流程。

克劳德代码 --添加到 .claude/settings.json 在您的项目中:

{
  "mcpServers": {
    "gitlab-issues": {
      "type": "stdio",
      "command": ".venv/bin/python",
      "args": ["-m", "src.server"]
    }
  }
}

或者通过CLI添加:

claude mcp add gitlab-issues stdio -- python -m src.server

VS代码 --添加到 .vscode/mcp.json:

{
  "servers": {
    "gitlab-issues": {
      "type": "stdio",
      "command": ".venv/bin/python",
      "args": ["-m", "src.server"],
      "tools": [
        "list_projects",
        "list_issues"
      ]
    }
  }
}

2.替代方案——通过Docker实现SSE

如果你更喜欢将服务器作为网络服务(SSE)运行,请使用Docker:

docker compose up -d --build

然后配置MCP客户端 http://127.0.0.1:8000/sse 和 type: "sse".

3.重新启动VSCode或Claude

关闭并重新打开AI CLI以使更改生效。

4.示例

连接后,只需询问您的GitLab问题:

  • “列出我的GitLab项目”
  • “显示此MCP服务器中可用的工具”
  • “找到名为xyz和xpto的GitLab项目,然后列出分配给daniel.estrazulas的所有问题”
  • “列出分配给daniel.estrazulas的xyz的所有未决问题”
  • “列出项目myproject中的所有未解决问题”
  • “显示分配给john.doe的问题”
  • “获取带有“关键”标签的错误”
  • “列出所有已解决的问题”

典型流程:

  1. 呼叫 list_projects 查找正确的项目或命名空间路径。
  2. 使用返回的 path_with_namespace 作为 project_id 在 list_issues.
  3. 过滤器问题 assignee_username, milestone, labels,或 state 根据需要。

可用工具

  • list_projects:列出可访问的GitLab项目,以便LLM可以推断出正确的路径。
  • list_issues:使用可选筛选器列出单个项目的问题。

Claude/VSCode可以调用 list_projects 首先推断权利 path_with_namespace,然后致电 list_issues 自动。

可用工具: list_issues

参数:

  • project_idGitLab项目的ID或路径(必填)
  • assignee_username:按受让人用户名筛选(可选)
  • milestone:按里程碑标题筛选(可选)
  • labels:逗号分隔的标签列表(可选)
  • state:问题状态- opened, closed,或 all (默认值: opened)

可用工具: list_projects

参数:

  • search:可选搜索词,按名称或路径缩小项目列表
  • membership:仅限于令牌所属的项目,这是默认的,通常最适合推理
  • per_page:从GitLab获取项目时使用的页面大小

使用返回的 path_with_namespace 价值与 list_issues.

可用提示: listar_issues_projetos

服务器还公开了一个可重用的MCP提示符,名为 listar_issues_projetos.

  • 它重用来自的内容 src/prompts/listar_issues_projetos.md
  • 它可供支持快速发现的MCP客户端使用
  • 在VS Code中,提示出现在服务器的MCP功能旁边,可以从客户端UI插入或执行

此提示是只读的,不会改变方式 list_issues 作品。

检查MCP

# stdio mode (current)
npx @modelcontextprotocol/inspector .venv/bin/python -m src.server

# SSE mode (when running via Docker)
# npx @modelcontextprotocol/inspector http://127.0.0.1:8000/sse