Skip to main content
Glama
lininn

GitLab Review MCP

by lininn

Node Code Review MCP

A Node.js implementation of the Model Context Protocol (MCP) server for code review operations, supporting both GitHub and GitLab platforms.

πŸ“– δΈ­ζ–‡ζ–‡ζ‘£: README-zh.md | εΏ«ι€ŸεΌ€ε§‹ | εŠŸθƒ½ε―Ήζ―”

Features

  • πŸ” Fetch pull request/merge request details

  • πŸ“„ Get code diffs for PRs or commits

  • πŸ’¬ Add review comments

  • πŸ” Basic code quality analysis

  • πŸ”§ Configurable via command line arguments

  • 🌐 Support for both GitHub and GitLab APIs

Related MCP server: MCP Code Review Server

Installation

Via NPM (when published)

npm install -g gitlab-review-mcp

Local Development

git clone <repository>
cd gitlab-review-mcp
npm install
npm run build

Configuration

Environment Variables

Copy env.example to .env and configure:

# API Configuration
API_BASE_URL=https://api.github.com
API_TOKEN=your_github_token_here

# For GitLab, use:
# API_BASE_URL=https://gitlab.com/api/v4
# API_TOKEN=your_gitlab_token_here

# Server Configuration
TIMEOUT=30000
MAX_RETRIES=3

Command Line Arguments

gitlab-review-mcp \
  --api-base-url https://api.github.com \
  --api-token your_token \
  --timeout 30000 \
  --max-retries 3

MCP Configuration

Add to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "gitlab-review-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "gitlab-review-mcp",
        "--api-base-url=https://api.github.com",
        "--api-token=your_github_token_here"
      ],
      "alwaysAllow": [
        "fetch_pull_request",
        "fetch_code_diff",
        "add_review_comment",
        "analyze_code_quality",
        "get_server_config",
        "create_merge_request",
        "get_current_branch",
        "get_project_info"
      ]
    }
  }
}

Using Local Installation

{
  "mcpServers": {
    "gitlab-review-mcp": {
      "command": "node",
      "args": [
        "/path/to/gitlab-review-mcp/dist/index.js",
        "--api-base-url=https://api.github.com",
        "--api-token=your_github_token_here"
      ],
      "alwaysAllow": [
        "fetch_pull_request",
        "fetch_code_diff",
        "add_review_comment",
        "analyze_code_quality",
        "get_server_config",
        "create_merge_request",
        "get_current_branch",
        "get_project_info"
      ]
    }
  }
}

For GitLab

{
  "mcpServers": {
    "gitlab-review-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "gitlab-review-mcp",
        "--api-base-url=https://gitlab.com/api/v4",
        "--api-token=your_gitlab_token_here"
      ],
      "alwaysAllow": [
        "fetch_pull_request",
        "fetch_code_diff",
        "add_review_comment",
        "analyze_code_quality",
        "get_server_config",
        "create_merge_request",
        "get_current_branch",
        "get_project_info"
      ]
    }
  }
}

Available Tools

fetch_pull_request

Fetch pull request/merge request details.

Parameters:

  • repository (string): Repository in format "owner/repo" or GitLab project path like "group/project" (aliases: projectId, project_path)

  • pullRequestNumber (number): Pull request number

  • provider (string, optional): "github" or "gitlab" (default: "gitlab")

fetch_code_diff

Fetch code diff for a pull request or commit.

Parameters:

  • repository (string): Repository in format "owner/repo" or GitLab project path like "group/project"

  • pullRequestNumber (number, optional): Pull request number

  • commitSha (string, optional): Commit SHA

  • filePath (string, optional): Specific file path to get diff for

  • provider (string, optional): "github" or "gitlab" (default: "gitlab")

add_review_comment

Add a review comment to a pull request.

Parameters:

  • repository (string): Repository in format "owner/repo" or GitLab project path like "group/project"

  • pullRequestNumber (number): Pull request number

  • body (string): Comment body

  • filePath (string, optional): File path for line comment

  • line (number, optional): Line number for line comment

  • provider (string, optional): "github" or "gitlab" (default: "gitlab")

analyze_code_quality

Analyze code quality and provide suggestions with detailed metrics.

Parameters:

  • code (string): Code content to analyze

  • language (string): Programming language (javascript, typescript, python, java, go, etc.)

  • rules (array, optional): Specific rules to check

get_repository_info

Get repository information.

Parameters:

  • repository (string): Repository in format "owner/repo" or GitLab project path like "group/project"

  • provider (string, optional): "github" or "gitlab" (default: "gitlab")

analyze_files_batch

Analyze multiple files for code quality issues.

Parameters:

  • files (array): Array of file objects with path, content, and language properties

  • rules (array, optional): Specific rules to apply to all files

get_pull_request_files

Get list of files changed in a pull request.

Parameters:

  • repository (string): Repository in format "owner/repo" or GitLab project path like "group/project"

  • pullRequestNumber (number): Pull request number

  • provider (string, optional): "github" or "gitlab" (default: "gitlab")

get_supported_languages

Get list of supported programming languages for code analysis.

get_language_rules

Get available analysis rules for a specific language.

Parameters:

  • language (string): Programming language

get_server_config

Get current server configuration and health status.

create_merge_request πŸ†•

Create a new GitLab merge request from a source branch with enhanced error handling.

Parameters:

  • projectId (string): GitLab project ID or path

    • Numeric ID (recommended): "12345"

    • Project path: "group/project" or "group/subgroup/project"

  • sourceBranch (string): Source branch name (e.g., "feature/new-feature")

  • targetBranch (string, optional): Target branch name (defaults to "main")

  • title (string, optional): Merge request title (auto-generated from branch name if not provided)

  • description (string, optional): Merge request description

  • assigneeId (number, optional): User ID to assign the merge request to

  • reviewerIds (array, optional): Array of user IDs to request reviews from

  • deleteSourceBranch (boolean, optional): Whether to delete source branch when MR is merged

  • squash (boolean, optional): Whether to squash commits when merging

Enhanced Error Handling:

  • Project ID validation with detailed error messages

  • Automatic project verification before MR creation

  • Comprehensive troubleshooting guidance for common errors (404, 401, 403, etc.)

  • Support for both numeric IDs and project paths

Example:

// Minimal usage
{
  "projectId": "mygroup/myproject",
  "sourceBranch": "feature/user-authentication"
}

// Full configuration
{
  "projectId": "12345",
  "sourceBranch": "feature/user-authentication",
  "targetBranch": "develop",
  "title": "feat: Add user authentication system",
  "description": "This MR adds JWT-based authentication with password hashing.",
  "assigneeId": 123,
  "reviewerIds": [456, 789],
  "deleteSourceBranch": true,
  "squash": true
}

Auto-generated Titles: The tool automatically generates conventional commit-style titles based on branch prefixes:

  • feature/ β†’ feat:

  • bugfix/ β†’ fix:

  • hotfix/ β†’ fix:

  • docs/ β†’ docs:

  • refactor/ β†’ refactor:

get_current_branch πŸ†•

Get current Git branch and repository information.

Parameters:

  • workingDirectory (string, optional): Working directory path (defaults to current directory)

Example:

{
  "workingDirectory": "/path/to/your/project"
}

Returns:

{
  "currentBranch": "feature/user-authentication",
  "allBranches": ["main", "feature/user-authentication", "develop"],
  "isGitRepository": true,
  "repositoryRoot": "/path/to/your/project"
}

get_project_info πŸ†•

Get current GitLab project information from Git remotes.

Parameters:

  • workingDirectory (string, optional): Working directory path (defaults to current directory)

  • remoteName (string, optional): Git remote name (defaults to "origin")

Example:

{
  "workingDirectory": "/path/to/your/project",
  "remoteName": "origin"
}

Returns:

{
  "projectId": "group%2Fproject",
  "projectPath": "group/project",
  "gitlabUrl": "https://gitlab.com",
  "remotes": [
    {
      "name": "origin",
      "url": "git@gitlab.com:group/project.git",
      "fetch": "git@gitlab.com:group/project.git",
      "push": "git@gitlab.com:group/project.git"
    }
  ],
  "isGitlabProject": true
}

API Token Setup

GitHub

  1. Go to GitHub Settings > Developer settings > Personal access tokens

  2. Generate a new token with appropriate permissions:

    • repo scope for private repositories

    • public_repo scope for public repositories only

GitLab

  1. Go to GitLab User Settings > Access Tokens

  2. Create a personal access token with:

    • api scope for full API access

    • read_api scope for read-only access

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build
npm run build

# Clean build directory
npm run clean

License

MIT License - see LICENSE file for details.

Available Tools

15 tools
add_review_commentC

Add a review comment to a pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesRepository in format "owner/repo"
pullRequestNumberYesPull request number
bodyYesComment body
filePathNoFile path for line comment (optional)
lineNoLine number for line comment (optional)
providerNoGit provider (github or gitlab)gitlab

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 behavioral disclosure. It states the action ('Add') which implies a write operation, but doesn't mention permissions required, rate limits, whether comments are editable/deletable, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 that states the tool's purpose without unnecessary words. It's front-loaded and efficiently communicates the core function, making it easy for an agent to parse quickly.

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 a mutation tool with 6 parameters and no annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, error conditions, or what the tool returns. The 100% schema coverage helps with parameters, but the overall context for safe and effective use is lacking.

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 schema already documents all 6 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (like explaining when filePath/line are needed for line comments versus general comments). Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Add') and target resource ('review comment to a pull request'), making the purpose immediately understandable. However, it doesn't differentiate from potential sibling tools like 'create_merge_request' or 'fetch_pull_request' that might also involve pull request interactions, leaving room for ambiguity in tool selection.

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. For example, it doesn't clarify if this is for general comments versus code review-specific feedback, or how it differs from tools like 'create_merge_request' that might also handle pull request interactions. The description offers only the basic function without context.

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

analyze_code_qualityC

Analyze code quality and provide suggestions with detailed metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode content to analyze
languageYesProgramming language (javascript, typescript, python, java, go, etc.)
rulesNoSpecific rules to check (optional)

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 behavioral disclosure. While 'analyze' suggests a read-only operation, it doesn't explicitly state whether this requires authentication, has rate limits, returns structured data, or involves computational costs. The mention of 'detailed metrics' hints at output format but remains vague about actual behavior beyond the basic function.

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, efficient sentence that front-loads the core purpose. There's no wasted text or redundancy. However, it could be slightly more structured by separating the analysis function from the output description, but it remains appropriately concise for a tool with clear parameters.

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 (3 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details about output format, error conditions, or integration with sibling tools. For a code analysis tool that likely returns complex metrics, more context about the nature of 'suggestions' and 'detailed metrics' would be helpful.

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 description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It doesn't explain what 'rules' might entail, how 'language' affects analysis, or what format 'code' should be in. Since the schema descriptions adequately cover the parameters, the baseline score of 3 is appropriate, but no extra value is added.

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 tool's purpose: 'Analyze code quality and provide suggestions with detailed metrics'. It specifies the verb ('analyze'), resource ('code quality'), and output type ('suggestions with detailed metrics'). However, it doesn't differentiate from sibling tools like 'analyze_files_batch' or 'get_language_rules', which prevents a perfect score.

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. With siblings like 'analyze_files_batch' (for batch analysis) and 'get_language_rules' (for rule retrieval), there's no indication of when this single-code analysis tool is preferred or what its limitations might be. The description only states what it does, not when to use it.

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

analyze_files_batchC

Analyze multiple files for code quality issues

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesArray of files to analyze
rulesNoSpecific rules to apply to all files (optional)

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 behavioral disclosure. It mentions analyzing for 'code quality issues' but doesn't specify what types of issues, whether the analysis is read-only or modifies files, what permissions are required, or how results are returned. This leaves significant gaps for a tool that processes multiple files.

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, efficient sentence that gets straight to the point without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 complexity of analyzing multiple files for code quality, the lack of annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, how errors are handled, or the scope of analysis, leaving the agent with incomplete information for proper invocation.

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 description coverage is 100%, so the schema already documents both parameters ('files' and 'rules') adequately. The description adds no additional meaning beyond what the schema provides, such as explaining what 'code quality issues' entail or how rules interact with files, but this is acceptable given the high schema coverage.

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 ('analyze') and resource ('multiple files for code quality issues'), making the purpose evident. However, it doesn't differentiate from the sibling tool 'analyze_code_quality', which appears to serve a similar purpose, leaving some ambiguity about when to use each.

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 like 'analyze_code_quality' or other sibling tools. It lacks context about prerequisites, such as whether files need to be from a repository or can be arbitrary, and offers no explicit when/when-not instructions.

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

create_merge_requestB

Create a new GitLab merge request from a source branch

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoGitLab project ID or path (aliases: project_id, project_path; e.g., "12345" or "group/project")
sourceBranchYesSource branch name (aliases: source_branch; e.g., "feature/new-feature")
targetBranchNoTarget branch name (aliases: target_branch; defaults to "main")main
titleNoMerge request title (auto-generated from branch name if not provided)
descriptionNoMerge request description
assigneeIdNoUser ID to assign the merge request to
reviewerIdsNoArray of user IDs to request reviews from
deleteSourceBranchNoWhether to delete source branch when MR is merged
squashNoWhether to squash commits when merging
workingDirectoryNoLocal repository path for auto-detecting project ID (aliases: working_directory, cwd)
remoteNameNoGit remote name used for auto-detecting the project IDorigin

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create' implies a write operation, it lacks critical details: required permissions, whether it's idempotent, error handling, rate limits, or what happens on success/failure. For a mutation tool with 11 parameters, this is a significant gap in behavioral 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place in conveying the essential functionality.

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 a complex mutation tool with 11 parameters, no annotations, and no output schema, the description is inadequate. It doesn't address behavioral aspects (permissions, side effects), provide usage context, or explain what the tool returns. The combination of mutation complexity and lack of structured metadata requires more comprehensive description content.

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 description coverage is 100%, providing detailed documentation for all 11 parameters. The description adds no additional parameter semantics beyond what's already in the schema (e.g., it doesn't explain relationships between parameters like 'workingDirectory' and 'projectId'). With comprehensive schema coverage, the baseline score 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 clearly states the specific action ('Create a new GitLab merge request') and resource ('from a source branch'), distinguishing it from sibling tools like 'get_merge_request' or 'fetch_pull_request' which are read operations. It precisely communicates the core functionality without ambiguity.

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 like 'fetch_pull_request' or 'get_merge_request', nor does it mention prerequisites (e.g., authentication, branch existence) or exclusions. It simply states what the tool does without contextual usage information.

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

fetch_code_diffC

Fetch code diff for a pull request or commit

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesRepository in format "owner/repo"
pullRequestNumberNoPull request number (optional if commitSha is provided)
commitShaNoCommit SHA (optional if pullRequestNumber is provided)
filePathNoSpecific file path to get diff for (optional)
providerNoGit provider (github or gitlab)gitlab

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 the full burden of behavioral disclosure. It states what the tool does but lacks details on permissions needed, rate limits, error handling, or the format of the returned diff. For a tool that fetches data from external providers, this is a significant gap in transparency.

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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to scan and understand quickly.

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 complexity of fetching code diffs from external providers, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication, response format, or error cases, which are crucial for effective tool use.

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 schema fully documents all parameters. The description adds no additional meaning beyond what's in the schema, such as explaining interactions between 'pullRequestNumber' and 'commitSha'. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb ('fetch') and resource ('code diff') with the target ('pull request or commit'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'get_pull_request_files' or 'get_merge_request_changes', which might also provide diff-related information, so it misses full sibling differentiation.

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 doesn't mention prerequisites, such as needing repository access, or compare it to siblings like 'fetch_pull_request' or 'get_pull_request_files', leaving the agent with no context for selection.

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

fetch_pull_requestC

Fetch pull request details from GitHub/GitLab

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesRepository in format "owner/repo"
pullRequestNumberYesPull request number
providerNoGit provider (github or gitlab)gitlab

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 burden. It states 'fetch' but doesn't clarify if this is a read-only operation, what data is returned (e.g., status, author, diff), or any behavioral traits like rate limits or authentication needs. This leaves significant gaps for a tool that interacts with external APIs.

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, efficient sentence with zero waste. It's front-loaded and appropriately sized for its purpose, making it easy to parse quickly.

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 doesn't explain what 'details' include (e.g., metadata, comments, diff), return format, or error handling. For a tool fetching data from external APIs with multiple siblings, more context is needed to guide proper usage.

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 schema fully documents parameters. The description adds no additional meaning beyond implying the tool works with GitHub/GitLab, which is already covered by the 'provider' parameter's enum. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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 verb 'fetch' and resource 'pull request details', specifying the source platforms (GitHub/GitLab). However, it doesn't differentiate from sibling tools like 'get_pull_request_files' or 'get_merge_request', which could cause confusion about scope.

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. With siblings like 'get_merge_request' and 'get_pull_request_files' available, the description lacks context about whether this fetches metadata, comments, or full details, and doesn't mention prerequisites or exclusions.

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

get_current_branchB

Get current Git branch and repository information

ParametersJSON Schema
NameRequiredDescriptionDefault
workingDirectoryNoWorking directory path (defaults to current directory)

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 of behavioral disclosure. While 'Get' implies a read-only operation, the description doesn't specify whether this requires Git repository access, what happens if no Git repo exists in the directory, or what format the repository information returns. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple tool and front-loads the essential 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?

For a simple read operation with one optional parameter and no output schema, the description is minimally adequate. However, without annotations or output schema, it should ideally provide more context about what 'repository information' includes or any prerequisites. The description covers the basics but leaves room for improvement given the lack of structured metadata.

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, with the single parameter 'workingDirectory' fully documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.

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 ('current Git branch and repository information'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_repository_info' or 'get_project_info', which might provide overlapping information about repositories.

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. With siblings like 'get_repository_info' and 'get_project_info' that might provide similar repository context, there's no indication of what distinguishes this tool's focus on the 'current branch' specifically.

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

get_language_rulesC

Get available analysis rules for a specific language

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesProgramming language

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 behavioral disclosure. It states what the tool does but doesn't reveal traits like whether it's read-only, has rate limits, requires authentication, or what the output format might be. This is a significant gap for a tool with no structured safety hints.

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 zero waste, front-loading the key information efficiently. It's appropriately sized for the tool's apparent simplicity.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'analysis rules' entail, how they're returned, or any behavioral context, making it inadequate for an agent to fully understand the tool's operation without additional cues.

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, with the single parameter 'language' documented as 'Programming language'. The description adds no additional meaning beyond this, such as examples or constraints, so it meets the baseline for high schema coverage without compensating value.

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 resource ('available analysis rules for a specific language'), making the purpose understandable. However, it doesn't explicitly differentiate from siblings like 'get_supported_languages' or 'analyze_code_quality', which might offer related functionality, so it doesn't reach the highest score.

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, such as 'get_supported_languages' for listing languages or 'analyze_code_quality' for applying rules. It lacks explicit context, prerequisites, or exclusions, leaving usage unclear.

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

get_merge_requestC

Get information about a specific GitLab merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoGitLab project ID or path (aliases: project_id, project_path; e.g., "12345" or "group/project")
mergeRequestIidYesMerge request IID (aliases: merge_request_iid; the number in the MR URL, not the database ID)
workingDirectoryNoLocal repository path for auto-detecting project ID (aliases: working_directory, cwd)
remoteNameNoGit remote name used for auto-detecting the project IDorigin

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 behavioral disclosure but offers minimal information. It states it 'gets information' but doesn't specify what kind of information (e.g., metadata, status, comments), whether it requires authentication, if there are rate limits, or what happens with invalid inputs. This leaves significant gaps for a tool that likely interacts with an external API.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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 complexity of interacting with GitLab merge requests, no annotations, and no output schema, the description is insufficient. It doesn't explain what information is returned, error conditions, or behavioral aspects like authentication needs. For a tool with 4 parameters and likely API calls, more context is needed to use it effectively.

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 description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as explaining relationships between parameters (e.g., how 'workingDirectory' and 'remoteName' interact with 'projectId'). This meets the baseline for high schema coverage.

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 verb ('Get') and resource ('information about a specific GitLab merge request'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'get_merge_request_changes' or 'fetch_pull_request', which likely retrieve related but different information.

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 are several sibling tools that deal with merge requests, pull requests, and code analysis, but the description doesn't indicate whether this is for basic metadata, when to choose it over 'get_merge_request_changes' or 'fetch_pull_request', or any prerequisites for its use.

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

get_merge_request_changesC

Get merge request changes (GitLab compatibility alias)

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryNoRepository/project identifier (e.g., "group/project"). Optional if workingDirectory is provided.
pullRequestNumberNoPull/MR number (IID). Optional if mergeRequestIid is provided.
mergeRequestIidNoMerge request IID (GitLab). Optional if pullRequestNumber is provided.
providerNoGit provider (default gitlab)gitlab
workingDirectoryNoLocal repository path for auto-detecting project ID (aliases: working_directory, cwd)
remoteNameNoGit remote name used for auto-detecting the project IDorigin

TDQS

C2.2/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 for behavioral disclosure. It only mentions 'GitLab compatibility alias' which hints at cross-provider support but doesn't clarify what 'changes' means, whether this is a read-only operation, what authentication might be needed, error conditions, or response format. For a tool with 6 parameters and no annotations, this is inadequate.

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 extremely concise - a single sentence that wastes no words. However, this brevity comes at the cost of being under-specified for a tool with this complexity. While structurally efficient, it lacks the necessary detail that would make it truly helpful.

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 a tool with 6 parameters, no annotations, no output schema, and multiple sibling tools that appear related, the description is insufficient. It doesn't explain what 'changes' means, how this differs from similar tools, what the return format looks like, or any behavioral characteristics. The agent would struggle to use this tool effectively without additional 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 the schema fully documents all 6 parameters. The description adds no parameter-specific information beyond what's already in the schema, maintaining the baseline score of 3. However, it doesn't compensate for any gaps since there are none in the schema.

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

Purpose2/5

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

The description 'Get merge request changes (GitLab compatibility alias)' is tautological - it essentially restates the tool name with minimal elaboration. While it mentions 'GitLab compatibility alias', it doesn't specify what kind of changes are retrieved (diffs, file lists, commit details) or how this differs from similar tools like 'fetch_pull_request' or 'get_pull_request_files' among the siblings.

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

Usage Guidelines1/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. With siblings like 'fetch_pull_request', 'get_merge_request', and 'get_pull_request_files', the description offers no differentiation or context about appropriate use cases, leaving the agent to guess based on tool names alone.

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

get_project_infoC

Get current GitLab project information from Git remotes

ParametersJSON Schema
NameRequiredDescriptionDefault
workingDirectoryNoWorking directory path (defaults to current directory)
remoteNameNoGit remote name (defaults to "origin")origin

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 full burden for behavioral disclosure. It states what the tool does but doesn't describe how it works, what information it returns, error conditions, or any behavioral traits like whether it requires network access, has rate limits, or what format the project information comes in.

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, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the core purpose immediately.

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 a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'project information' includes, the return format, or any behavioral context needed for an agent to understand what to expect from using this 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?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema descriptions, maintaining the baseline score for high schema coverage.

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 resource ('current GitLab project information') with specific source context ('from Git remotes'). It distinguishes from some siblings like 'get_repository_info' by specifying GitLab and remote focus, but doesn't explicitly differentiate from all similar tools like 'get_current_branch'.

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 about when to use this tool versus alternatives. The description doesn't mention prerequisites, when this tool is appropriate versus other project information tools, or any context about its specific use case beyond the basic purpose.

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

get_pull_request_filesC

Get list of files changed in a pull request or merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryNoRepository/project identifier (e.g., "owner/repo" or "group/project"). Optional if workingDirectory is provided.
pullRequestNumberNoPull request number (IID). Optional if mergeRequestIid is provided.
mergeRequestIidNoMerge request IID (GitLab). Optional if pullRequestNumber is provided.
providerNoGit provider (github or gitlab)gitlab
workingDirectoryNoLocal repository path for auto-detecting project ID (aliases: working_directory, cwd)
remoteNameNoGit remote name used for auto-detecting the project IDorigin

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 behavioral disclosure. It states the action ('Get list') but doesn't describe what the output looks like (e.g., file names, change types, pagination), error conditions, or any side effects. This leaves significant gaps for an agent to understand how to interpret results.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 complexity of 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the return format, error handling, or how parameters interact (e.g., repository vs. workingDirectory). For a tool with multiple optional parameters and no structured output, more context is needed for effective use.

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, so parameters are well-documented there. The description adds no additional parameter semantics beyond implying that it handles both pull requests and merge requests, which is already covered by the schema's 'provider' enum and optional fields. This meets the baseline for high schema coverage.

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 verb ('Get list') and resource ('files changed in a pull request or merge request'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'fetch_pull_request' or 'get_merge_request_changes', which might have overlapping functionality.

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 like 'fetch_pull_request' or 'get_merge_request_changes'. It lacks context about prerequisites, such as needing an existing pull/merge request, and doesn't mention any exclusions or specific scenarios where this tool is preferred.

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

get_repository_infoC

Get repository information

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesRepository in format "owner/repo"
providerNoGit provider (github or gitlab)gitlab

TDQS

C2.2/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. 'Get repository information' implies a read-only operation but doesn't specify authentication requirements, rate limits, error conditions, or what format the information is returned in. It fails to describe any behavioral traits beyond the minimal inference from 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.

Conciseness4/5

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

The description is extremely concise at just three words, with no wasted words or unnecessary elaboration. However, this brevity comes at the cost of being under-specified rather than efficiently informative. It's front-loaded but lacks substance.

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's moderate complexity (2 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain what 'repository information' encompasses, how results are structured, or any behavioral considerations. For a tool that likely returns structured data about repositories, more context is needed to guide effective use.

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 description coverage is 100%, with both parameters clearly documented in the schema itself. The description adds no additional parameter semantics beyond what's already in the schema (e.g., it doesn't explain the relationship between 'repository' and 'provider' or provide examples). This meets the baseline score of 3 when the schema does the heavy lifting.

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

Purpose2/5

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

The description 'Get repository information' is a tautology that essentially restates the tool name 'get_repository_info'. While it indicates a read operation on repositories, it lacks specificity about what information is retrieved (e.g., metadata, statistics, configuration) and doesn't distinguish this tool from sibling tools like 'get_project_info' or 'get_current_branch' that also retrieve repository-related data.

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

Usage Guidelines1/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 doesn't mention prerequisites, appropriate contexts, or exclusions, nor does it differentiate from similar sibling tools like 'get_project_info' or 'get_merge_request'. This leaves the agent with no usage direction beyond the basic tool name.

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

get_server_configB

Get current server configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether this requires authentication, has rate limits, returns structured data, or involves side effects. 'Get' implies read-only, but this isn't explicitly confirmed.

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, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy for an agent to parse quickly.

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 zero-param tool with no output schema, the description is minimally adequate but lacks context about what 'server configuration' includes or the return format. Given the sibling tools suggest a code/development context, more specificity would help, but it meets basic requirements.

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 tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add param info, but that's appropriate here. Baseline is 4 for zero-param tools as per rules.

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 'Get current server configuration' clearly states the verb ('Get') and resource ('current server configuration'), making the purpose immediately understandable. It doesn't distinguish from siblings like 'get_project_info' or 'get_repository_info', but the resource specificity is adequate.

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 like 'get_project_info' or 'get_repository_info'. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_supported_languagesB

Get list of supported programming languages for code analysis

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but provides no information about response format, potential rate limits, authentication requirements, or error conditions. For a read operation with zero annotation coverage, this is insufficient behavioral 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, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized for a simple, parameterless tool and is perfectly front-loaded with the essential 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?

For a simple, parameterless read operation with no output schema, the description provides the basic purpose but lacks important context about what the response contains (e.g., format, structure, or example output). Given the absence of both annotations and output schema, the description should ideally provide more information about the return value.

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 tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and it doesn't need to compensate for any schema gaps.

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 verb ('Get') and resource ('list of supported programming languages for code analysis'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'get_language_rules', but the specificity about 'programming languages for code analysis' provides reasonable differentiation.

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 like 'get_language_rules' or other sibling tools. There's no mention of prerequisites, context, or comparison with similar tools, leaving the agent with minimal usage direction.

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. 15 tool updatesv1.0.27
    • First observedadd_review_comment
    • First observedanalyze_code_quality
    • First observedanalyze_files_batch
    • First observedcreate_merge_request
    • First observedfetch_code_diff
    • First observedfetch_pull_request
    • First observedget_current_branch
    • First observedget_language_rules
    • First observedget_merge_request
    • First observedget_merge_request_changes
    • First observedget_project_info
    • First observedget_pull_request_files
    • First observedget_repository_info
    • First observedget_server_config
    • First observedget_supported_languages

TDQS

B3/5.0
Disambiguation3/5

There is significant overlap between several tools, particularly in the code analysis and merge/pull request areas. For example, 'analyze_code_quality' and 'analyze_files_batch' have unclear boundaries, and 'fetch_pull_request' vs 'get_merge_request' could cause confusion about which platform to target. However, the descriptions help clarify some distinctions, preventing complete ambiguity.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., 'add_review_comment', 'create_merge_request', 'get_project_info'), which is clear and predictable. There are minor deviations like 'fetch_code_diff' (using 'fetch' instead of 'get') and 'analyze_files_batch' (which includes an extra descriptor), but overall the naming is largely consistent and readable.

Tool Count4/5

With 15 tools, the count is reasonable for a server focused on GitLab review and code analysis. It covers multiple aspects like merge requests, code quality, and repository info without being overly bloated. However, it might be slightly heavy if some tools are redundant, but it generally fits the scope well.

Completeness4/5

The tool set covers core workflows for GitLab review, including creating and fetching merge requests, analyzing code, and getting repository details. Minor gaps exist, such as no tools for updating or deleting merge requests or handling comments beyond adding them, but agents can likely work around these with the available operations.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

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/lininn/gitlab-review-mcp'

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