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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| state | No | ||
| page | No | ||
| per_page | No |
Implementation Reference
- src/gitlab_mcp/gitlab_client.py:177-189 (handler)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) - src/gitlab_mcp/server.py:155-190 (handler)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)}"