本分分享如何使用 cursor + mcp 来操作极狐GitLab 仓库,体验用自然语言在不接触极狐GitLab 的情况下来完成一些仓库操作。
关于 MCP
MCP 是 Anthropic 公司在去年发布的一个协议,全称叫做 Model Context Protocol。官方的解释:MCP 是一个新的标准,用来将 AI 助手和数据源(比如内容仓库、业务工具和开发环境等)进行连接,它的目的是帮助前沿模型生成更好、更相关的回复。
关于 MCP 的架构,官方的一张图写得很清楚了:
主要的组件包括:
- MCP Hosts:诸如 Claude Desktop、IDE 或想要通过 MCP 访问数据的 AI 工具;
- MCP Clients:用来和服务端维持链接的协议客户端;
- MCP Servers:轻量级的程序,通过标准化的 MCP 协议来提供特定功能;
- Local Data Sources:MCP 能够安全访问的本地文件或数据源等;
- Remote Services:MCP 能够连接到的外部系统(比如通过 API)
GitLab MCP Server
GitLab MCP Server 能够对极狐GitLab 的仓库、文件、分支进行一些管理。当前 Anthropic 发布的 GitLab MCP Server 能够实现的功能有:
create_or_update_file
:在项目中创建或更新文件;push_files
:在单个提交中推送多个文件;search_repositories
:在极狐GitLab 中搜索仓库;create_repository
:在极狐GitLab 中创建仓库;get_file_contents
:获取文件或目录的内容;create_issue
:创建新的议题;create_merge_request
:创建新的合并请求;fork_repository
:派生仓库;create_branch
:创建分支;
配置 GitLab MCP Server
前提
- 支持 MCP 的 AI 工具,本文演示使用 Cursor;
- 一个可用的极狐GitLab 实例,本文使用 SaaS(https://jihulab.com)
- 极狐GitLab 个人访问令牌
创建极狐GitLab 个人访问令牌
在极狐GitLab 实例上,选择左上角头像 > 偏好设置 > 访问令牌 > 添加新令牌,根据出现的界面选择令牌的范围和过期时间创建即可。
注意:上述创建的是实例访问令牌,也可以创建项目和群组访问令牌。
在 Cursor 上配置 MCP
在 Cursor 上选择Settings > Cursor settings,在出现的界面中选择 MCP :
选择左上角的 Add new global MCP server,将如下内容写入到打卡的 mcp.json文件中:
{
"mcpServers": {
"gitlab": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITLAB_API_URL",
"-e",
"GITLAB_PERSONAL_ACCESS_TOKEN",
"mcp/gitlab"
],
"env": {
"GITLAB_API_URL": "https://jihulab.com/api/v4",
"GITLAB_PERSONAL_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN"
}
}
}
}
需要替换的两个变量:
GITLAB_API_URL
:极狐GitLab 实例的具体地址,如果是 SaaS 则为 https://jihulab.com/api/v4 ,如果是私有化部署实例,将 jihulab.com替换为对应实例的域名即可;GITLAB_PERSONAL_ACCESS_TOKEN
:第一步创建的个人访问令牌
添加完成后,MCP Server 启动成功就可以看到前面有个绿色的标识。
实际使用
测试仓库的创建
在 Cursor 的 Chat 窗口中,输入提示词:
请帮我在gitlab的xiaomage-devops群组下面创建一个仓库,名称为mcp-gitlab
请帮我在gitlab的xiaomage-devops群组下面创建一个仓库,名称为mcp-gitlab
可以看到 Cursor 的输出:
这里面,Cursor 会自动使用 Agent 模式进行 MCP tool,在对应的 MCP(也就是配置好的、可用的 MCP Server)中查找合适的函数,然后运行。比如,上面就调用了 MCP tool 中的 create_repository来创建了仓库 mcp-gitlab,还给出了链接。可以在极狐GitLab 实例上看一下:
测试 MR 的创建
在 Cursor 的 Chat 窗口中继续搞i提示词:
请帮我在上面的仓库中创建一个分支,名称叫做jh,然后创建一个合并请求(merge request),这个合并请求中新增一个 1.txt,内容是 hello mcp gitlab!
Cursor 的输出如下:
可以看到 Cursor 调用了 MCP tool 中的 create_branch函数创建了一个名为 jh的分支;然后调用了 create_or_update_files函数来创建一个 1.txt 文件,并写入 hello mcp gitlab内容。可以在极狐GitLab 界面上测试一下:
写在最后
关于 GitLab MCP Server 的其他测试,欢迎大家自行测试。由于 Anthropic 将 GitLab MCP Server 的内容发布在了 GitHub,为了方便国内用户查看,我将相应的仓库通过极狐GitLab 的仓库镜像功能镜像到了极狐GitLab SaaS 上 https://jihulab.com/xiaomage-devops/servers/-/tree/main/src/g... 。
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。