Skip to main content
Glama

create_merge_request

Create a new merge request in GitLab to propose code changes from a source branch to a target branch, with options for title, description, assignee, and reviewers.

Instructions

建立新的 Merge Request

Args: project_id: 專案 ID 或路徑 source_branch: 來源分支 target_branch: 目標分支 title: MR 標題 description: MR 描述 assignee_id: 指派人 ID reviewer_ids: 審核者 ID 列表(逗號分隔,如 "1,2,3")

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
source_branchYes
target_branchYes
titleYes
descriptionNo
assignee_idNo
reviewer_idsNo

Implementation Reference

  • The MCP tool registration and handler logic for 'create_merge_request', which parses input and calls the client.
    @mcp.tool()
    def create_merge_request(project_id: int | str, source_branch: str,
                             target_branch: str, title: str,
                             description: str = None, assignee_id: int = None,
                             reviewer_ids: str = None) -> str:
        """建立新的 Merge Request
    
        Args:
            project_id: 專案 ID 或路徑
            source_branch: 來源分支
            target_branch: 目標分支
            title: MR 標題
            description: MR 描述
            assignee_id: 指派人 ID
            reviewer_ids: 審核者 ID 列表(逗號分隔,如 "1,2,3")
        """
        try:
            v = GitLabValidator.validate_merge_request_data({
                "source_branch": source_branch,
                "target_branch": target_branch,
                "title": title,
            })
            if not v.is_valid:
                return "驗證失敗:\n" + "\n".join(v.errors)
    
            # 解析逗號分隔的 reviewer_ids
            parsed_reviewer_ids = None
            if reviewer_ids:
                try:
                    parsed_reviewer_ids = [int(x.strip()) for x in reviewer_ids.split(",")]
                except ValueError:
                    return "reviewer_ids 格式錯誤,請使用逗號分隔的數字(如 1,2,3)"
    
            client = get_client()
            mr = client.create_merge_request(
                project_id, source_branch, target_branch, title,
                description=description, assignee_id=assignee_id,
                reviewer_ids=parsed_reviewer_ids
            )
            return f"✓ MR 已建立: !{mr['iid']} — {mr['title']}\n網址: {mr.get('web_url', '')}"
        except GitLabAPIError as e:
            return f"建立 MR 失敗: {str(e)}"
  • The actual implementation of the 'create_merge_request' method within the GitLab client, which performs the API request.
    def create_merge_request(
        self,
        project_id: int | str,
        source_branch: str,
        target_branch: str,
        title: str,
        description: str = None,
        assignee_id: int = None,
        reviewer_ids: list[int] = None,
    ) -> dict:
        """POST /projects/:id/merge_requests"""
        pid = self._resolve_project_id(project_id)
        data = {
            "source_branch": source_branch,
            "target_branch": target_branch,
            "title": title,
        }
        if description is not None:
            data["description"] = description
        if assignee_id is not None:
            data["assignee_id"] = assignee_id
        if reviewer_ids is not None:
            data["reviewer_ids"] = reviewer_ids
        return self._post_json(f"/projects/{pid}/merge_requests", data=data)
    
    def update_merge_request(
        self, project_id: int | str, mr_iid: int, **kwargs
    ) -> dict:
        """PUT /projects/:id/merge_requests/:iid

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

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