使用说明
项目简介
'GitLab GraphQL MCP 服务器' 是一个基于 Model Context Protocol (MCP) 框架开发的后端服务,旨在为大型语言模型 (LLM) 提供访问 GitLab 实例的能力。通过此服务,LLM 可以安全地查询 GitLab 资源,例如项目、用户、合并请求等,并利用缓存机制提高效率。该服务器作为一个 MCP 插件,可以方便地集成到支持 MCP 协议的 LLM 客户端,例如 Claude。
主要功能点
- GitLab GraphQL API 集成: 无缝对接 GitLab GraphQL API,支持强大的数据查询能力。
- 项目数据掩码: 根据项目可见性自动处理敏感数据,提供多种掩码模式(简单模式和内容模式)以保护私有项目信息。
- 智能 URL 处理: 自动识别并保留 GitLab 域名 URL,同时对非 GitLab 敏感 URL 进行掩码处理。
- 高效缓存管理: 缓存项目可见性状态,减少不必要的 API 请求,提升性能。
- 灵活查询支持: 支持查询各种 GitLab 资源,包括项目、用户、群组、合并请求等。
- 资源访问: 提供 'file://' 协议的资源访问,允许 LLM 引用之前检索到的 GitLab 数据,增强对话连贯性。
安装步骤
- 安装依赖: 确保已安装 Node.js 和 npm,然后克隆仓库到本地并进入项目目录,运行命令安装项目依赖:
npm install - 构建项目: 运行命令构建项目,将 TypeScript 代码编译为 JavaScript 代码:
npm run build - 启动服务: 配置好环境变量后,运行命令启动 MCP 服务器:
npm run start
服务器配置
MCP 服务器需要配置以下环境变量才能正常连接到 GitLab 实例:
- 'GITLAB_API_URL': GitLab 实例的 API 地址。例如:'https://your-gitlab-instance.com'。请替换为您的 GitLab 实例地址。
- 'GITLAB_TOKEN': GitLab 访问令牌。需要具有访问 GitLab API 的权限。请在 GitLab 中生成个人访问令牌并替换此处。
- 'GITLAB_MASK_MODE': 掩码模式,可选值 'simple' 或 'content'。
- 'simple': (默认) 私有项目仅返回 id, name, webUrl 和 visibility 字段,其他信息完全隐藏。
- 'content': 私有项目返回所有字段,但敏感内容(如路径、描述、用户名等)会被 "***" 掩码。
为了让 MCP 客户端(如 Claude)连接到此服务器,您需要在客户端的配置文件中添加服务器配置信息。以 Claude Desktop Client 为例,配置信息如下 (请根据您的MCP客户端实际要求进行配置):
{ "mcpServers": { "@zephyr-mcp/gitlab-gql": { // server name:服务器名称,用于在客户端中标识和引用 "command": "npx", // command: 启动服务器的命令,这里使用 npx 运行 @zephyr-mcp/gitlab-gql 包 "args": ["-y", "@zephyr-mcp/gitlab-gql"] // args: 启动命令的参数,'-y' 表示自动确认执行包,'@zephyr-mcp/gitlab-gql' 是 package.json 中配置的启动入口 // 注意: 实际部署时,如果将服务发布到 npm,可以直接使用包名作为 server name 和 args。 // 如果是本地开发或直接运行,可能需要调整 command 和 args 以指向正确的启动脚本。 } } }
配置说明(重要):
- 'server name' (服务器名称): '"@zephyr-mcp/gitlab-gql"' 是为此 MCP 服务器定义的名字,客户端会通过这个名字来识别和调用它。您可以自定义名称,但需要与客户端配置保持一致。
- 'command' (启动命令): '"npx"' 表示使用 'npx' 命令来执行后续的包。'npx' 是 npm 包管理器自带的工具,用于方便地运行本地或远程的 npm 包。
- 'args' (启动参数): '["-y", "@zephyr-mcp/gitlab-gql"]' 是传递给 'npx' 命令的参数。
- '"-y"': 是 'npx' 的参数,表示 "yes",用于自动确认执行 npm 包,避免在启动时出现交互式提示。
- '"@zephyr-mcp/gitlab-gql"': 指定要 'npx' 运行的 npm 包名称。 由于 'package.json' 中配置了 'bin' 字段,指向了服务器的入口文件 ('src/index.ts'),'npx' 可以找到并执行服务器代码。
请根据您的 MCP 客户端的具体配置要求,调整上述 JSON 配置。 关键是确保 'command' 和 'args' 能正确启动 'GitLab GraphQL MCP 服务器'。
基本使用方法
- 启动 MCP 服务器: 按照上述安装步骤和服务器配置启动 'GitLab GraphQL MCP 服务器'。
- 配置 MCP 客户端: 在支持 MCP 协议的 LLM 客户端 (例如 Claude) 中,根据客户端的指引配置 MCP 服务器连接。通常需要提供服务器名称 (例如 '"@zephyr-mcp/gitlab-gql"') 和启动命令 (如上面 'claude_desktop_config.json' 中的配置)。
- 在 LLM 中使用: 配置完成后,LLM 应该能够通过 MCP 协议与 'GitLab GraphQL MCP 服务器' 通信。您可以指示 LLM 使用 'gitlab_gql' 工具执行 GraphQL 查询,或者使用 'file' 资源访问缓存的 GitLab 数据。
工具调用示例 (在 LLM 客户端中指示模型执行 Tool Call):
- 搜索项目: 让 LLM 调用 'gitlab_gql' 工具,并提供如下参数:
{ "tool_call": { "name": "gitlab_gql", "arguments": { "query": "{projects(search: \\"project name\\") { nodes { id name webUrl visibility } }}", "queryType": "projects" } } } - 获取特定项目:
{ "tool_call": { "name": "gitlab_gql", "arguments": { "query": "{project(fullPath: \\"namespace/project\\") { id name webUrl visibility }}", "queryType": "project", "projectPath": "namespace/project" } } } - 访问缓存文件: 让 LLM 使用 'file' 资源读取缓存文件内容:
或使用更灵活的路径:resource:///file:///.cache/gitlab-projects-cache.jsonresource:///file:///{cwd}/.cache/gitlab-projects-cache.json
请参考仓库的 'README.md' 和代码注释,了解更多工具和资源的详细使用方法和参数说明。
信息
分类
开发者工具