Skip to main content
Glama

GitLab MCP Server

An MCP (Model Context Protocol) server that allows LLMs to interact with GitLab. Access issues, merge requests, pipelines, and repository files directly from Claude Code or other MCP-compatible clients.

Features

  • Browse and search projects

  • View issues and merge requests (including your own and team-labeled)

  • Read MR diffs and comments

  • Check pipeline status and job logs

  • Browse repository files

Related MCP server: gitlab-mcp-server

Setup

1. Install dependencies

make install
# or
uv sync

2. Create GitLab Personal Access Token

  1. Go to GitLab → Avatar (top-right) → Edit profile

  2. Left sidebar → Access Tokens

  3. Click Add new token

  4. Configure:

    • Token name: e.g., "MCP Server"

    • Expiration date: choose as needed

    • Scopes:

      • read_api (required)

      • read_repository (for file content access)

  5. Click Create personal access token

  6. Copy the token (won't be shown again)

Direct URL: https://gitlab.com/-/user_settings/personal_access_tokens

3. Configure environment

cp .env.example .env

Edit .env with your values:

GITLAB_URL=https://gitlab.com
GITLAB_TOKEN=your-private-token-here
DEFAULT_ASSIGNEE=me

Configuration

Variable

Description

Default

GITLAB_URL

Your GitLab instance URL

https://gitlab.com

GITLAB_TOKEN

Personal access token

(required)

DEFAULT_ASSIGNEE

Username for "my_*" tools filters

me

Usage

Run directly

uv run python main.py

Run in background

make start    # Start server
make stop     # Stop server
make restart  # Restart server
make status   # Check if running
make logs     # Tail server logs

Add to Claude Code

Create .mcp.json in your project root:

{
  "mcpServers": {
    "gitlab": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/path/to/gitlab-mcp-server"
    }
  }
}

Or use the CLI:

claude mcp add gitlab -- uv run python main.py

Verify with /mcp command inside Claude Code.

Test the server

# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run python main.py

# Test API connection
uv run python -c "
from tools.projects import get_client
with get_client() as client:
    r = client.get('/user')
    print('Authenticated as:', r.json().get('username'))
"

Available Tools

Projects

Tool

Description

list_projects

List accessible projects (search, filter by ownership/membership)

get_project

Get project details by path

Issues

Tool

Description

list_issues

List issues in a project (filter by state, labels, search)

my_issues

List issues assigned to you (uses DEFAULT_ASSIGNEE)

team_issues

List issues with a team label (default: "RE")

get_issue

Get issue details including description

get_issue_comments

Get comments/notes on an issue

Merge Requests

Tool

Description

list_merge_requests

List MRs in a project (filter by state, branches, search)

my_merge_requests

List MRs assigned to you

my_merge_requests_to_review

List MRs where you are a reviewer

team_merge_requests

List MRs with a team label (default: "RE")

get_merge_request

Get MR details including description

get_merge_request_changes

Get MR file diffs

get_merge_request_comments

Get MR comments/discussions

Pipelines

Tool

Description

list_pipelines

List pipelines in a project (filter by status, branch)

get_pipeline_jobs

Get jobs for a pipeline

get_job_log

Get job log output

Repository

Tool

Description

list_repository_tree

List files/directories in a repo

get_file_content

Get file content from a repo

Project Structure

gitlab-mcp-server/
├── main.py           # Entry point
├── client.py         # HTTP client & settings
├── models.py         # Pydantic models
├── tools/
│   ├── projects.py   # Project tools
│   ├── issues.py     # Issue tools
│   ├── merge_requests.py  # MR tools
│   ├── pipelines.py  # Pipeline tools
│   └── repository.py # Repository tools
├── .env.example      # Environment template
└── Makefile          # Run commands

License

MIT

Available Tools

19 tools
get_file_contentA

Get the content of a file from the repository.

Args: project_path: Full path of the project (e.g., 'group/project') file_path: Path to the file within the repository ref: Branch name, tag, or commit SHA (defaults to 'main')

ParametersJSON Schema
NameRequiredDescriptionDefault
refNomain
file_pathYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
refYes
sizeYes
contentYes
file_nameYes
file_pathYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only states 'get the content' but doesn't mention read-only nature, lack of side effects, or any limitations.

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?

Description is concise with three short bullet points for args. No redundant sentences.

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?

Output schema exists but is not shown; description does not explain return format. However, for a simple file retrieval, parameters and purpose are sufficiently covered.

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

Parameters4/5

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

Schema description coverage is 0%, but description adds meaning: project_path format (e.g., 'group/project'), file_path, and ref defaulting to 'main'. This goes beyond schema field names.

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 'Get the content of a file from the repository', which is a specific verb-resource combination. It is distinct from sibling tools like get_issue, get_merge_request, etc.

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 on when to use this tool vs alternatives (e.g., list_repository_tree). No conditions or exclusions mentioned.

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

get_issueA

Get details of a specific issue.

Args: project_path: Full path of the project (e.g., 'group/project') issue_iid: The internal ID of the issue within the project

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_iidYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
iidYes
stateYes
titleYes
authorNo
labelsNo
web_urlYes
assigneesNo
closed_atNo
milestoneNo
created_atYes
time_statsNo
updated_atYes
descriptionNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, or rate limits. It only states the action without additional 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 very concise with a single-line purpose followed by parameter explanations. No extraneous content, and the structure is efficient for quick understanding.

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 presence of an output schema (not shown) and the tool's straightforward nature, the description provides sufficient context. However, it could mention error handling or access requirements for completeness.

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

Parameters4/5

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

The description adds meaning beyond the schema by explaining project_path as 'Full path of the project (e.g., 'group/project')' and issue_iid as 'The internal ID of the issue within the project'. This compensates for the 0% schema description 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 'Get details of a specific issue,' which is a specific verb+resource. It distinguishes from siblings like get_issue_comments and list_issues, making the tool's purpose 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?

No guidance on when to use this tool vs alternatives (e.g., list_issues). The description implies usage when you have project_path and issue_iid but does not explicitly state conditions 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.

get_issue_commentsA

Get comments/notes on a specific issue.

Args: project_path: Full path of the project (e.g., 'group/project') issue_iid: The internal ID of the issue within the project per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNo
issue_iidYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided. The description mentions pagination via per_page parameter (max 100), which adds behavioral context. However, it does not disclose that the operation is read-only or describe any side effects. The description partially compensates for missing annotations.

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 short and front-loaded with the action. The Args list is clear but could be more structured (e.g., in a table format). Every sentence adds value, and there is no redundancy.

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?

With an output schema present, the description need not detail return structure, but it lacks information on error handling, sorting, or pagination behavior beyond the per_page limit. It is minimally viable for a simple retrieval tool but has gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden. It adds meaning to all parameters: explains project_path format with example, clarifies issue_iid as internal ID, and specifies per_page as result count with max limit. This goes beyond the schema's type and default.

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 'Get comments/notes on a specific issue,' specifying the action and resource. It distinguishes from sibling tools like get_issue and get_merge_request_comments by focusing on issue comments.

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 you have a specific issue's project path and internal ID, but it does not explicitly state when to use this tool versus alternatives (e.g., get_merge_request_comments) or provide exclusion criteria.

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

get_job_logA

Get the log/trace output of a specific job.

Args: project_path: Full path of the project (e.g., 'group/project') job_id: The ID of the job

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/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 describes the core function but does not disclose additional behavioral traits such as authentication requirements, rate limits, or output format details. It does not add significant context beyond the basic operation.

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 extremely concise, with a single line for purpose and two lines for parameter descriptions. It is front-loaded with the core action, and every sentence earns its place.

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

Completeness5/5

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

Given the low complexity (two required parameters) and the presence of an output schema, the description is complete. It covers the purpose and parameter details sufficiently for an agent to use the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, but the description provides clear, human-readable definitions for both parameters (project_path as 'Full path of the project' with example, job_id as 'The ID of the job'). This adds meaningful value beyond the schema's type-only information.

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 retrieves log/trace output for a specific job, using a specific verb 'Get' and resource 'log/trace output of a specific job'. It distinguishes itself from sibling tools which focus on files, issues, merge requests, etc.

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

Usage Guidelines4/5

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

The description implies usage when you need log output for a job, but does not provide explicit guidance on when not to use it or mention alternatives. However, for a straightforward retrieval tool, the context is clear.

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

get_merge_requestA

Get details of a specific merge request.

Args: project_path: Full path of the project (e.g., 'group/project') mr_iid: The internal ID of the merge request within the project

ParametersJSON Schema
NameRequiredDescriptionDefault
mr_iidYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
iidYes
draftNo
stateYes
titleYes
authorNo
labelsNo
web_urlYes
assigneesNo
closed_atNo
merged_atNo
milestoneNo
reviewersNo
created_atYes
updated_atYes
descriptionNo
merge_statusNo
has_conflictsNo
source_branchYes
target_branchYes

TDQS

A3.9/5.0
Behavior3/5

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

The description indicates a read operation ('Get details') but does not disclose any behavioral traits such as authentication requirements, pagination, or whether the tool returns all fields. With no annotations, the description carries the full burden but only provides minimal 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 extremely concise with just one sentence and a bulleted parameter list. It is front-loaded with the purpose, and every part is necessary and informative without any redundant text.

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 read tool with two parameters and an existing output schema, the description adequately covers purpose and parameters. However, it does not mention return value structure or any side effects. Given the output schema exists, this is acceptable but could be slightly more complete with usage hints.

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

Parameters5/5

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

The description provides explicit semantic meaning for both parameters: 'project_path: Full path of the project (e.g., 'group/project')' and 'mr_iid: The internal ID of the merge request within the project.' Given 0% schema description coverage, these explanations perfectly compensate by clarifying usage and format.

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 'Get details of a specific merge request,' specifying the verb 'get' and the resource 'details of a merge request.' This distinguishes it from siblings like 'get_merge_request_changes' or 'get_merge_request_comments' which target specific aspects.

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 such as 'list_merge_requests' or 'get_merge_request_changes.' There are no criteria, prerequisites, or exclusions mentioned, leaving the agent to infer usage solely from the tool name.

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

get_merge_request_changesA

Get the file changes (diff) of a merge request.

Args: project_path: Full path of the project (e.g., 'group/project') mr_iid: The internal ID of the merge request within the project

ParametersJSON Schema
NameRequiredDescriptionDefault
mr_iidYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
iidYes
titleYes
changesYes
changes_countYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden for behavioral disclosure. It only states that it gets diff changes but does not disclose traits such as rate limits, pagination, output size limits, or whether it returns full diffs or summaries. For a diff tool, more transparency would be beneficial.

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 extremely concise: one sentence for purpose and two lines for parameter explanations. No redundant information, and the key action is front-loaded. Every sentence is useful.

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 that there are only two simple required parameters and an output schema exists, the description is largely complete. It explains what the tool does and the parameters. However, it could optionally mention the format of the diff output (e.g., unified diff), but the output schema likely covers that. Still, it's adequate for a tool of this complexity.

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

Parameters4/5

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

With 0% schema description coverage, the description adds meaning: it explains project_path as 'Full path of the project (e.g., 'group/project')' and mr_iid as 'The internal ID of the merge request within the project.' This clarifies the format and scope beyond the just the parameter names and types.

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 'Get the file changes (diff) of a merge request,' specifying the verb (get) and resource (merge request changes). This distinguishes it from siblings like get_merge_request (which retrieves MR metadata) and get_merge_request_comments (comments).

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 prerequisites, when not to use it, or any context for selection. The sibling list is provided externally but not referenced in the description.

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

get_merge_request_commentsA

Get comments/notes on a specific merge request.

Args: project_path: Full path of the project (e.g., 'group/project') mr_iid: The internal ID of the merge request within the project per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
mr_iidYes
per_pageNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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 states the action without disclosing important behaviors such as pagination limits (beyond per_page parameter), error handling, ordering, or response structure. This is insufficient for an agent to fully understand tool 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 extremely concise: one sentence for purpose followed by a bullet list of parameter descriptions. Every sentence is necessary and adds value. The purpose is front-loaded, making it easy to understand at a glance.

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 low complexity and the presence of an output schema, the description is adequate but minimally complete. It covers the main action and parameters but lacks details on pagination behavior beyond the per_page parameter, default sorting, or what happens when no comments exist. More context would improve completeness.

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

Parameters4/5

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

The description provides meaningful explanations for all three parameters, including example values ('group/project') and constraints ('max 100'). This adds significant value beyond the input schema, which has 0% schema description coverage. The explanations are clear and helpful.

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 retrieves comments/notes on a specific merge request. It uses a specific verb 'Get' and resource 'comments/notes', and distinguishes itself from siblings like 'get_merge_request' (which gets the MR itself) and 'get_issue_comments' (which targets issues).

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 does not provide explicit guidance on when to use this tool versus alternatives. It only states what it does, leaving the agent to infer usage context. No 'when not to use' or references to sibling tools are given.

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

get_pipeline_jobsB

Get jobs for a specific pipeline.

Args: project_path: Full path of the project (e.g., 'group/project') pipeline_id: The ID of the pipeline per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNo
pipeline_idYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the full burden of behavioral disclosure. It only states the basic purpose and does not mention any behavioral traits such as whether it is a read operation, pagination behavior, authentication requirements, or rate limits. 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 extremely concise: one sentence for purpose plus a three-line parameter list. Every sentence provides value, and the purpose is front-loaded. No unnecessary words.

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 existence of an output schema (as per context signals), the description is minimally adequate. However, it lacks context about the return value (e.g., that it returns a list of job objects), pagination behavior (beyond per_page), and error conditions. A simple tool, but could be improved with a sentence about what the output contains.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds meaningful context for each parameter: project_path is 'Full path of the project (e.g., 'group/project')', pipeline_id is 'The ID of the pipeline', per_page is 'Number of results per page (max 100)'. This goes beyond the schema's type and title, though it could be more detailed (e.g., default value for per_page is already in 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?

Description clearly states 'Get jobs for a specific pipeline', using a specific verb and resource. It distinguishes from sibling tools like list_pipelines (which lists pipelines) and get_job_log (which gets a single job's log).

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 on when to use this tool vs alternatives. For example, it doesn't clarify that this retrieves all jobs within a pipeline, whereas get_job_log is for a single job's log. Sibling tools are mentioned but not contrasted.

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

get_projectA

Get details of a specific GitLab project.

Args: project_path: Full path of the project (e.g., 'group/project' or 'user/project')

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
topicsNo
web_urlYes
created_atNo
visibilityNo
descriptionNo
default_branchNo
last_activity_atNo
path_with_namespaceYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. 'Get details' implies a read-only operation, which is adequate but lacks explicit confirmation of non-destructiveness or permissions.

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 very concise at two sentences, but omits potential helpful details like a note on behavior or when to use. It is not verbose, but could be more efficient by including essential guidance.

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 tool with one parameter and an output schema, the description is mostly complete. It explains the purpose and parameter format. Could include a note about read-only nature but not necessary.

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

Parameters5/5

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

The parameter 'project_path' is described with context ('Full path of the project (e.g., 'group/project' or 'user/project')'), adding significant value beyond the schema's title alone, especially given 0% schema description 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 'Get details of a specific GitLab project' with a specific verb and resource, and distinguishes it from sibling tools like list_projects or other get_* tools.

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 on when to use this tool vs. alternatives (e.g., list_projects for exploring projects or get_issue for other resources). Context is implied but not explicit.

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

list_issuesB

List issues in a GitLab project.

Args: project_path: Full path of the project (e.g., 'group/project') state: Filter by state: 'opened', 'closed', or 'all' labels: Comma-separated list of label names to filter by search: Search term to filter issues per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoopened
labelsNo
searchNo
per_pageNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must disclose behavioral traits. It only says 'List issues' without mentioning pagination behavior, rate limits, sorting, or any side effects. The existence of an output schema is not referenced.

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 concise with a clear first sentence followed by a well-structured parameter list. Every sentence adds value, and there is no 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?

Given the output schema exists, return values are not needed. The description covers all parameters but misses context like pagination behavior, ordering, and how to retrieve all issues. For a listing tool, these are important gaps.

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

Parameters4/5

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

Schema coverage is 0%, so the description provides all parameter documentation. It explains each parameter (e.g., 'state: Filter by state: opened, closed, or all', 'labels: Comma-separated list'), adding meaning beyond the schema names. However, it lacks explicit constraints on search and does not list all possible values for state.

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 'List issues in a GitLab project' with a specific verb and resource. However, it does not differentiate from sibling tools like 'my_issues' or 'team_issues', which also list issues but with different scopes.

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 like 'get_issue' for a single issue or 'my_issues' for user-specific issues. The description lists parameters but does not state explicit prerequisites or exclusions.

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

list_merge_requestsA

List merge requests in a GitLab project.

Args: project_path: Full path of the project (e.g., 'group/project') state: Filter by state: 'opened', 'closed', 'merged', or 'all' target_branch: Filter by target branch name source_branch: Filter by source branch name search: Search term to filter merge requests per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoopened
searchNo
per_pageNo
project_pathYes
source_branchNo
target_branchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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. It explains parameters but does not disclose behavioral traits such as read-only nature, pagination behavior, required permissions, or rate limits. The per_page parameter hints at pagination but no details.

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 concise and structured with an Args section listing parameters. It is front-loaded with the main purpose. Slight wordiness in parameter descriptions could be trimmed, but overall efficient.

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 list tool with 6 parameters and an output schema, the description covers parameter semantics well. It lacks details on ordering or pagination beyond per_page, but the output schema likely handles return structure. Not fully complete but adequate.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining each parameter's purpose and expected values (e.g., 'state: Filter by state: opened, closed, merged, or all'). This adds critical meaning beyond the schema's type and default.

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 'List merge requests in a GitLab project', using a specific verb and resource. It distinguishes from sibling tools like 'get_merge_request' (single) and 'my_merge_requests' (personal list) through the project_path requirement and filtering options.

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 MRs in a project with various filters, but does not explicitly state when to use this tool over alternatives like 'my_merge_requests' or 'team_merge_requests'. No when-not or exclusion criteria are provided.

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

list_pipelinesA

List pipelines in a GitLab project.

Args: project_path: Full path of the project (e.g., 'group/project') status: Filter by status: 'running', 'pending', 'success', 'failed', 'canceled', 'skipped' ref: Filter by branch or tag name per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
statusNo
per_pageNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations exist, so the description must convey behavioral traits. It only states 'List pipelines' and parameter info, omitting details like pagination behavior, ordering, or whether the list includes all statuses by default.

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 concise: one sentence for purpose and a bullet-like list for parameters. No unnecessary words, front-loaded with main action.

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?

While an output schema exists (not shown), the description lacks details on pagination beyond per_page, such as how to iterate pages or default ordering. Adequate for a simple list but incomplete for robust agent usage.

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

Parameters4/5

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

The description adds meaning beyond the schema for all parameters: project_path with example, status with enumerated values, ref as branch/tag filter, per_page with max. This compensates for 0% 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 'List pipelines in a GitLab project' with a specific verb and resource. It distinguishes from sibling tools which focus on issues, merge requests, repository tree, etc.

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 does not explicitly indicate when to use this tool versus alternatives like get_pipeline_jobs. The use case is implied by naming, but no exclusions or context are provided.

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

list_projectsA

List GitLab projects accessible to the authenticated user.

Args: search: Search term to filter projects by name owned: If true, only return projects owned by the user membership: If true, only return projects the user is a member of per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
ownedNo
searchNo
per_pageNo
membershipNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/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 mentions accessibility ('accessible to the authenticated user') and includes parameter constraints (e.g., 'max 100' for per_page). However, it does not disclose pagination behavior or how results are ordered.

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 concise with a clear opening sentence and a bulleted list of parameters. Every sentence is informative, and the structure is front-loaded with the core purpose.

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 presence of an output schema (context signals indicate 'Has output schema: true'), the description does not need to explain return values. It covers the main purpose and parameters adequately, though it could mention that results are paginated or that the search filters by project name.

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

Parameters5/5

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

Schema coverage is 0%, meaning no parameter descriptions exist in the schema. The description provides detailed explanations for all four parameters: search, owned, membership, per_page. This adds significant semantic meaning beyond the raw 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 clearly states 'List GitLab projects accessible to the authenticated user.' This is a specific verb ('List') and resource ('GitLab projects'), and it distinguishes the tool from siblings like 'list_issues' or 'list_merge_requests' by focusing on projects.

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 explains parameters but does not explicitly state when to use this tool versus alternatives among the sibling tools. There is no guidance on when not to use it or what scenarios are inappropriate.

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

list_repository_treeA

List files and directories in a repository.

Args: project_path: Full path of the project (e.g., 'group/project') path: Path inside the repository to list (empty for root) ref: Branch name, tag, or commit SHA (defaults to 'main') recursive: If true, list files recursively per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
refNomain
pathNo
per_pageNo
recursiveNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It does not disclose behavioral traits such as pagination behavior, error handling, symlink handling, or whether the listing is limited to certain file types. The description is minimal on behavior.

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 reasonably concise with a clear first sentence and a structured parameter list. It could be slightly shortened by removing redundant defaults (e.g., ref default is already in schema), but overall it is well-organized and front-loaded with the main action.

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 output schema exists (no need to explain returns), and the description covers all parameters, it is fairly complete for a listing tool. However, it lacks details on pagination, error handling, and limits, which would improve completeness for agent decision-making.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args block fully explains each parameter: project_path as full path, path being empty for root, ref as branch/tag/commit with default 'main', recursive boolean, and per_page with max 100. This adds significant meaning beyond the schema's bare titles and defaults.

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 'List files and directories in a repository', which is a specific verb-resource combination. It distinguishes from sibling tools like get_file_content (single file) and list_issues (issues), making it easy to understand its purpose.

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. There is no mention of context, exclusions, or hints about when it is appropriate to list the repository tree vs getting file content or listing other resources.

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

my_issuesA

List issues assigned to the current authenticated user across all projects or a specific project.

Args: state: Filter by state: 'opened', 'closed', or 'all' project_path: Optional - filter to a specific project (e.g., 'group/project') per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoopened
per_pageNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 lacks behavioral details such as whether the operation is read-only, authentication requirements, pagination behavior (though per_page parameter hints at pagination), or the structure of the returned data. The description does not contradict annotations since none exist, but it is insufficiently transparent.

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 concise and uses a clear Args format. No extraneous information is present. It could be slightly more compact by integrating examples into the parameter descriptions, but overall it is well-structured and efficient.

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 complexity (3 parameters, no annotations, output schema exists but not shown), the description covers the core functionality adequately. However, it lacks some contextual details such as the return format (list of issues), authentication context, and explicit note that results are paginated. An output schema exists but is not described, so the agent would still need to infer return structure from other cues.

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

Parameters4/5

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

With 0% schema description coverage, the description adds significant meaning by explaining each parameter: state filter with examples, project_path as optional with format hint, and per_page with a max value. This compensates for the lack of schema descriptions, though it could mention defaults more explicitly.

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 it lists issues assigned to the current authenticated user, distinguishing it from sibling tools like list_issues which likely list all issues. The verb 'list' and resource 'issues assigned to current user' are specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (for getting issues assigned to the authenticated user across projects or a specific project). However, it does not explicitly mention alternatives or when not to use it, such as when needing issues not assigned to the user.

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

my_merge_requestsA

List merge requests assigned to the current authenticated user across all projects or a specific project.

Args: state: Filter by state: 'opened', 'closed', 'merged', or 'all' project_path: Optional - filter to a specific project (e.g., 'group/project') per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoopened
per_pageNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool lists merge requests assigned to the current user, and mentions state and project filters. It does not detail pagination behavior or rate limits, but it is a read operation with no destructive actions implied.

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 concise with a front-loaded main sentence and a clear list of arguments. No unnecessary words, every sentence adds value.

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 presence of an output schema, return values need not be explained. The description covers input parameters adequately, but could mention that results are scoped to the authenticated user only, and pagination is handled via per_page.

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

Parameters4/5

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

Schema coverage is 0%, so the description compensates by explaining each parameter: state filter (with enum values), optional project_path (with example), and per_page (max 100). This adds meaningful context beyond the schema's types and defaults.

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 action ('List'), the resource ('merge requests'), and the scope ('assigned to the current authenticated user'). It also distinguishes from sibling tools like 'list_merge_requests' and 'my_merge_requests_to_review' by specifying the assignment filter.

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

Usage Guidelines4/5

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

The description provides clear context on when to use (to list merge requests assigned to the user) and includes optional filters. It does not explicitly state when not to use or name alternatives, but the differentiation from sibling tools is implicit.

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

my_merge_requests_to_reviewA

List merge requests where the current user is a reviewer across all projects or a specific project.

Args: state: Filter by state: 'opened', 'closed', 'merged', or 'all' project_path: Optional - filter to a specific project (e.g., 'group/project') per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoopened
per_pageNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It explains the basic behavior (listing MRs where user is reviewer) and mentions pagination via per_page but lacks details on authentication, rate limits, or edge cases.

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 concise, front-loaded with the main purpose, and presents arguments clearly. Every sentence adds value without redundancy.

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 presence of an output schema, the description does not need to explain return values. It covers core functionality but lacks details on sorting, default behavior, or what happens when no results. Adequate for a simple list tool.

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

Parameters4/5

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

The input schema has no descriptions (0% coverage), so the description adds value by explaining each parameter: state options, optional project_path, and max per_page. It compensates for the schema gaps.

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 lists merge requests where the current user is a reviewer, across all projects or a specific project. This distinguishes it from sibling tools like 'list_merge_requests' and 'my_merge_requests'.

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 filtering by reviewer role but does not explicitly state when not to use or provide alternatives. The sibling tool names suggest other MR views, but no direct guidance is given.

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

team_issuesA

List issues with a specific team label across all projects or a specific project.

Args: label: Team label to filter by (defaults to 'RE') state: Filter by state: 'opened', 'closed', or 'all' project_path: Optional - filter to a specific project (e.g., 'group/project') per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoRE
stateNoopened
per_pageNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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. It explains the basic behavior (listing issues with label, optional project filter) but does not disclose pagination behavior, ordering, or limits beyond the per_page max.

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 concise: a one-sentence purpose followed by a bullet-like list of arguments. It is front-loaded with the main action and uses no redundant words.

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 list tool with 4 parameters and an existing output schema, the description covers all parameters adequately. It could mention that results are paginated, but the per_page parameter implies this. Overall, it provides sufficient context for agent decision-making.

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

Parameters5/5

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

Schema coverage is 0%, and the description adds complete parameter semantics: explains each parameter (label, state, project_path, per_page) with defaults and examples (e.g., 'group/project' for project_path), fully compensating for the schema gap.

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 action (List issues) and the resource (issues with a specific team label), and differentiates from sibling tools like list_issues (general) and my_issues (personal) by specifying the team label filter.

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 team-labeled issues but does not explicitly state when to use this tool over alternatives. It lacks exclusions or guidance on 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.

team_merge_requestsA

List merge requests with a specific team label across all projects or a specific project.

Args: label: Team label to filter by (defaults to 'RE') state: Filter by state: 'opened', 'closed', 'merged', or 'all' project_path: Optional - filter to a specific project (e.g., 'group/project') per_page: Number of results per page (max 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoRE
stateNoopened
per_pageNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description is the sole source of behavioral info. It describes a read-only list operation and explains parameters, but does not disclose any potential side effects, rate limits, or pagination behavior beyond the per_page parameter.

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 extremely concise: one sentence for purpose followed by a clear argument list. No unnecessary words or 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?

Given the 4 optional parameters and presence of an output schema, the description covers the essential functionality. It lacks details on pagination behavior or how results are ordered, but remains sufficient for selecting and invoking the tool.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates by explaining each parameter: label (default RE), state (opened, closed, merged, all), project_path (e.g., group/project), per_page (max 100). It adds meaning beyond the schema's default values.

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 'List merge requests with a specific team label across all projects or a specific project', specifying the verb (list), resource (merge requests), and the unique filtering by team label. This distinguishes it from sibling tools like 'list_merge_requests' which lists all merge requests.

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

Usage Guidelines4/5

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

The description implies when to use: when needing merge requests filtered by team label. It provides context by mentioning optional project_path and state filters, but does not explicitly compare to siblings or state when not to use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.0
    • First observedget_file_content
    • First observedget_issue
    • First observedget_issue_comments
    • First observedget_job_log
    • First observedget_merge_request
    • First observedget_merge_request_changes
    • First observedget_merge_request_comments
    • First observedget_pipeline_jobs
    • First observedget_project
    • First observedlist_issues
    • First observedlist_merge_requests
    • First observedlist_pipelines
    • First observedlist_projects
    • First observedlist_repository_tree
    • First observedmy_issues
    • First observedmy_merge_requests
    • First observedmy_merge_requests_to_review
    • First observedteam_issues
    • First observedteam_merge_requests

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose. Retrieval tools for files, issues, merge requests, pipelines, and projects are separate, and specialized filters (my_*, team_*) are well-differentiated with explicit descriptions.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern (e.g., get_*, list_*, my_*). The use of 'get' for single items and 'list' for multiple is conventional and predictable.

Tool Count4/5

19 tools is on the higher side but still reasonable for a GitLab MCP server covering file, issue, merge request, pipeline, and project operations. The count reflects the breadth of GitLab's features without being excessive.

Completeness2/5

The tool set is entirely read-only, lacking any create, update, or delete operations for issues, merge requests, projects, or pipelines. This is a significant gap that prevents agents from performing common management tasks.

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
    Enables AI assistants to interact with GitLab for managing projects, branches, issues, and merge requests. It provides tools for searching code and performing file operations like reading and writing directly within repositories.
    24
    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/ProstoyVadila/gitlab_mcp_server'

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