Skip to main content
Glama
Foxhunt

GitLab MCP Server

by Foxhunt
README.md
# GitLab MCP Server

interact with a GitLab server.

This is a TypeScript-based MCP server that interacts with a self-hosted GitLab instance. The server provides tools to fetch and manage GitLab data, specifically projects, issues, and issue notes (comments). The available tools are: `list_projects`, `get_issues`, `get_issue_notes`, `search`, `get_issue`, `get_todos`, `get_wiki_page`, and `list_wiki_pages`.

## Features

This GitLab MCP server provides the following tools:

- **`list_projects`**: Lists all projects accessible to the user.
- **`get_issues`**: Gets issues for a specific project, with basic filtering.
- **`get_issue_notes`**: Gets notes (comments) for a specific issue.
- **`search`**: Searches for projects and issues based on a search term.
- **`get_issue`**: Retrieves a specific issue from a project using its ID and IID.
- **`get_todos`**: Retrieves a list of to-do items with optional filters.
- **`get_wiki_page`**: Retrieves a specific wiki page by project ID and slug.
- **`list_wiki_pages`**: Retrieves all wiki pages for a given project.

## Development

Install dependencies:

```bash
npm install
```

Build the server:

```bash
npm run build
```

For development with auto-rebuild:

```bash
npm run watch
```

## Installation

To use with Claude Desktop, add the server config:

```json
{
  "mcpServers": {
    "gitlab-server": {
      "command": "/path/to/gitlab-server/build/index.js",
      "env": {
        "GITLAB_API_TOKEN": "<Gitlab API Token >",
        "GITLAB_HOST": "<GitLab Host URL>"
      }
    }
  }
}
```

### Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:

```bash
npm run inspector
```

The Inspector will provide a URL to access debugging tools in your browser.

### GitLab API Documentation

https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc/api
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/rest/_index.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/rest/authentication.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/projects.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/issues.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/notes.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/issue_links.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/search.md
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/wikis.md

TDQS

B3.3/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair. Even similar-looking list/get pairs are clarified by singular/plural naming and descriptions. The search tool is intentionally broader but not confusable with the specific list tools.

Naming Consistency3/5

All tools use the gitlab_ prefix and snake_case, but collection endpoints are inconsistent: list_ is used for projects, wiki pages, and milestones, while get_ is used for issues, todos, and issue notes. This mixed convention is readable but not uniform.

Tool Count4/5

At 16 tools the set is slightly above the typical well-scoped range, but each tool addresses a distinct operation. The cluster of issue-related tools is granular but reasonable for a GitLab-focused server.

Completeness3/5

The tool surface covers issue creation/editing and MR creation/editing, but lacks list/get merge requests, which creates a dead end for locating MRs to edit. There are also no delete operations, and project management is limited to listing.

Maintenance

ActivityInactive
ResponsivenessNo issues