Skip to main content
Glama

list_merge_requests

Retrieve merge requests from a GitLab project with filtering options for state, pagination, and project identification.

Instructions

列出專案的 Merge Requests

Args: project_id: 專案 ID 或路徑 state: 狀態篩選(opened, closed, merged, all) page: 頁碼 per_page: 每頁筆數

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
stateNo
pageNo
per_pageNo

Implementation Reference

  • The underlying GitLab API client method that performs the network request to fetch merge requests.
    def list_merge_requests(
        self,
        project_id: int | str,
        state: str = None,
        page: int = 1,
        per_page: int = 20,
    ) -> list[dict]:
        """GET /projects/:id/merge_requests"""
        pid = self._resolve_project_id(project_id)
        params = {"page": page, "per_page": per_page}
        if state:
            params["state"] = state
        return self._get_json(f"/projects/{pid}/merge_requests", params=params)
  • The MCP tool handler function which validates input, calls the GitLab client, and formats the response.
    @mcp.tool()
    def list_merge_requests(project_id: int | str, state: str = None,
                            page: int = 1, per_page: int = 20) -> str:
        """列出專案的 Merge Requests
    
        Args:
            project_id: 專案 ID 或路徑
            state: 狀態篩選(opened, closed, merged, all)
            page: 頁碼
            per_page: 每頁筆數
        """
        try:
            if state:
                v = GitLabValidator.validate_mr_state(state)
                if not v.is_valid:
                    return "\n".join(v.errors)
    
            client = get_client()
            mrs = client.list_merge_requests(project_id, state=state, page=page, per_page=per_page)
            if not mrs:
                return "找不到符合條件的 Merge Request"
    
            status_emoji = {"opened": "🟢", "closed": "🔴", "merged": "🟣"}
            lines = [f"找到 {len(mrs)} 個 Merge Request:\n"]
            for mr in mrs:
                emoji = status_emoji.get(mr.get("state", ""), "⚪")
                lines.append(
                    f"{emoji} !{mr['iid']} [{mr.get('state', '')}] {mr['title']}"
                    f"\n  {mr.get('source_branch', '')} → {mr.get('target_branch', '')}"
                    f"\n  作者: {mr.get('author', {}).get('name', 'N/A')} | {mr.get('web_url', '')}\n"
                )
            return "\n".join(lines)
        except GitLabAPIError as e:
            return f"列出 MR 失敗: {str(e)}"

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