gitlab-api
Gitlab Api
CLI 或 API | MCP | Agent
版本:27.1.0
文档 — 安装、部署、跨 API、CLI 和 MCP 接口的使用、集成的 A2A 代理服务器,以及配置底层 GitLab 实例的指南,均维护在官方文档中。
Related MCP server: Kepler MCP GitLab Server
概述
Gitlab Api 是一个生产级代理和模型上下文协议(MCP)服务器,旨在直接与 GitLab API + MCP Server + A2A Server 交互。
主要特性
整合的操作路由 MCP 工具: 通过将方法分组为优化的、可切换的工具模块,最小化 LLM 上下文中的令牌开销并消除工具冗余。
企业级安全: 全面支持 Eunomia 策略、OIDC 令牌委派和细粒度执行上下文跟踪。
集成图代理: 内置 Pydantic AI 代理,支持代理控制协议(ACP)和标准 Web 接口(AG-UI)。
原生遥测与追踪: 开箱即用的 OpenTelemetry 导出和原生 Langfuse 追踪。
CLI 或 API
该代理封装了 GitLab API + MCP Server + A2A Server API。您可以通过编程方式或通过其集成的执行入口点与之交互。
有关如何使用底层 API 包装器、扩展模式绑定和开发者 SDK 参考的详细说明,请参阅 docs/index.md。
MCP
该服务器利用动态操作路由工具来优化令牌开销并最大化 IDE 兼容性。
工具表面 — MCP_TOOL_MODE
设置 MCP_TOOL_MODE(在共享的 ~/.config/agent-utilities/config.json 或环境变量中):condensed(默认 — 下面的操作路由工具)、verbose(每个 API 方法对应一个命名的 1:1 工具,例如 gitlab_get_branches(...),标记为 verbose)或 both。使用 --tools tag:verbose / MCP_ENABLED_TAGS=verbose 过滤 verbose 集合。请参阅 agent-utilities MCP 工具模式指南。
可用的 MCP 工具
从实时 MCP 服务器自动生成 — 请勿手动编辑。
整合的操作路由工具(默认 — MCP_TOOL_MODE=condensed)
MCP 工具 | 切换环境变量 | 描述 |
|
| 直接执行任意 GitLab REST API 请求。 |
|
| 管理 gitlab 分支操作。 |
|
| 管理 gitlab 提交操作。 |
|
| 管理 gitlab 部署令牌操作。 |
|
| 实时发现动态 GitLab GraphQL 模式,包括类型、字段和自定义属性。 |
|
| 管理 gitlab 环境操作。 |
|
| 管理 GitLab 史诗。 |
|
| 在 GitLab 上原生执行原始 GraphQL 查询和变更。 |
|
| 按名称运行类型化的 GitLab GraphQL 操作。 |
|
| 管理 gitlab 组操作。 |
|
| 将 GitLab CI 流水线运行(+ 作业)原生摄取到 epistemic-graph 中。 |
|
| 将 GitLab 项目原生摄取到 epistemic-graph 中,作为类型化的 :Project 节点。 |
|
| 列出已配置的 GitLab 租户(CONCEPT:AU-KG.backend.declared-columns-so-schema)。 |
|
| 管理 GitLab 问题。 |
|
| 管理 gitlab 作业操作。 |
|
| 管理 GitLab 标签。 |
|
| 管理 gitlab 成员操作。 |
|
| 管理 gitlab 合并请求操作。 |
|
| 管理 gitlab 合并规则操作。 |
|
| 管理 GitLab 里程碑。 |
|
| 管理 gitlab 命名空间操作。 |
|
| 管理 GitLab 在问题、合并请求、提交和史诗上的备注/评论。 |
|
| 管理 gitlab 包操作。 |
|
| 管理 gitlab 流水线计划操作。 |
|
| 管理 gitlab 流水线操作。 |
|
| 管理 gitlab 项目操作。 |
|
| 管理 gitlab 受保护分支操作。 |
|
| 管理 gitlab 发布操作。 |
|
| 管理 gitlab 运行器操作。 |
|
| 管理 GitLab 代码片段。 |
|
| 管理 gitlab 标签操作。 |
|
| 管理 gitlab 用户操作。 |
|
| 审查项目的依赖列表和安全漏洞(GitLab 对应 GitHub Dependabot 的功能)。 |
|
| 管理 gitlab wiki 操作。 |
详细的 1:1 API 映射工具(MCP_TOOL_MODE=verbose 或 both)
MCP 工具 | 切换环境变量 | 描述 |
|
| 接受(合并)一个合并请求。 |
|
| 向 GitLab 服务器发起自定义 API 请求。 |
|
| 批准特定的合并请求。 |
|
| 归档特定的项目。 |
|
| 取消合并请求已排队的“流水线成功时合并”(自动合并)。 |
|
| 取消项目中的特定作业。 |
|
| 将提交拣选到新分支。 |
|
| 在项目中创建新分支。 |
|
| 创建新提交。 |
|
| 在提交上创建评论。 |
|
| 为项目创建新环境。 |
|
| 创建新的组史诗。 |
|
| 为组创建部署令牌。 |
|
| 创建新问题。 |
|
| 创建新标签。 |
|
| 创建新的合并请求。 |
|
| 创建项目里程碑。 |
|
| 在问题上创建新的备注/评论。 |
|
| 为特定项目创建流水线计划。 |
|
| 为流水线计划创建变量。 |
|
| 创建新项目。 |
|
| 为项目创建部署令牌。 |
|
| 创建新的项目级合并请求批准规则。 |
|
| 在项目中创建新发布。 |
|
| 为项目中的发布创建证据。 |
|
| 创建项目代码片段或个人代码片段。 |
|
| 在项目中创建标签。 |
|
| 创建新用户。 |
|
| 为项目创建新的 Wiki 页面。 |
|
| 删除项目中的分支。 |
|
| 删除项目的环境。 |
|
| 删除组史诗。 |
|
| 删除组的部署令牌。 |
|
| 删除问题。 |
|
| 删除标签。 |
|
| 删除项目中所有已合并的分支。 |
|
| 删除项目里程碑。 |
|
| 删除备注。 |
|
| 删除特定项目的流水线计划。 |
|
| 从流水线计划中删除变量。 |
|
| 删除特定项目。 |
|
| 删除项目的部署令牌。 |
|
| 删除项目级合并请求批准规则。 |
|
| 从项目中删除运行器。 |
|
| 删除项目中的发布。 |
|
| 删除运行器。 |
|
| 取消特定项目与组的共享。 |
|
| 删除代码片段。 |
|
| 删除项目中已停止的环境(审查应用)。 |
|
| 删除项目中的标签。 |
|
| 删除用户。 |
|
| 删除项目的 Wiki 页面。 |
|
| 从组的发布中下载发布资产。 |
|
| 下载特定项目的仓库包。 |
|
| 编辑特定组。 |
|
| 编辑组级合并请求批准设置。 |
|
| 编辑特定项目的流水线计划。 |
|
| 编辑特定项目。 |
|
| 编辑项目级合并请求批准设置。 |
|
| 在项目中启用运行器。 |
|
| 擦除项目中的特定作业。 |
|
| 获取特定项目的合并请求批准状态。 |
|
| 检索项目中特定分支的信息。 |
|
| 检索项目中分支的信息。 |
|
| 获取特定提交。 |
|
| 获取提交上的评论。 |
|
| 获取提交的差异。 |
|
| 获取提交上的讨论。 |
|
| 获取提交的 GPG 签名。 |
|
| 获取与提交关联的合并请求。 |
|
| 获取提交的引用。 |
|
| 获取提交的状态。 |
|
| 获取提交。 |
|
| 获取所有部署令牌。 |
|
| 获取特定环境的详细信息。 |
|
| 获取项目的环境列表。 |
|
| 获取特定的组史诗。 |
|
| 获取组的所有史诗。 |
|
| 获取特定组的详细信息。 |
|
| 获取组的特定部署令牌。 |
|
| 获取特定组的部署令牌。 |
|
| 获取特定组的后代组。 |
|
| 获取组(以及默认情况下其子组)的问题列表。 |
|
| 获取组级合并请求批准设置的详细信息。 |
|
| 获取特定组的成员。 |
|
| 获取与特定组关联的合并请求。 |
|
| 获取与特定组关联的项目。 |
|
| 获取组中发布的信息。 |
|
| 获取组中运行器的信息。 |
|
| 获取特定组的子组。 |
|
| 获取组的安全漏洞发现(Ultimate)。 |
|
| 获取组列表。 |
|
| 获取单个问题。 |
|
| 获取问题列表。可按 project_id 过滤。 |
|
| 按名称获取特定标签。 |
|
| 获取项目的所有标签。 |
|
| 获取项目中最新发布的信息。 |
|
| 获取项目中最新发布的资产。 |
|
| 获取项目中最新发布的证据。 |
|
| 获取特定项目和合并请求的合并请求级批准规则。 |
|
| 获取合并请求列表。 |
|
| 获取特定的项目里程碑。 |
|
| 获取项目的所有里程碑。 |
|
| 获取特定命名空间的信息。 |
|
| 获取命名空间的信息。 |
|
| 获取组内嵌套项目的信息。 |
|
| 获取特定备注。 |
|
| 获取特定问题的所有备注。 |
|
| 获取项目中特定流水线的信息。 |
|
| 获取项目中特定流水线关联的作业。 |
|
| 获取项目中特定流水线计划的信息。 |
|
| 获取特定项目的流水线计划。 |
|
| 获取特定项目的流水线信息。 |
|
| 获取从特定流水线计划触发的流水线。 |
|
| 获取特定项目的信息。 |
|
| 获取项目贡献者的信息。 |
|
| 获取项目的依赖列表(所有检测到的依赖)。 |
|
| 获取项目的特定部署令牌。 |
|
| 获取特定项目的部署令牌。 |
|
| 获取与特定项目关联的组。 |
|
| 获取项目中特定作业的详细信息。 |
|
| 获取项目中特定作业的日志。 |
|
| 获取与特定项目关联的作业。 |
|
| 获取特定项目级合并请求批准规则的详细信息。 |
|
| 获取项目级合并请求批准规则。 |
|
| 获取项目级合并请求批准设置的详细信息。 |
|
| 获取特定项目的成员。 |
|
| 获取项目中特定合并请求的详细信息。 |
|
| 获取特定项目的合并请求。 |
|
| 获取项目中运行器的信息。 |
|
| 获取特定项目的统计信息。 |
|
| 获取项目的安全漏洞(Ultimate)。 |
|
| 获取项目的信息。 |
|
| 获取项目中特定受保护分支的信息。 |
|
| 获取项目中受保护分支的信息。 |
|
| 获取特定受保护环境的详细信息。 |
|
| 获取项目的受保护环境列表。 |
|
| 获取项目中特定受保护标签的信息。 |
|
| 获取项目中受保护标签的信息。 |
|
| 按标签获取项目中发布的信息。 |
|
| 获取项目中发布的信息。 |
|
| 获取特定项目的仓库包信息。 |
|
| 获取特定运行器的信息。 |
|
| 获取特定运行器的作业。 |
|
| 获取运行器的信息。 |
|
| 获取特定代码片段。 |
|
| 获取代码片段列表。可按 project_id 过滤。 |
|
| 获取项目中特定标签的信息。 |
|
| 获取项目中标签的信息。 |
|
| 获取特定用户的信息。 |
|
| 获取用户的信息。 |
|
| 按全局 ID 获取单个漏洞(Ultimate)。 |
|
| 获取项目的 Wiki 页面列表。 |
|
| 获取特定 Wiki 页面的信息。 |
|
| 获取特定合并请求的批准。 |
|
| 暂停或恢复特定运行器。 |
|
| 向提交发布构建状态。 |
|
| 保护项目中的特定分支。 |
|
| 保护项目的环境。 |
|
| 保护项目中的标签。 |
|
| 为特定项目发布仓库包。 |
|
| 注册新的运行器。 |
|
| 要求项目中特定分支的代码所有者批准。 |
|
| 重置 GitLab 运行器注册令牌。 |
|
| 重置组运行器的注册令牌。 |
|
| 重置项目运行器的注册令牌。 |
|
| 重置运行器的身份验证令牌。 |
|
| 重试项目中的特定作业。 |
|
| 还原提交。 |
|
| 为特定项目运行流水线。 |
|
| 为特定项目运行流水线计划。 |
|
| 运行项目中的特定作业。 |
|
| 与组共享特定项目。 |
|
| 停止项目的环境。 |
|
| 停止项目的过期环境。 |
|
| 接管特定项目的流水线计划所有权。 |
|
| 取消批准特定的合并请求。 |
|
| 取消归档特定项目。 |
|
| 取消保护项目中的特定分支。 |
|
| 取消保护项目的环境。 |
|
| 取消保护项目中的标签。 |
|
| 更新项目的现有环境。 |
|
| 更新组史诗。 |
|
| 更新问题。 |
|
| 更新现有标签。 |
|
| 更新项目里程碑。 |
|
| 更新备注。 |
|
| 更新现有的项目级合并请求批准规则。 |
|
| 更新项目的受保护环境。 |
|
| 更新项目中发布的信息。 |
|
| 更新特定运行器的详细信息。 |
|
| 更新代码片段。 |
|
| 更新现有用户。 |
|
| 更新项目的现有 Wiki 页面。 |
|
| 为项目的 Wiki 页面上传附件。 |
|
| 验证运行器身份验证。 |
34 个按操作路由的工具(默认)· 196 个详细 1:1 工具。除非对应的 <DOMAIN>TOOL 开关设为 false,否则每个工具均启用;MCP_TOOL_MODE 选择展示形式(condensed 默认 · verbose 1:1 · both)。自动生成——请勿编辑。
详细的工具模式、参数结构及校验约束保存在 docs/usage.md 中。
动态工具选择与可见性
此 MCP 服务器支持在运行时进行动态工具集选择与可见性过滤。这允许您限制暴露的工具集,以防止撑爆 LLM 的上下文窗口。
您可以通过多种输入渠道配置工具过滤:
CLI 参数: 在启动时传入
--tools或--toolsets(或其禁用对应项--disabled-tools和--disabled-toolsets)。环境变量: 定义标准环境变量:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
HTTP SSE 请求头: 在传输初始化期间传入自定义请求头:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-mcp-enabled-tags/x-mcp-disabled-tags
HTTP SSE 请求查询参数: 直接将查询参数附加到传输连接 URL:
?tools=tool1,tool2?tags=tag1
当提供查询字符串或参数时,一个无 LLM 的知识图谱解析层(使用 DynamicToolOrchestrator)会将查询意图与已知的工具标签、名称或描述进行匹配,并具备安全回退和自动化的 24 小时后台缓存刷新功能。
MCP 配置示例
安装面向连接器的
[mcp]附加组件。 示例使用gitlab-api[mcp]通过agent-utilities[mcp]添加 FastMCP / FastAPI;所需的 Agent Utilities 核心 仍携带epistemic-graph[full]。[agent-runtime]附加组件额外 启用模型编排。
stdio 传输(本地 IDE — Cursor、Claude Desktop、VS Code)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp"
],
"env": {
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}运行时引用需要支持别名的启动器,例如 GraphOS。其他 启动器必须省略这些条目,并通过自身的运行时密钥边界注入解析后的值。
Streamable-HTTP 传输(网络 / 生产环境)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp",
"--transport",
"streamable-http",
"--port",
"8000"
],
"env": {
"TRANSPORT": "streamable-http",
"HOST": "127.0.0.1",
"PORT": "8000",
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}或者,通过 url 连接到预部署的 Streamable-HTTP 实例:
{
"mcpServers": {
"gitlab-mcp": {
"url": "http://localhost:8000/gitlab-mcp/mcp"
}
}
}以最小权限 stdio 子进程运行经过审查的容器镜像(无 监听器或已发布端口):
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--pids-limit=256 \
--tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
-e TRANSPORT=stdio \
-e MCP_TOOL_MODE=intent \
-e BRANCHESTOOL=True \
-e COMMITSTOOL=True \
-e CUSTOM_APITOOL=True \
-e DEPLOY_TOKENSTOOL=True \
-e ENVIRONMENTSTOOL=True \
-e EPICSTOOL=True \
-e GITLAB_TOKEN=your_gitlab_token_here \
-e GITLAB_URL=https://gitlab.example.com \
-e GRAPHQLTOOL=True \
-e GRAPHQL_OPSTOOL=True \
-e GROUPSTOOL=True \
-e ISSUESTOOL=True \
-e JOBSTOOL=True \
-e LABELSTOOL=True \
-e MEMBERSTOOL=True \
-e MERGE_REQUESTSTOOL=True \
-e MERGE_RULESTOOL=True \
-e MILESTONESTOOL=True \
-e MISCTOOL=True \
-e NAMESPACESTOOL=True \
-e NOTESTOOL=True \
-e PACKAGESTOOL=True \
-e PIPELINESTOOL=True \
-e PIPELINE_SCHEDULESTOOL=True \
-e PROJECTSTOOL=True \
-e PROTECTED_BRANCHESTOOL=True \
-e RELEASESTOOL=True \
-e RUNNERSTOOL=True \
-e SNIPPETSTOOL=True \
-e TAGSTOOL=True \
-e USERSTOOL=True \
-e VULNERABILITIESTOOL=True \
-e WIKITOOL=True \
registry.example.invalid/gitlab-api@sha256:<digest> gitlab-mcp对于容器化网络 HTTP,请通过运营商拥有的部署配置文件提供经过身份验证的 TLS 入口(或
直接服务器 TLS)、精确的 MCP_ALLOWED_HOSTS 以及精确的可信代理
CIDR 策略。生成器不会发出未经身份验证的非回环监听器。
根据代码读取的环境表面自动生成(MCP_TOOL_MODE + 包变量)——请勿编辑。
其他部署选项
gitlab-api 可以作为本地 stdio 进程或容器运行,也可以位于远程
网络边界之后。
部署指南 包含
详细的传输契约。
本地容器 — 以最小权限 stdio 子进程启动经过审查的不可变镜像, 无监听器或已发布端口。
远程 URL — 通过运营商提供的经过身份验证的 HTTPS 入口连接。将其 URL、出站身份引用、信任配置文件及精确的
MCP_ALLOWED_HOSTS保存在AgentConfig中。
环境变量
包环境变量
变量 | 示例 | 描述 |
|
| |
|
| |
|
| 选项:stdio、streamable-http、sse |
|
| |
|
| |
| secret-injected | |
| secret-injected | |
|
| |
|
| 选项:none、embedded、remote |
|
| |
|
| |
|
| |
| secret-injected | |
| — | 命名的 AgentConfig TLS 配置文件;留空则使用配置的默认值 |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
继承的 agent-utilities 变量(适用于每个连接器)
变量 | 示例 | 描述 |
|
| 工具表面: |
| — | 逗号分隔的工具允许列表 |
| — | 逗号分隔的工具拒绝列表 |
| — | 逗号分隔的标签允许列表 |
| — | 逗号分隔的标签拒绝列表 |
| — | 出站 MCP 子认证: |
| — | OIDC 客户端 ID(服务账户认证) |
|
| OIDC 服务账户的运行时密钥引用 |
| — | HTTP Basic 用户名( |
|
| HTTP Basic 认证的运行时密钥引用( |
|
| 详细日志 |
|
| 无缓冲的标准输出(容器中推荐) |
|
| 代理连接的 MCP 服务器 URL |
|
| 代理的 LLM 提供商 |
|
| 代理的模型 ID |
|
| 提供 AG-UI 网页界面 |
45 个包 + 16 个继承变量。从 .env.example + 共享的 agent-utilities 集合自动生成 — 请勿编辑。
服务器读取的每个变量。
连接与凭据
连接器默认是单主机的,当配置了 gitlab_instances 时是多租户的(参见 多租户)。当未配置实例时,它会回退到下面的单主机 GITLAB_* 值。
变量 | 描述 | 默认值 |
| GitLab 实例基础 URL |
|
| GitLab 个人/项目访问令牌( | — |
| 可选的运行时 TLS 配置文件选择器 | (未设置) |
多个实例在共享的 agent-utilities XDG 配置(
~/.config/agent-utilities/config.json)中的gitlab_instances下声明一次 — 每个条目包含name、url、token和可选的tls_profile。从客户端工厂按名称定位租户;未设置的实例解析为第一个配置的实例(否则使用GITLAB_URL/GITLAB_TOKEN)。
MCP 服务器 / 传输
变量 | 描述 | 默认值 |
|
|
|
| 绑定主机(HTTP 传输) |
|
| 绑定端口(HTTP 传输) |
|
| 工具表面: |
|
| 逗号分隔的工具允许/拒绝列表 | — |
| 逗号分隔的标签允许/拒绝列表 | — |
| 详细日志 |
|
| 无缓冲的标准输出(容器中推荐) |
|
工具开关
每个动作路由的工具都可以通过其开关环境变量(设置为 false)单独禁用。完整列表在上面的 可用 MCP 工具 表中(例如 PROJECTSTOOL、MERGE_REQUESTSTOOL、PIPELINESTOOL、GRAPHQLTOOL、CUSTOM_APITOOL)。
遥测与治理
变量 | 描述 | 默认值 |
| 启用 OpenTelemetry 导出 |
|
| OTLP 收集器端点 | — |
| OTLP 认证密钥 | — |
| OTLP 协议(例如 | — |
| 授权模式: |
|
| 嵌入式策略文件 |
|
| 远程 Eunomia 服务器 URL | — |
代理 CLI(仅完整 [agent] 运行时)
变量 | 描述 | 默认值 |
| 代理连接的 MCP 服务器 URL |
|
| LLM 提供商(例如 |
|
| 模型 ID(例如 |
|
| 提供 AG-UI 网页界面 |
|
参见 .env.example 获取可复制粘贴的起点。
代理
此仓库包含一个完全集成的 Pydantic AI 图代理。它通过 Agent Control Protocol (ACP) 通信,并与 Agent Web UI (AG-UI) 和终端界面无缝交互。
运行代理 CLI
要启动交互式命令行代理:
# Set credentials
export GITLAB_URL="your_value"
export GITLAB_TOKEN="your_value"
# Run the agent server
gitlab-agent --provider openai --model-id gpt-4oDocker Compose 编排
以下 docker/agent.compose.yml 将代理、Web UI 和终端界面配置在一起:
version: '3.8'
services:
gitlab-api-mcp:
image: example/gitlab-api:mcp
container_name: gitlab-api-mcp
hostname: gitlab-api-mcp
restart: always
env_file:
- ../.env
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=8000
- TRANSPORT=streamable-http
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
gitlab-api-agent:
image: example/gitlab-api@sha256:<digest>
container_name: gitlab-api-agent
hostname: gitlab-api-agent
restart: always
depends_on:
- gitlab-api-mcp
env_file:
- ../.env
command: [ "gitlab-agent" ]
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=9017
- MCP_URL=http://gitlab-api-mcp:8000/mcp
- PROVIDER=${PROVIDER:-openai}
- MODEL_ID=${MODEL_ID:-gpt-4o}
- ENABLE_WEB_UI=True
- ENABLE_OTEL=True
ports:
- "9017:9017"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9017/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
详细的图节点架构说明、自定义技能配置和代理跟踪指南可在 docs/deployment.md 中找到。
多租户(多个 GitLab 实例)
客户端原生支持多租户。实例集合在共享的 agent-utilities XDG 配置(~/.config/agent-utilities/config.json)中的 gitlab_instances 下声明一次 — 与 Knowledge-Graph GitLab 索引器读取的相同列表,因此一个配置驱动代码/元数据索引和每个 API/MCP 调用:
{
"gitlab_instances": [
{"name": "internal", "url": "https://gitlab.example.invalid", "token": "<GITLAB_TOKEN>", "tls_profile": "private-pki"},
{"name": "public", "url": "https://gitlab.com", "token": "<GITLAB_TOKEN>"}
]
}从客户端工厂按名称定位租户;裸 URL 仍然有效,未设置的实例解析为第一个配置的实例(否则使用 GITLAB_URL/GITLAB_TOKEN):
from gitlab_api.auth import get_client
from gitlab_api.instances import list_configured_instances
internal = get_client(instance="internal") # resolves URL, token, and TLS profile
public = get_client(instance="public")
default = get_client() # first configured / GITLAB_URL fallback
names = [i.name for i in list_configured_instances()]MCP 服务器暴露一个 gitlab_instances 工具(action=list|get)来发现配置的租户(令牌永远不会返回)。当未配置实例时,连接器回退到它一直使用的单主机 GITLAB_URL/GITLAB_TOKEN。
安全与治理
直接构建在企业级 agent-utilities 核心之上,完全支持标准安全参数:
访问控制与策略执行
Eunomia 策略: 细粒度、策略驱动的工具授权。支持
none、本地embedded(mcp_policies.json)或集中式remote模式。OIDC 令牌委派: 符合 RFC 8693 令牌交换,用于从 Web UI / ACP → Agent → MCP 传递认证用户凭据。
作用域凭据: 执行上下文运行限制为特定调用者身份。
运行时安全网格
功能 | 功能描述 | 启用方式 |
工具守卫 | 敏感度检查,带人工验证 | 默认启用 |
提示注入防御 | 输入扫描、重复监控和递归循环阻止 | 默认启用 |
上下文安全守卫 | 卡死循环检测和上下文溢出预防性警报 | 默认启用 |
安装
选择与您要运行的内容匹配的附加组件:
附加组件 | 安装内容 | 使用场景 |
| 连接器聚焦的 MCP 服务器( | 您只运行 MCP 服务器(最小安装/镜像) |
| 代理运行时( | 您运行 集成代理 |
| 所有内容( | 开发 / 两种表面 |
# Connector-focused MCP server (includes the shared graph engine)
uv pip install "gitlab-api[mcp]"
# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "gitlab-api[agent]"
# Everything (development)
uv pip install "gitlab-api[all]" # or: python -m pip install "gitlab-api[all]"容器镜像(:mcp 与 :agent)
一个多阶段 docker/Dockerfile 构建两个大小合适的镜像,通过 --target 选择:
镜像标签 | 构建目标 | 内容 | 入口点 |
|
|
|
|
|
|
|
|
docker build --target mcp -t example/gitlab-api:mcp docker/ # connector-focused MCP server
docker build --target agent -t example/gitlab-api:agent-local docker/ # agent runtimedocker/mcp.compose.yml 运行面向连接器的 :mcp 服务器;docker/agent.compose.yml 运行 Agent(immutable agent digest)并附带一个同址 :mcp 边车。
知识图谱数据库(epistemic-graph)
[mcp] 和 [agent] 都通过必需的 Agent Utilities 核心依赖(epistemic-graph[full])携带 epistemic-graph 引擎。[mcp] extra 使服务器保持面向连接器;[agent] 额外启用模型编排。本地部署可以使用内置引擎。对于生产环境或共享状态,请将 epistemic-graph 作为专用数据库服务运行,并配置运行时使用它。部署方案(单节点 + Raft 高可用)、连接配置和架构图记录在 epistemic-graph 部署指南 中。
文档
完整文档发布在官方文档站点上,是安装、部署和日常操作的首选参考。
页面 | 内容 |
pip、源码、extra、预构建 Docker 镜像 | |
运行 MCP 和 Agent 服务器、Compose、Caddy + Technitium、环境配置 | |
MCP 工具、 | |
使用 Docker 部署 GitLab | |
动作路由的工具表面与架构 | |
概念注册表( |
仓库所有者
贡献
欢迎贡献!请在提交拉取请求之前执行本地检查以确保代码质量:
使用
ruff format .格式化代码使用
ruff check .检查代码使用
mypy .验证类型安全使用
pytest执行测试套件
使用 agent-utilities-deployment 部署
使用整合的 agent-utilities-deployment 工作流来配置此包。它会选择已安装包、可编辑源码或不可变容器路径;仅在 AgentConfig 中记录运行时密钥和 TLS 配置文件引用;并运行 doctor、注册、策略、可观测性和回滚门禁。请让您的 Agent "使用 agent-utilities-deployment 部署 gitlab-api"。
安装模式 | 命令 |
已安装包 |
|
可编辑源码 |
|
不可变容器 | 通过操作员选择的编排器部署 |
该仓库不嵌入任何部署配置文件、凭据值、证书路径或环境特定的端点。请在运行时通过 AgentConfig 和已配置的密钥提供程序提供这些内容。
受治理的能力契约
此包提供一个紧凑的规范技能表面,专业流程以引用工作流的形式保留。当前的 MCP 工具、技能元数据、connector_manifest.yml、本体、映射、形状、夹具、迁移、工具模式指纹和认证元数据共同构成一个版本化的能力契约。请一起验证它们;不要依赖过时的工具名称或历史性的按任务技能包装器。
运行时端点、凭据、证书信任、租户身份、保留策略和可观测性策略都是部署输入,绝不是打包值。在启用网络传输、连接器摄取、GraphOS 委派或跟踪导出之前,请参阅配置、信任与隐私。
This server cannot be deployed
Maintenance
Related MCP Connectors
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
A MCP server built for developers enabling Git based project management with project and personal…
GitLab MCP — wraps the GitLab REST API v4 (BYO API key)
Related MCP Servers
- -licenseAqualityAmaintenanceMCP Server for the GitLab API, enabling project management, file operations, and more.95,547 npm91,120MIT
- AlicenseNot gradedqualityDmaintenanceProduction-ready MCP server providing GitLab integration with OAuth authentication, enabling AI assistants to manage projects, issues, merge requests, branches, files, and commits across GitLab instances.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with GitLab API, supporting both self-hosted instances and gitlab.com. Provides tools for managing issues, merge requests, code review, pipelines, milestones, releases, search, and file access.351 npmMIT
- AlicenseNot gradedqualityAmaintenanceMCP server for the GitLab REST API providing tools to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, and code reviews.9,306 PyPI6MIT