GitLab ACTION
List Merge Request Discussions
List the comment threads on a merge request — both general comments and inline threads anchored to lines of the diff. Use this to read existing review feedback before adding your own, to find what a reviewer objected to, or to get the
id of a thread so you can reply to it with Create Merge Request Comment or close it with Resolve Merge Request Thread. Each thread's notes carry resolvable, resolved and, for inline threads, the position (file path and line) they are attached to. GitLab records label changes, assignments and other bookkeeping as system notes; those are filtered out by default because they are rarely what a reader wants — set Include System Notes to true to see them. Set Only Unresolved to true to get just the threads still needing attention. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's GitLab account once, then configure and run List Merge Request Discussions from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "gitlab-list-merge-request-discussions",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
gitlab: { authProvisionId: "apn_xxxxxxx" },
projectId: "Project",
mergeRequestIid: 10,
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "gitlab-list-merge-request-discussions",
"configured_props": {
"gitlab": { "authProvisionId": "apn_xxxxxxx" },
"projectId": "Project",
"mergeRequestIid": 10
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "gitlab",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "gitlab-list-merge-request-discussions",
arguments: {
projectId: "Project",
mergeRequestIid: 10,
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
projectId Project | string | The project, given either as its path — group/project or group/subgroup/project, e.g. backend/payments — or as its numeric project ID. The path is what appears in the project URL and is usually what a user will name, so prefer it. A pasted GitLab URL also works. Use List Projects to find the path if you only know part of the name. Required |
mergeRequestIid Merge Request IID | integer | The merge request's internal ID — the !N shown in the GitLab UI and the number at the end of the merge request URL. This is not the id field, which is a much larger instance-wide number; passing id here returns a 404. Use List Merge Requests or Search Merge Requests to resolve the IID from a title, branch or author. Required |
onlyUnresolved Only Unresolved | boolean | Return only threads that are resolvable and not yet resolved — the open review feedback. Defaults to false. Threads that cannot be resolved at all (plain comments) are excluded when this is true. Optional |
includeSystemNotes Include System Notes | boolean | Whether to include GitLab's own bookkeeping notes — label changes, assignee changes, "marked as draft", and similar. Defaults to false, which keeps only what people actually wrote. Optional |
maxResults Max Results | integer | Maximum number of threads to return in total, paginating as needed. Defaults to 100. Note this counts threads before the system-note and unresolved filters are applied. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- gitlab-list-merge-request-discussions
- Version
- 0.0.1
- App
- GitLab
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗