Skip to main content
Glama

update_merge_request

Modify an existing GitLab merge request by updating its title, description, state, target branch, labels, assignees, milestone, or source branch removal setting.

Instructions

Update an existing merge request in a GitLab project

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
merge_request_iidYesMerge request internal ID
titleNoNew merge request title
descriptionNoNew merge request description
state_eventNoChange merge request state
target_branchNoNew target branch
labelsNoArray of label names
assignee_idsNoArray of user IDs to assign
milestone_idNoMilestone ID to assign
remove_source_branchNoRemove source branch when merged

Implementation Reference

  • The implementation of the update_merge_request API function, which calls the GitLab PUT endpoint to update a merge request.
    export async function updateMergeRequest(
      projectId: string,
      mergeRequestIid: number,
      options: {
        title?: string;
        description?: string;
        state_event?: "close" | "reopen";
        target_branch?: string;
        labels?: string[];
        assignee_ids?: number[];
        milestone_id?: number;
        remove_source_branch?: boolean;
      }
    ): Promise<GitLabMergeRequest> {
      if (!projectId?.trim()) {
        throw new Error("Project ID is required");
      }
      if (!mergeRequestIid || mergeRequestIid < 1) {
        throw new Error("Valid merge request IID is required");
      }
    
      const endpoint = `/projects/${encodeProjectId(projectId)}/merge_requests/${mergeRequestIid}`;
    
      const mergeRequest = await gitlabPut<GitLabMergeRequest>(endpoint, {
        ...options,
        labels: options.labels?.join(",")
      });
    
      return GitLabMergeRequestSchema.parse(mergeRequest);
    }
  • Input validation schema for the update_merge_request tool.
    export const UpdateMergeRequestSchema = z.object({
      project_id: z.string().describe("Project ID or URL-encoded path"),
      merge_request_iid: z.number().describe("Merge request internal ID"),
      title: z.string().optional().describe("New merge request title"),
      description: z.string().optional().describe("New merge request description"),
      state_event: z.enum(["close", "reopen"]).optional().describe("Change merge request state"),
      target_branch: z.string().optional().describe("New target branch"),
      labels: z.array(z.string()).optional().describe("Array of label names"),
      assignee_ids: z.array(z.number()).optional().describe("Array of user IDs to assign"),
  • src/server.ts:425-430 (registration)
    Handler registration and execution logic for the update_merge_request tool within the main server loop.
    case "update_merge_request": {
      const args = UpdateMergeRequestSchema.parse(request.params.arguments);
      const { project_id, merge_request_iid, ...options } = args;
      const mergeRequest = await api.updateMergeRequest(project_id, merge_request_iid, options);
      return { content: [{ type: "text", text: JSON.stringify(mergeRequest, null, 2) }] };
    }

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/TheRealChrisThomas/gitlab-mcp-server'

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