gitlab-http-api-mcp
v0.2.1
Published
MCP server for GitLab over HTTP API (projects, issues, MRs, CI pipelines, jobs)
Maintainers
Readme
gitlab-http-api-mcp
MCP (Model Context Protocol) server for GitLab that talks directly to the GitLab HTTP API
using GITLAB_API_URL and GITLAB_PERSONAL_ACCESS_TOKEN. Tools cover projects, issues
(including notes), merge requests (create/update/merge/diffs), and CI pipelines & jobs.
Requirements
- Node.js 18+
- Accessible GitLab HTTP API and a personal access token with sufficient permissions.
Install
From source (GitHub)
git clone https://github.com/rkorablin/gitlab-http-api-mcp.git
cd gitlab-http-api-mcp
npm installFrom npm
As a local dependency:
npm install gitlab-http-api-mcpOr globally (for npx / CLI usage):
npm install -g gitlab-http-api-mcpConfiguration
Environment variables:
GITLAB_API_URL— base API URL, for examplehttps://gitlab.example.com/api/v4GITLAB_PERSONAL_ACCESS_TOKEN— GitLab personal access token
Usage
Standalone (stdio)
export GITLAB_API_URL="https://gitlab.example.com/api/v4"
export GITLAB_PERSONAL_ACCESS_TOKEN="glpat-..."
node server.mjsCursor / MCP host
Add the server to your MCP config (for example .cursor/mcp.json → mcpServers).
Option 1: Local clone
"gitlab": {
"command": "node",
"args": ["/absolute/path/to/gitlab-http-api-mcp/server.mjs"],
"env": {
"GITLAB_API_URL": "https://gitlab.example.com/api/v4",
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-..."
}
}Option 2: npm / npx
If installed globally:
"gitlab": {
"command": "gitlab-http-api-mcp",
"env": {
"GITLAB_API_URL": "https://gitlab.example.com/api/v4",
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-..."
}
}Or via npx (рекомендуется для автоподтягивания новых версий):
"gitlab": {
"command": "npx",
"args": ["--yes", "--prefer-online", "gitlab-http-api-mcp@latest"],
"env": {
"GITLAB_API_URL": "https://gitlab.example.com/api/v4",
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-..."
}
}Почему @latest и --prefer-online: без тега версии npx может долго использовать старый кэш. Явный @latest + опрос registry при старте даёт актуальный патч после публикации в npm. Флаги нужно передавать до имени пакета (см. npm help npx).
Tools (summary)
| Area | Tools |
|------|--------|
| User | gitlab_get_current_user |
| Projects | gitlab_list_projects, gitlab_get_project |
| Issues | gitlab_list_issues, gitlab_get_issue, gitlab_create_issue, gitlab_update_issue, gitlab_list_issue_notes, gitlab_create_issue_note |
| Merge requests | gitlab_list_merge_requests, gitlab_get_merge_request, gitlab_create_merge_request, gitlab_update_merge_request, gitlab_merge_merge_request, gitlab_get_merge_request_changes |
| Pipelines | gitlab_list_pipelines, gitlab_get_pipeline, gitlab_create_pipeline, gitlab_retry_pipeline, gitlab_cancel_pipeline |
| Jobs | gitlab_list_pipeline_jobs, gitlab_get_job_trace, gitlab_retry_job, gitlab_play_job |
Pipeline and job IDs are numeric (from the API). MR and issue identifiers are IID (per-project internal id).
