GitLab API交互工具

一个基于模型上下文协议(MCP)的服务器,提供通过自然语言命令与GitLab API交互的功能,包括搜索仓库、管理问题、创建分支等。

  • by nooqta
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 nooqta/custom-gitlab-server

使用说明

GitLab MCP服务器(noqta-GitLab服务器)

A. 模型上下文协议(MCP) 服务器,提供与GitLab API交互的工具。

该服务器允许AI助手(如通过MCP集成的Claude)直接通过自然语言命令在GitLab上执行各种操作,如搜索存储库、管理问题、创建分支等。

功能/可用工具

此服务器公开以下工具供MCP客户端使用:

  • search_repositories:按名称搜索GitLab项目。
  • get_project_from_git_url:从git远程URL获取GitLab项目详细信息。
  • list_issues:列出特定GitLab项目的问题(可按状态、标签、受让人、范围过滤)。
  • get_my_issues:列出所有项目中分配给经过身份验证的用户或由其创建的问题(可按状态、范围过滤)。
  • get_issue:通过IID获取项目中特定问题的详细信息。
  • create_issue_note:对特定问题添加评论(注释)。
  • update_issue:更新问题的属性(例如,标题、描述、标签、状态)。
  • bulk_update_issues:一次更新项目中多个问题的属性。
  • create_branch:从指定的引用在项目中创建新分支。
  • create_issue:在项目中创建新问题。
  • list_documentation_wiki_pages:列出已配置文档项目的文档wiki页面。
  • get_documentation_wiki_page:通过slug为配置的文档项目获取文档维基页面。
  • list_wiki_pages:列出特定GitLab项目的wiki页面(默认为 DOC_WIKI_PROJECT_PATH).
  • create_merge_request:创建新的合并请求。
  • list_issue_notes:列出特定问题的评论(注释)。
  • create_merge_request_note:为特定的合并请求添加注释(note)。
  • search_user:通过电子邮件或用户名搜索GitLab用户。
  • create_repository:在用户或组命名空间下创建一个新的GitLab项目(存储库)。

(请参阅服务器的 ListTools 响应或源代码(src/index.ts)了解每个工具的详细输入模式。)

先决条件

  • Node.js(推荐LTS版本)
  • npm(通常包含在Node.js中)
  • GitLab帐户(GitLab.com或自托管)
  • GitLab个人访问令牌 api 和 read_api 范围。

安装和设置

  1. 克隆存储库:

    git clone https://github.com/nooqta/noqta-gitlab-server.git # Replace with actual URL after creation
    cd noqta-gitlab-server
    
  2. 安装依赖项:

    npm install
    
  3. 配置环境变量:

    • 复制示例环境文件:
      cp .env.example .env
      
    • 编辑 .env 文件:
      • 生成一个 GitLab个人访问令牌:转到您的GitLab个人资料->设置->访问令牌。使用创建令牌 api 和 read_api 范围。
      • 将生成的令牌粘贴到 .env 为了 GITLAB_PERSONAL_ACCESS_TOKEN 变量。
      • (可选) 如果你使用自托管的GitLab实例,请更新 GITLAB_API_URL 以指向实例的API端点(例如。, https://gitlab.yourcompany.com/api/v4).否则,将其保留为gitlab.com的默认设置。
      • (可选) 集 DOC_WIKI_HOME_URL 转到您的wiki主页URL。如果 DOC_WIKI_PROJECT_PATH 如果未设置,则它来自此URL。
  4. 构建服务器:

    npm run build
    

    这将TypeScript代码编译为JavaScript build/ 目录。

运行服务器

直接使用Node.js(克隆和构建后)

如果您已经克隆了存储库并构建了项目(npm run build),您可以直接运行服务器:

node build/index.js

使用npx(发布到npm后)

一旦包发布到npm(如 @nooqta/gitlab-mcp-server),您可以使用直接运行它 npx 无需克隆或手动安装。 npx 将下载并执行该包。

npx @nooqta/gitlab-mcp-server

注: 当通过时 npx,服务器仍然需要环境变量(GITLAB_PERSONAL_ACCESS_TOKEN 并且可选 GITLAB_API_URL)在执行的环境中设置 npx 命令,或可通过 .env 运行目录中的文件 npx.

服务器通过标准输入/输出(stdio)进行通信。对于持久使用,考虑使用流程管理器运行它,例如 pm2 或 systemd.

集成(示例:Claude Desktop)

要将此服务器与Claude Desktop等MCP客户端一起使用,请将其配置添加到客户端的设置文件中。

配置文件位置:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

示例 claude_desktop_config.json 条目(使用npx):

{
  "mcpServers": {
    "@nooqta/gitlab-mcp-server": {
      "command": "npx",
      "args": ["-y", "@nooqta/gitlab-mcp-server"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "...",
        "GITLAB_API_URL": "..."
      }
    }
  }
  // Potentially other configurations...
}

示例 claude_desktop_config.json 条目(使用本地构建):

{
  "mcpServers": {
    "@nooqta/gitlab-mcp-server": {
      // Use the package name for consistency, even if running locally
      "command": "/full/path/to/your/custom-gitlab-server/build/index.js",
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "...",
        "GITLAB_API_URL": "..."
      }
    }
    // Potentially other configurations...
  }
}

重要安全提示: 此服务器使用 dotenv 加载 GITLAB_PERSONAL_ACCESS_TOKEN 和 GITLAB_API_URL 从一 .env 文件。 从不 将您的实际令牌或敏感URL直接放入MCP客户端配置文件中(如 claude_desktop_config.json)使用 env 财产。始终使用 .env 文件(位于服务器的本地运行项目目录中,或位于以下目录中 npx 执行)或通过操作系统的环境提供变量。

发展

  • 构建: npm run build (编译TypeScript并设置可执行权限)
  • 观看模式: npm run watch (文件更改时自动重新编译)

调试

由于MCP服务器通过stdio进行通信,直接调试可能会很棘手。使用 MCP检查员 为了更容易调试:

npm run inspector

此命令启动连接了检查器的服务器。在浏览器中打开控制台输出中提供的URL,查看MCP消息和服务器日志。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请查看 贡献.md 文件指南。