← qodev-gitlab-mcp

qodev-gitlab-mcp 0.2.2

pypi · qodev-gitlab-mcp · current release

18
Tools
2
Resources
22
Templates
0
Prompts

Observation

Observed 2026-08-24T06:59:10.014Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "experimental": {},
  "logging": {},
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "tools": {
    "listChanged": true
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {}
  }
}

Tools 18

ToolCategoryAnnotationsRisk
close_issueClose a specific issue by project and issue IID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "issue_iid": {
      "type": "integer",
      "description": "Issue IID (the #number)"
    }
  },
  "required": [
    "project_id",
    "issue_iid"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
close_merge_requestClose a specific merge request by project and MR IID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional comment to post when closing (supports Markdown formatting)"
    }
  },
  "required": [
    "project_id",
    "mr_iid"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
comment_on_issueLeave a comment on a specific issue by project and issue IID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "issue_iid": {
      "type": "integer",
      "description": "Issue IID (the #number)"
    },
    "comment": {
      "type": "string",
      "description": "Comment text to post (supports Markdown formatting)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "issue_iid",
    "comment"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
comment_on_merge_requestLeave a comment on a specific merge request by project and MR IID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "comment": {
      "type": "string",
      "description": "Comment text to post (supports Markdown formatting)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "mr_iid",
    "comment"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
create_inline_commentCreate an inline comment on a specific line in a merge request diff
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "comment": {
      "type": "string",
      "description": "Comment text to post (supports Markdown formatting)"
    },
    "position": {
      "description": "Position specifying where to place the comment. Must include:\n- file_path: Path to the file in the diff\n- new_line: Line number (1-based) in the new version (for added/unchanged lines)\n- old_line: Line number (1-based) in the old version (for deleted/unchanged lines)\n- new_line_content: Alternative to new_line - content to match (whitespace-insensitive, must be unique)\n- old_line_content: Alternative to old_line - content to match (whitespace-insensitive, must be unique)\nAt least one of new_line or old_line must be provided.\nOptionally include base_sha, head_sha, start_sha (auto-fetched from MR if omitted)",
      "properties": {
        "file_path": {
          "type": "string"
        },
        "new_line": {
          "type": "integer"
        },
        "old_line": {
          "type": "integer"
        },
        "new_line_content": {
          "type": "string"
        },
        "old_line_content": {
          "type": "string"
        },
        "base_sha": {
          "type": "string"
        },
        "head_sha": {
          "type": "string"
        },
        "start_sha": {
          "type": "string"
        }
      },
      "required": [
        "file_path"
      ],
      "type": "object"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "mr_iid",
    "comment",
    "position"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
create_issueCreate a new issue in a project
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "title": {
      "type": "string",
      "description": "Issue title (required)"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Issue description (optional, supports Markdown)"
    },
    "labels": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Comma-separated label names (optional, e.g., \"bug,urgent\")"
    },
    "assignee_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of user IDs to assign (optional)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "title"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
create_merge_requestCreate a new merge request in a project
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "title": {
      "type": "string",
      "description": "MR title (required)"
    },
    "source_branch": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source branch name (defaults to current branch if None)"
    },
    "target_branch": {
      "default": "main",
      "type": "string",
      "description": "Target branch name (default: \"main\")"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "MR description/body (optional, supports Markdown)"
    },
    "assignee_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of user IDs to assign (optional)"
    },
    "reviewer_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of user IDs to review (optional)"
    },
    "labels": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Comma-separated label names (optional, e.g., \"bug,urgent\")"
    },
    "remove_source_branch": {
      "default": true,
      "type": "boolean",
      "description": "Remove source branch after merge (default: True)"
    },
    "squash": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Squash commits on merge (None = use project settings, True = squash, False = don't squash)"
    },
    "allow_collaboration": {
      "default": false,
      "type": "boolean",
      "description": "Allow commits from members with merge access (default: False)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "title"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
create_releaseCreate a new release in a project
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "tag_name": {
      "type": "string",
      "description": "Tag name for the release (required)"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Release title (optional, defaults to tag_name)"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Release description/notes (optional, supports Markdown)"
    },
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Commit SHA, branch, or existing tag (required only if tag_name doesn't exist yet; auto-detects from current branch if not provided)"
    },
    "milestones": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of milestone titles to associate (optional)"
    },
    "released_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ISO 8601 datetime for release (optional, defaults to current time)"
    },
    "assets_links": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of asset link dicts with 'name', 'url', and optional 'direct_asset_path' (optional)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "tag_name"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
download_artifactDownload an artifact file to local filesystem for analysis with shell tools. Downloads the complete artifact file (no truncation) to a local path. Useful for large files that need analysis with grep, wc, awk, etc.
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "job_id": {
      "type": "integer",
      "description": "Job ID"
    },
    "artifact_path": {
      "type": "string",
      "description": "Path to artifact within job (e.g., \"logs.txt\", \"build/output.log\")"
    },
    "destination": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Local path to save file (optional, defaults to temp file)"
    }
  },
  "required": [
    "project_id",
    "job_id",
    "artifact_path"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
merge_merge_requestMerge a specific merge request by project and MR IID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "merge_commit_message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Custom merge commit message (optional)"
    },
    "squash_commit_message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Custom squash commit message (optional, used if squashing)"
    },
    "should_remove_source_branch": {
      "default": true,
      "type": "boolean",
      "description": "Remove source branch after merge (default: True)"
    },
    "merge_when_pipeline_succeeds": {
      "default": false,
      "type": "boolean",
      "description": "Wait for pipeline to succeed before merging (default: False)"
    },
    "squash": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Squash commits on merge (None = use project/MR settings, True = squash, False = don't squash)"
    }
  },
  "required": [
    "project_id",
    "mr_iid"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
reply_to_discussionReply to an existing discussion thread on a merge request
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "discussion_id": {
      "type": "string",
      "description": "Discussion thread ID to reply to"
    },
    "comment": {
      "type": "string",
      "description": "Reply text to post (supports Markdown formatting)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "mr_iid",
    "discussion_id",
    "comment"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
resolve_discussion_threadResolve or unresolve a discussion thread on a merge request
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "discussion_id": {
      "type": "string",
      "description": "Discussion thread ID to resolve/unresolve"
    },
    "resolved": {
      "default": true,
      "type": "boolean",
      "description": "True to resolve the thread, False to unresolve it (default: True)"
    }
  },
  "required": [
    "project_id",
    "mr_iid",
    "discussion_id"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
retry_jobRetry a specific job by project and job ID
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "job_id": {
      "type": "integer",
      "description": "Job ID to retry"
    }
  },
  "required": [
    "project_id",
    "job_id"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
set_project_ci_variableSet a CI/CD variable in a specific project (upsert: creates if new, updates if exists)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "key": {
      "type": "string",
      "description": "Variable key/name (e.g., \"API_KEY\", \"DATABASE_URL\")"
    },
    "value": {
      "type": "string",
      "description": "Variable value"
    },
    "variable_type": {
      "default": "env_var",
      "type": "string",
      "description": "Type of variable - \"env_var\" (default) or \"file\""
    },
    "protected": {
      "default": false,
      "type": "boolean",
      "description": "Only available in protected branches (default: False)"
    },
    "masked": {
      "default": false,
      "type": "boolean",
      "description": "Hidden in job logs (default: False)"
    },
    "raw": {
      "default": false,
      "type": "boolean",
      "description": "Disable variable reference expansion (default: False)"
    },
    "environment_scope": {
      "default": "*",
      "type": "string",
      "description": "Environment scope - \"*\" for all (default), or specific like \"production\", \"staging\""
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional description of the variable"
    }
  },
  "required": [
    "project_id",
    "key",
    "value"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
update_issueUpdate an existing issue's title, description, or other properties
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "issue_iid": {
      "type": "integer",
      "description": "Issue IID (the #number)"
    },
    "title": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New issue title (optional)"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New issue description (optional)"
    },
    "labels": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New comma-separated label names (optional)"
    },
    "assignee_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New list of assignee user IDs (optional)"
    },
    "state_event": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Change state: \"close\" or \"reopen\" (optional)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "issue_iid"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
update_merge_requestUpdate a merge request's title, description, or other properties
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "description": "Merge request IID or \"current\" (the !number, or \"current\" for current branch MR)"
    },
    "title": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New MR title (optional)"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New MR description (optional)"
    },
    "target_branch": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New target branch (optional)"
    },
    "state_event": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Change state: \"open\", \"close\", \"reopen\" (optional)"
    },
    "assignee_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of assignee user IDs (optional)"
    },
    "reviewer_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of reviewer user IDs (optional)"
    },
    "labels": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Comma-separated label names (optional)"
    },
    "images": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "description": "Image input from local file path.",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              },
              {
                "description": "Image input from base64-encoded data.",
                "properties": {
                  "base64": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "alt": {
                    "type": "string"
                  }
                },
                "required": [
                  "base64",
                  "filename"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of images to attach. Each image is either {\"path\": \"/local/file.png\"}\n    or {\"base64\": \"...\", \"filename\": \"name.png\", \"alt\": \"optional alt text\"}"
    }
  },
  "required": [
    "project_id",
    "mr_iid"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
upload_fileUpload a file to GitLab for embedding in issues, MRs, or comments. Uploads a file to GitLab's project uploads and returns a markdown-ready image/file tag that can be embedded in descriptions or comments.
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\""
    },
    "source": {
      "anyOf": [
        {
          "description": "File input from local filesystem path.",
          "properties": {
            "path": {
              "type": "string"
            }
          },
          "required": [
            "path"
          ],
          "type": "object"
        },
        {
          "description": "File input from base64-encoded data.",
          "properties": {
            "base64": {
              "type": "string"
            },
            "filename": {
              "type": "string"
            }
          },
          "required": [
            "base64",
            "filename"
          ],
          "type": "object"
        }
      ],
      "description": "File source - either {\"path\": \"/local/file.png\"} for local files\n    or {\"base64\": \"...\", \"filename\": \"name.png\"} for base64 data"
    }
  },
  "required": [
    "project_id",
    "source"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —
wait_for_pipelineWait for a GitLab pipeline to complete (success or failure)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID, path, or \"current\" (e.g., \"mygroup/myproject\", \"123\", or \"current\")"
    },
    "pipeline_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Pipeline ID to wait for (required if mr_iid not provided)"
    },
    "mr_iid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "MR IID to get latest pipeline from (alternative to pipeline_id, supports \"current\")"
    },
    "timeout_seconds": {
      "default": 3600,
      "type": "integer",
      "description": "Maximum time to wait in seconds (default: 3600/1 hour)"
    },
    "check_interval": {
      "default": 10,
      "type": "integer",
      "description": "How often to check status in seconds (default: 10)"
    },
    "include_failed_logs": {
      "default": true,
      "type": "boolean",
      "description": "Include last 10 lines of failed job logs (default: True)"
    }
  },
  "required": [
    "project_id"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
— · —

Resources 2

Resource templates 22

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.