list_merge_requests
Retrieve and filter merge requests from a GitLab project using criteria like state, branch, labels, assignee, or date ranges to manage code review workflows.
Instructions
List all merge requests in a GitLab project
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID or URL-encoded path | |
| state | No | Filter merge requests by state | |
| target_branch | No | Filter by target branch | |
| source_branch | No | Filter by source branch | |
| labels | No | Comma-separated list of label names | |
| milestone | No | Milestone title | |
| assignee_id | No | User ID of assignee | |
| author_id | No | User ID of author | |
| search | No | Search against title and description | |
| created_after | No | Return MRs created after date (ISO 8601) | |
| created_before | No | Return MRs created before date (ISO 8601) | |
| updated_after | No | Return MRs updated after date (ISO 8601) | |
| updated_before | No | Return MRs updated before date (ISO 8601) | |
| sort | No | Sort merge requests | |
| order_by | No | Sort order | |
| page | No | Page number for pagination (default: 1) | |
| per_page | No | Number of results per page (default: 20) |
Implementation Reference
- src/api/merge-requests.ts:6-36 (handler)The implementation of the 'listMergeRequests' handler function.
export async function listMergeRequests( projectId: string, options: { state?: "opened" | "closed" | "locked" | "merged" | "all"; target_branch?: string; source_branch?: string; labels?: string; milestone?: string; assignee_id?: number; author_id?: number; search?: string; created_after?: string; created_before?: string; updated_after?: string; updated_before?: string; sort?: "created_at" | "updated_at" | "title"; order_by?: "asc" | "desc"; page?: number; per_page?: number; } = {} ): Promise<GitLabMergeRequest[]> { if (!projectId?.trim()) { throw new Error("Project ID is required"); } const endpoint = `/projects/${encodeProjectId(projectId)}/merge_requests`; const params = buildSearchParams(options); const mergeRequests = await gitlabGet<GitLabMergeRequest[]>(endpoint, params); return z.array(GitLabMergeRequestSchema).parse(mergeRequests); } - src/schemas.ts:455-458 (schema)The Zod schema definition for the 'list_merge_requests' tool input.
export const ListMergeRequestsSchema = z.object({ project_id: z.string().describe("Project ID or URL-encoded path"), state: z.enum(["opened", "closed", "locked", "merged", "all"]).optional().describe("Filter merge requests by state"), target_branch: z.string().optional().describe("Filter by target branch"),