MCP Server for the GitLab API, enabling project management, file operations, and more. Forked from https://github.com/modelcontextprotocol
gitlab-mcp-server is an MCP project maintained in the therealchristhomas/gitlab-mcp-server repository. The maintainer describes its purpose as “MCP Server for the GitLab API, enabling project management, file operations, and more. Forked from https://github.com/modelcontextprotocol”. Read the project documentation for the complete scope.
The documented npm package is @therealchristhomas/gitlab-mcp-server. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.
The example declares GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_API_URL. Secret-looking values have been replaced with placeholders. Required and optional labels are shown only when the documentation states them.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| Inputs: | group_id (string): Group ID or URL-encoded path |
| previous_path | optional string): Path of the file to move/rename |
| Returns | Success confirmation |
| ref | optional string): Source branch/commit for new branch |
| page | optional number): Page number for pagination |
| per_page | optional number): Results per page (default 20) |
| visibility | optional string): 'private', 'internal', or 'public' |
| initialize_with_readme | optional boolean): Initialize with README |
| namespace | optional string): Namespace to fork to |
| owned | optional boolean): Limit by groups owned by the current user |
| min_access_level | optional number): Minimum access level (10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner) |
| title | optional string): New title |
| assignee_ids | optional number[]): Array of user IDs to assign |
| labels | optional string[]): Array of label names |
| milestone_id | number): Milestone ID to delete |
| state | optional string): 'active' or 'closed' |
| milestone | optional string): Milestone title |
| assignee_id | optional number): User ID of assignee |
| author_id | optional number): User ID of author |
| search | optional string): Search in title or description |
| created_after | optional string): Return MRs created after date (ISO 8601) |
| created_before | optional string): Return MRs created before date (ISO 8601) |
| updated_after | optional string): Filter by update date (ISO 8601) |
| updated_before | optional string): Filter by update date (ISO 8601) |
| sort | optional string): Sort merge requests |
| order_by | optional string): 'asc' or 'desc' |
| with_labels_details | optional boolean): If true, returns more details for each label. Default is false. |
| state_event | optional string): 'close' or 'activate' |
| source_branch | optional string): Filter by source branch |
| target_branch | optional string): New target branch |
| draft | optional boolean): Create as draft MR |
| allow_collaboration | optional boolean): Allow commits from upstream members |
| remove_source_branch | optional boolean): Remove source branch when merged |
| merge_commit_message | optional string): Custom merge commit message |
| should_remove_source_branch | optional boolean): Remove source branch after merge |
| merge_when_pipeline_succeeds | optional boolean): Merge when pipeline succeeds |
| sha | optional string): SHA that must match the source branch HEAD |
| color | optional string): New label color |
| priority | optional number): New label priority |
| new_name | optional string): New label name |
| due_date | optional string): New due date |
| start_date | optional string): New start date |
| search_title | optional string): Search in title only |
| include_ancestors | optional boolean): Include parent group milestones |
| include_descendants | optional boolean): Include subgroup milestones |
| containing_date | optional string): Milestones containing given date |
| end_date | optional string): Filter where start_date <= end_date |
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@therealchristhomas/gitlab-mcp-server"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "YOUR_GITLAB_PERSONAL_ACCESS_TOKEN",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
| Variable | Description | Required |
|---|---|---|
| GITLAB_PERSONAL_ACCESS_TOKEN | Declared in the maintainer’s client configuration. | Yes |
| GITLAB_API_URL | Declared in the maintainer’s client configuration. | Optional |
Read, search and edit files inside allowed directories with the Model Context Protocol reference Filesystem server.
Retrieve version-aware library documentation and code examples with Context7 MCP, using resolve-library-id and query-docs.
Use Microsoft’s Playwright MCP server to navigate pages, inspect accessibility snapshots, fill forms and capture browser screenshots.
Connect GitHub MCP to repositories, issues and pull requests with GitHub’s hosted service or a locally run server.
Use the Supabase MCP server to inspect database schemas, query project data and retrieve docs through a project-scoped connection.
Search Linear issues and projects, inspect work context and manage updates through Linear’s hosted MCP server with OAuth.