Skip to main content
Glama
Foxhunt

GitLab MCP Server

by Foxhunt

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.

Related MCP server: gitlab-mcp

Development

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Installation

To use with Claude Desktop, add the server config:

{
  "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, which is available as a package script:

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

Available Tools

16 tools
gitlab_create_branchCreate BranchC

Create a new branch in the project

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesBranch name or commit SHA to create branch from
branchYesName for the new branch
projectIdYesThe ID or URL-encoded path of the project

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It only states the action without explaining side effects, failure conditions (e.g., if branch already exists), permissions required, or the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant words. It is front-loaded with the action and resource, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It does not describe the return value, potential error cases, or any side effects, leaving the agent with insufficient context for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with clear descriptions, so the description adds no extra semantic meaning. The baseline of 3 applies since schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create) and the resource (a new branch in the project). It is distinct from sibling tools like create_issue or create_merge_request, though it does not explicitly differentiate itself by naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as the ref being an existing branch or commit SHA, nor any context like when creating a branch is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_create_issueCreate IssueA

Create a new issue in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe title of an issue
labelsNoComma-separated label names for an issue
projectIdYesThe ID or URL-encoded path of the project
descriptionNoThe description of an issue
assignee_idsNoThe IDs of the users to assign the issue to
confidentialNoSet an issue to be confidential
milestone_idNoThe global ID of a milestone to assign issue to

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Create a new issue in a project' without detailing permissions required, whether the action is reversible, what response to expect, or other side effects. The create operation is implied, but important contextual behavior is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (7 words), front-loaded with the core action. Every word earns its place, and there is no fluff or redundancy. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but combined with a fully self-documenting schema (100% parameter coverage), it provides adequate context for a straightforward create operation. However, with no output schema and no behavioral details (e.g., return value, permissions), the description is not fully complete for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage of all 7 parameters with descriptions, so the description does not need to explain them. The phrase 'new issue in a project' adds minimal context about projectId being required, but it does not add meaning beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new issue in a project' uses a specific verb ('Create') and resource ('new issue in a project'), clearly distinguishing this tool from siblings like gitlab_get_issues, gitlab_edit_issue, and gitlab_create_merge_request. It unambiguously states the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when creating an issue but does not explicitly state when to use this tool over alternatives or provide exclusions. There is no mention of sibling tools or when-not-to-use guidance, so the context is clear but only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_create_issue_noteCreate Issue NoteB

Create a new note/comment on an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe content of the note/comment
internalNoThe internal flag of a note. Overrides confidential. Default is false.
issueIidYesThe internal ID of a project's issue
projectIdYesThe ID or URL-encoded path of the project
created_atNoDate time string, ISO 8601 formatted. Example: 2016-03-11T03:45:40Z
confidentialNoDeprecated: Scheduled to be removed in GitLab 16.0. Use 'internal' instead.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation. The description adds no extra behavioral context, such as permission requirements, that creating a note is non-idempotent (each call adds a new note), or that it appends to the issue. Since it adds nothing beyond annotations, the score is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is concise and easy to parse. However, it is so terse that it misses opportunities to include meaningful guidance, which keeps it from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 parameters, 3 required) and the rich schema descriptions, the minimal description is functional but leaves gaps. It does not mention return values, typical use cases, or the significance of parameters like 'created_at' or 'internal'. The schema and annotations compensate partially, but the description alone is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for each parameter (e.g., 'body' as 'The content of the note/comment'). The tool description itself does not mention any parameter details, so it relies on the schema. This meets the baseline of 3, as the schema already provides the necessary meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action with a specific verb ('Create') and a specific resource ('a new note/comment on an issue'). This distinguishes it from sibling tools like gitlab_edit_issue_note (edit an existing note) and gitlab_get_issue_notes (list notes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios (e.g., 'Use this to add a comment to an issue') or exclude cases where other tools are more appropriate. It is a bare definition with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_create_merge_requestCreate Merge RequestC

Create a new merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of MR
projectIdYesThe ID or URL-encoded path of the project
assignee_idNoAssignee user ID
descriptionNoDescription of MR (e.g., 'Closes #123')
source_branchYesThe source branch
target_branchYesThe target branch

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden. It implies a mutation (creating an MR) but provides no details about return values, permissions needed, side effects, or error behavior. This is a significant gap for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, making it concise. However, it is under-specified and largely redundant with the tool name, so the brevity comes at the cost of substantive content. It is not overly verbose, but it also does not earn its place by adding value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters and no output schema, yet the description provides no additional context about what the tool returns, when it might fail, or how it behaves. The description is too sparse to be considered complete for a create operation of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all parameters, so the schema already documents each field. The description itself adds no parameter-specific information, which is acceptable given the high schema coverage per the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('create') and resource ('merge request'), clearly distinguishing it from siblings like 'gitlab_edit_merge_request'. However, it is extremely minimal and adds little beyond the tool's name and title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, common use cases, or exclusions. The description only restates the action without any contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_edit_issueEdit IssueB

Edit an existing issue in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoThe title of an issue
labelsNoComma-separated label names for an issue
issueIidYesThe internal ID of a project's issue
projectIdYesThe ID or URL-encoded path of the project
descriptionNoThe description of an issue
state_eventNoState event for an issue (close or reopen)
assignee_idsNoThe IDs of the users to assign the issue to
confidentialNoSet an issue to be confidential

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Edit an existing issue' without explaining whether updates are partial or full, what permissions are needed, or any side effects. It does not disclose the mutation behavior beyond the act of editing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant content. Every word adds value, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no annotations and no output schema, the description is too sparse. It does not explain behavior, required context (e.g., issue must exist), return values, or when to use it relative to other issue tools. More context is needed for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides, but it does not need to since all parameters are documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Edit') and clearly identifies the resource ('existing issue in a project'), distinguishing it from sibling tools like create_issue, get_issue, and edit_issue_note. It unambiguously states the core action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The context is only implied by the name and description; there is no explicit mention of prerequisites, exclusions, or when to prefer this over create_issue or get_issue.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_edit_issue_noteEdit Issue NoteB

Edit an existing note/comment on an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe content of the note/comment
noteIdYesThe ID of the note/comment
issueIidYesThe internal ID of a project's issue
projectIdYesThe ID or URL-encoded path of the project

TDQS

B3.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'edit', with no information on permissions, idempotency, side effects, or whether the change is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the purpose. No filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple mutation with no output schema and no annotations. The description clarifies purpose but omits return value, error behavior, or authorization requirements, leaving some gaps for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 4 parameters with descriptions (100% coverage), so the description need not add parameter details. It does not provide any additional semantic context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Edit an existing note/comment on an issue'. It clearly differentiates from sibling tool gitlab_create_issue_note by noting 'existing' and 'edit'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than explicit. It says 'existing note', which suggests it's not for creation, but there is no mention of alternatives, prerequisites, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_edit_merge_requestEdit Merge RequestC

Update an existing merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTitle of MR
projectIdYesThe ID or URL-encoded path of the project
assignee_idNoAssignee user ID
descriptionNoDescription of MR
state_eventNoState event for the MR (close or reopen)
target_branchNoThe target branch
merge_request_iidYesThe internal ID of the merge request

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'update' without any details on side effects, required permissions, whether the update is partial or full replacement, or what happens with fields like state_event. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded and to the point. It wastes no words, though it is almost too terse given the tool's complexity. Still, for what it communicates, it is appropriately compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no annotations, and no output schema, the description is insufficient. It does not explain key aspects like how state_event works, whether unspecified fields are left unchanged or reset, or what the return value signifies. The minimal description leaves too much to inference for such a parameter-rich tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides descriptions for all 7 parameters (e.g., title, assignee_id, state_event), achieving 100% coverage. The description adds no additional parameter context beyond what the schema already states, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing merge request' clearly states the verb 'update' and the resource 'merge request', and the word 'existing' serves to distinguish it from the sibling tool gitlab_create_merge_request. While it doesn't enumerate updatable fields, the schema covers that, and the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. It does not mention that this is for modifying existing MRs only, nor does it provide any preconditions or exclusions. The word 'existing' implies it is not for creation, but no explicit alternative or context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_issueGet IssueA

Get a specific issue from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
issueIidYesThe internal ID of a project's issue
projectIdYesThe ID or URL-encoded path of the project owned by the authenticated user

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states that the tool gets an issue, without disclosing what fields are returned, whether notes are included, authentication requirements, or any side effects. The minimal phrasing leaves the agent without a clear picture of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant phrasing. It is appropriately sized for its simplicity, though perhaps too brief for full transparency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with two well-documented parameters, the description covers the basic purpose. However, without an output schema or additional context about the return value, the agent lacks a complete picture of what to expect. The description is minimally sufficient but not richly informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema descriptions already cover both parameters at 100% coverage (projectId and issueIid). The tool description adds no additional semantic information about how parameters relate or are used, so it provides no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('issue') with a scope ('from a project'). It clearly differentiates from sibling tools like gitlab_get_issues (plural) and gitlab_get_issue_notes by focusing on a single issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a single issue is needed, but provides no explicit guidance on when to use this tool versus alternatives like gitlab_get_issues or gitlab_get_issue_notes. No exclusions or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_issue_notesGet Issue NotesB

Get notes for an issue (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
issueIidYesIssue IID
projectIdYesProject ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It adds only 'paginated' as behavioral context, but doesn't disclose the structure of returned notes, ordering, potential empty results, or any read-only confirmation beyond the verb 'Get'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to core understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with full schema coverage, the description is minimally adequate: it names the resource and pagination. However, it lacks explicit usage alternatives and any return-behavior details, which a no-annotation tool would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (page, issueIid, projectId) are already described in the schema with 100% coverage. The description's mention of pagination aligns with the 'page' parameter but adds no extra parameter-specific meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('notes for an issue'), with a useful qualifier ('paginated'). It implicitly differentiates from sibling tools like gitlab_get_issue (single issue) and gitlab_create_issue_note (creation), though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus siblings. It doesn't mention that it is appropriate for reading issue comments, nor how it relates to creating/editing notes or retrieving the issue itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_issuesGet IssuesA

Get issues for a project or globally (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
typeNoThe type of to-do item.
stateNoThe state of the to-do item.
actionNoThe action to be filtered.
group_idNoThe ID of a group
author_idNoThe ID of an author
project_idNoThe ID of a project

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses that results are paginated, which is useful, and indicates a read-only operation via 'Get'. However, it does not mention default behavior when no project is specified, authorization requirements, or response format. It adds some value but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the core purpose and pagination behavior without extraneous wording. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (7 optional parameters, no output schema, no annotations), the description is minimal but serviceable. It mentions pagination and scope, but does not clarify default behavior, sort order, or what fields each returned issue contains. The schema covers parameters, but the lack of output schema means the description could add more value by describing return expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the schema already provides full semantics for all 7 parameters. The description adds only a high-level scope hint ('project or globally') that maps to the optional project_id parameter, but no additional parameter-level detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') with a clear resource ('issues') and scope ('for a project or globally'), plus a pagination hint. It distinguishes itself from siblings like 'get_issue' (singular) and 'get_todos' by indicating a list-oriented, potentially global query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a project or globally' implies when to use the tool (e.g., when wanting all issues across projects vs. a single project), but it does not explicitly state when not to use it or mention alternatives like 'get_issue' for a single issue. Usage context is implied rather than directly prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_todosGet TodosB

Get a list of to-do items (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
typeNoThe type of to-do item.
stateNoThe state of the to-do item.
actionNoThe action to be filtered.
group_idNoThe ID of a group
author_idNoThe ID of an author
project_idNoThe ID of a project

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions 'paginated,' which is a minimal hint about response chunking. It omits critical context such as whether the to-dos belong to the current user, how pagination works (e.g., default page size), or any authentication requirements, leaving significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the verb and object with no waste. It is appropriately concise for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but the schema is rich with parameter details. However, without annotations or an output schema, the description does not fully contextualize the tool—e.g., it does not specify that the list is for the current user or how pagination behaves. It is adequate but leaves gaps for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 7 parameters having clear descriptions in the schema. The tool description adds no additional parameter context, but the baseline of 3 applies because the schema already provides the necessary semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('a list of to-do items'), making the tool's purpose unambiguous. However, it does not differentiate from sibling tools like gitlab_get_issues, though the resource name 'todos' is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or context for choosing this tool over sibling tools like gitlab_get_issues or gitlab_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_wiki_pageGet Wiki PageC

Get a wiki page for a given project

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesURL encoded slug of the wiki page
versionNoWiki page version SHA
projectIdYesThe ID or URL-encoded path of the project
render_htmlNoRender HTML of the page

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only says 'Get a wiki page', which implies a read-only operation, but it does not mention what is returned, how version or render_html affect the response, or any other behavioral details. This is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is front-loaded with the verb and resource, making it quickly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description does not explain what the tool returns or how the optional parameters (version, render_html) affect the result. For a get-type tool, the description is too sparse to be fully complete, especially given the absence of behavioral details and usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are well-documented in the schema itself. The description adds no additional semantic meaning beyond what the schema provides; it simply restates the project context. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get a wiki page') and the resource context ('for a given project'). It distinguishes the tool from siblings like gitlab_list_wiki_pages by indicating a single-page fetch, but it does not explicitly mention it retrieves by slug or provide deeper specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., gitlab_list_wiki_pages for listing). The context is minimal; it only says 'for a given project', so there is no explicit usage direction or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_list_milestonesList MilestonesA

Get a list of project milestones (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
stateNoReturn only milestones with the given state
searchNoReturn milestones containing the search string
projectIdYesThe ID or URL-encoded path of the project

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It mentions pagination, which is useful, but does not disclose return format, ordering, permissions, or other caveats. For a simple list operation this is minimally acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that starts with the action verb and includes key scoping ('project') and behavior ('paginated'). Every word contributes, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with full schema coverage and no output schema, the description is sufficient for an agent to select and invoke it correctly. It could mention return format, but given the tool's simplicity and clear scope, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the schema (100% coverage), so the description does not need to add parameter semantics. The description does not go beyond the schema, which is acceptable given the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get'), resource ('project milestones'), and scope ('project'), which distinguishes it from sibling tools that deal with projects, wiki pages, issues, etc. The addition of 'paginated' also provides useful context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for listing project milestones, but provides no explicit when-to-use guidance or alternatives. Sibling tools are all for different resources, so context is clear, but no exclusions or comparisons are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_list_projectsList ProjectsA

List all projects (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the paginated nature of the results, which is a key behavioral trait. However, with no annotations, it does not clarify other behavioral aspects such as authentication needs, whether 'all projects' means all accessible projects, or the structure of the response. The pagination mention adds some value beyond the bare title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, 'List all projects (paginated)', with no redundant words or filler. It is front-loaded and immediately communicates the fundamental purpose and a key behavioral attribute.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a simple list operation with one optional parameter, the description combined with the schema is largely sufficient. The explicit mention of pagination is valuable, though it could mention what fields are returned or access scope. Minor gaps exist, but overall it is reasonably complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the only parameter 'page' with its description and default, resulting in 100% schema coverage. The tool description adds no additional meaning about the parameter beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and identifies the resource 'projects', clearly stating its function. It distinguishes itself from sibling tools that operate on wiki pages, issues, or merge requests, leaving no ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, nor any mention of exclusions or prerequisites. The description simply states the action without providing context for selection among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_list_wiki_pagesList Wiki PagesA

Get all wiki pages for a given project. (paginated)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
projectIdYesThe ID or URL-encoded path of the project
with_contentNoInclude pages' content

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'paginated', which is a useful behavioral trait, but does not disclose other behaviors such as the effect of 'with_content', return format, or potential authentication requirements. It adds some value beyond the schema but lacks rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core purpose. The parenthetical '(paginated)' efficiently conveys the key behavioral note without unnecessary words. Every element serves a distinct function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the schema's full parameter coverage, and the absence of an output schema, the description is sufficiently complete. It states the primary function and the pagination behavior, which covers the essential context for a straightforward list operation. It could be enhanced by mention of comparison to related tools, but that is already addressed in the usage guidelines dimension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the base score is 3. The description itself does not add any parameter details beyond what the schema already provides. For instance, 'paginated' relates to the 'page' parameter but the schema already explains the default. No additional semantic value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' with the resource 'all wiki pages for a given project', specifying both the scope (all) and the target (project). This distinguishes it from the sibling tool 'gitlab_get_wiki_page' which fetches a single page, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing all wiki pages of a project, but it does not explicitly state when to use this tool versus the sibling 'gitlab_get_wiki_page' or other list tools. There is no mention of alternatives or exclusions, only a basic statement of function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    302
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables interacting with GitLab repositories, merge requests, and code through natural language using MCP. Supports authentication with personal access tokens or OAuth2, and provides tools for listing projects, reading repository code, and analyzing merge request lifetimes.
    10
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Foxhunt/gitlab-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server