Skip to main content
Glama

get_merge_request

Retrieve detailed information about a specific merge request from a GitLab project using project ID and merge request IID.

Instructions

取得 Merge Request 詳細資訊

Args: project_id: 專案 ID 或路徑 mr_iid: MR 的 IID(專案內編號)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
mr_iidYes

Implementation Reference

  • The handler for the "get_merge_request" MCP tool, which orchestrates the call to the GitLab client and formats the result.
    @mcp.tool()
    def get_merge_request(project_id: int | str, mr_iid: int) -> str:
        """取得 Merge Request 詳細資訊
    
        Args:
            project_id: 專案 ID 或路徑
            mr_iid: MR 的 IID(專案內編號)
        """
        try:
            client = get_client()
            mr = client.get_merge_request(project_id, mr_iid)
    
            status_emoji = {"opened": "🟢", "closed": "🔴", "merged": "🟣"}
            emoji = status_emoji.get(mr.get("state", ""), "⚪")
    
            assignee = mr.get("assignee")
            assignee_str = f"{assignee['name']} (@{assignee['username']})" if assignee else "未指派"
    
            reviewers = mr.get("reviewers", [])
            reviewer_str = ", ".join(f"{r['name']}" for r in reviewers) if reviewers else "無"
    
            pipeline = mr.get("pipeline")
            pipeline_str = f"#{pipeline['id']} ({pipeline['status']})" if pipeline else "無"
    
            result = f"""{emoji} Merge Request !{mr['iid']}
    標題: {mr['title']}
    狀態: {mr.get('state', 'N/A')}
    來源分支: {mr.get('source_branch', 'N/A')} → 目標分支: {mr.get('target_branch', 'N/A')}
    作者: {mr.get('author', {}).get('name', 'N/A')}
    指派: {assignee_str}
    審核者: {reviewer_str}
    Pipeline: {pipeline_str}
    建立時間: {mr.get('created_at', 'N/A')}
    更新時間: {mr.get('updated_at', 'N/A')}
    網址: {mr.get('web_url', '')}"""
    
            if mr.get('merged_at'):
                result += f"\n合併時間: {mr['merged_at']}"
                merged_by = mr.get('merged_by')
                if merged_by:
                    result += f"\n合併者: {merged_by.get('name', 'N/A')}"
    
            if mr.get('description'):
                result += f"\n\n--- 描述 ---\n{mr['description']}"
    
            return result
        except GitLabAPIError as e:
  • The low-level client method that performs the API request to fetch merge request details from GitLab.
    def get_merge_request(self, project_id: int | str, mr_iid: int) -> dict:
        """GET /projects/:id/merge_requests/:iid"""
        pid = self._resolve_project_id(project_id)
        return self._get_json(f"/projects/{pid}/merge_requests/{mr_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