list_merge_request_notes
Retrieve comments and discussions from a specific merge request in GitLab to review feedback, track changes, and monitor collaboration on code changes.
Instructions
列出 Merge Request 的留言
Args: project_id: 專案 ID 或路徑 mr_iid: MR 的 IID page: 頁碼 per_page: 每頁筆數
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| mr_iid | Yes | ||
| page | No | ||
| per_page | No |
Implementation Reference
- src/gitlab_mcp/server.py:448-477 (handler)The handler function in `server.py` that registers the `list_merge_request_notes` tool and calls the client implementation.
def list_merge_request_notes(project_id: int | str, mr_iid: int, page: int = 1, per_page: int = 20) -> str: """列出 Merge Request 的留言 Args: project_id: 專案 ID 或路徑 mr_iid: MR 的 IID page: 頁碼 per_page: 每頁筆數 """ try: client = get_client() notes = client.list_merge_request_notes(project_id, mr_iid, page=page, per_page=per_page) if not notes: return "此 MR 沒有留言" lines = [f"MR !{mr_iid} 的留言(共 {len(notes)} 則):\n"] for n in notes: system_tag = " [系統]" if n.get("system") else "" lines.append( f"📝 #{n['id']}{system_tag}" f"\n 作者: {n.get('author', {}).get('name', 'N/A')}" f"\n 時間: {n.get('created_at', 'N/A')}" f"\n 內容: {n.get('body', '')}\n" ) return "\n".join(lines) except GitLabAPIError as e: return f"列出 MR 留言失敗: {str(e)}" - The underlying GitLab client method that performs the actual API request.
def list_merge_request_notes( self, project_id: int | str, mr_iid: int, sort: str = "asc", page: int = 1, per_page: int = 20, ) -> list[dict]: """GET /projects/:id/merge_requests/:iid/notes""" pid = self._resolve_project_id(project_id) params = {"sort": sort, "page": page, "per_page": per_page} return self._get_json( f"/projects/{pid}/merge_requests/{mr_iid}/notes", params=params )