Skip to content

Progress

GitLab MCP Server sends real-time progress notifications during long-running operations, allowing MCP clients to display progress indicators to the user.

When a tool performs multiple steps or processes large datasets, the server sends notifications/progress messages to the client:

sequenceDiagram
    participant U as User
    participant AI as AI Assistant
    participant S as MCP Server
    participant GL as GitLab API

    U->>AI: "List all project issues"
    AI->>S: gitlab_issue list
    S-->>AI: Progress: "Fetching page 1..." (25%)
    S->>GL: GET /projects/42/issues?page=1
    S-->>AI: Progress: "Fetching page 2..." (50%)
    S->>GL: GET /projects/42/issues?page=2
    S-->>AI: Progress: "Fetching page 3..." (75%)
    S->>GL: GET /projects/42/issues?page=3
    S-->>AI: Progress: "Complete" (100%)
    S-->>AI: Tool result with all issues

Progress reporting is used for operations that may take several seconds:

OperationProgress Detail
Paginated list retrievalPage-by-page fetch progress
Bulk operationsPer-item progress (e.g., bulk issue update)
Sampling analysisData collection → LLM analysis phases
CSV importPer-row import progress
Auto-updateDownload and apply steps

How progress is displayed depends on the MCP client:

  • VS Code / Copilot — Progress indicator in the status bar or output panel
  • Claude Desktop — Progress text shown during tool execution
  • Claude Code — Real-time terminal progress updates

Progress notifications follow the MCP protocol format:

{
"jsonrpc": "2.0",
"method": "notifications/progress",
"params": {
"progressToken": "tool-call-123",
"progress": 50,
"total": 100,
"message": "Fetching page 2 of 4..."
}
}
FieldDescription
progressTokenCorrelation ID linking progress to the original tool call
progressCurrent step number
totalTotal number of steps (when known)
messageHuman-readable description of the current step