Skip to main content
Glama

get-pipeline-status

Retrieve the status of a specific build or pipeline in Azure DevOps using build or definition IDs, with optional detailed timeline information. Integrated with DevOps Enhanced MCP for automatic authentication handling.

Instructions

Get status of a specific build or pipeline

Input Schema

NameRequiredDescriptionDefault
buildIdNoSpecific build ID to check status
definitionIdNoGet latest builds for this definition ID
includeTimelineNoInclude detailed timeline information

Input Schema (JSON Schema)

{ "properties": { "buildId": { "description": "Specific build ID to check status", "type": "number" }, "definitionId": { "description": "Get latest builds for this definition ID", "type": "number" }, "includeTimeline": { "description": "Include detailed timeline information", "type": "boolean" } }, "type": "object" }

Implementation Reference

  • Executes the get-pipeline-status tool: fetches specific build details by buildId (including optional timeline) or recent builds by definitionId using Azure DevOps REST API.
    private async getPipelineStatus(args: any): Promise<any> { try { if (args.buildId) { // Get specific build details const build = await this.makeApiRequest(`/build/builds/${args.buildId}?api-version=7.1`); let timeline = null; if (args.includeTimeline) { try { timeline = await this.makeApiRequest(`/build/builds/${args.buildId}/timeline?api-version=7.1`); } catch (timelineError) { // Sanitize error message to prevent log injection const sanitizedError = timelineError instanceof Error ? timelineError.message.replace(/[\r\n\t]/g, '_') : 'Unknown timeline error'; console.error('Failed to get timeline:', sanitizedError); // Continue without timeline if it fails } } const buildInfo = { id: build.id, buildNumber: build.buildNumber, status: build.status, result: build.result, definition: { id: build.definition.id, name: build.definition.name }, sourceBranch: build.sourceBranch, sourceVersion: build.sourceVersion, queueTime: build.queueTime, startTime: build.startTime, finishTime: build.finishTime, url: build._links?.web?.href, requestedBy: { displayName: build.requestedBy?.displayName, uniqueName: build.requestedBy?.uniqueName }, ...(timeline && { timeline: timeline.records?.map((record: any) => ({ name: record.name, type: record.type, state: record.state, result: record.result, startTime: record.startTime, finishTime: record.finishTime, percentComplete: record.percentComplete })) }) }; return { content: [{ type: 'text', text: JSON.stringify(buildInfo, null, 2), }], }; } else if (args.definitionId) { // Get latest builds for a specific definition const builds = await this.makeApiRequest( `/build/builds?definitions=${args.definitionId}&$top=5&api-version=7.1` ); const buildsInfo = builds.value.map((build: any) => ({ id: build.id, buildNumber: build.buildNumber, status: build.status, result: build.result, sourceBranch: build.sourceBranch, queueTime: build.queueTime, startTime: build.startTime, finishTime: build.finishTime, url: build._links?.web?.href })); return { content: [{ type: 'text', text: JSON.stringify({ definitionId: args.definitionId, recentBuilds: buildsInfo }, null, 2), }], }; } else { throw new Error('Either buildId or definitionId must be provided'); } } catch (error) { throw new Error(`Failed to get pipeline status: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
  • src/index.ts:311-331 (registration)
    Registers the 'get-pipeline-status' tool with the MCP server in the listTools response, including input schema definition.
    { name: 'get-pipeline-status', description: 'Get status of a specific build or pipeline', inputSchema: { type: 'object', properties: { buildId: { type: 'number', description: 'Specific build ID to check status', }, definitionId: { type: 'number', description: 'Get latest builds for this definition ID', }, includeTimeline: { type: 'boolean', description: 'Include detailed timeline information', }, }, }, },
  • Defines the input schema for the get-pipeline-status tool, specifying parameters like buildId, definitionId, and includeTimeline.
    inputSchema: { type: 'object', properties: { buildId: { type: 'number', description: 'Specific build ID to check status', }, definitionId: { type: 'number', description: 'Get latest builds for this definition ID', }, includeTimeline: { type: 'boolean', description: 'Include detailed timeline information', }, }, }, },
  • Switch case dispatcher that routes 'get-pipeline-status' tool calls to the getPipelineStatus handler method.
    case 'get-pipeline-status': return await this.getPipelineStatus(args || {}); default: throw new Error(`Unknown tool: ${name}`); }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wangkanai/devops-enhanced-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server