Skip to main content
Glama

trigger-pipeline

Start Azure DevOps build pipelines using definition IDs, names, or branch specifications to automate software deployment processes.

Instructions

Trigger a build pipeline in Azure DevOps

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
definitionIdNoBuild definition ID to trigger
definitionNameNoBuild definition name (alternative to ID)
sourceBranchNoSource branch to build (default: default branch)
parametersNoPipeline parameters as key-value pairs

Implementation Reference

  • The core handler function that implements the 'trigger-pipeline' tool. It resolves the build definition ID if a name is provided, constructs the build request with optional source branch and parameters, and triggers the pipeline via a POST to the Azure DevOps builds API.
    private async triggerPipeline(args: any): Promise<any> { try { let definitionId = args.definitionId; // If definition name is provided instead of ID, look up the ID if (!definitionId && args.definitionName) { const definitions = await this.makeApiRequest('/build/definitions?api-version=7.1'); const definition = definitions.value.find((def: any) => def.name.toLowerCase() === args.definitionName.toLowerCase() ); if (!definition) { throw new Error(`Build definition '${args.definitionName}' not found`); } definitionId = definition.id; } if (!definitionId) { throw new Error('Either definitionId or definitionName must be provided'); } // Prepare the build request const buildRequest: any = { definition: { id: definitionId } }; // Add source branch if specified if (args.sourceBranch) { buildRequest.sourceBranch = args.sourceBranch.startsWith('refs/') ? args.sourceBranch : `refs/heads/${args.sourceBranch}`; } // Add parameters if specified if (args.parameters && typeof args.parameters === 'object') { buildRequest.parameters = JSON.stringify(args.parameters); } const result = await this.makeApiRequest( '/build/builds?api-version=7.1', 'POST', buildRequest ); return { content: [{ type: 'text', text: JSON.stringify({ success: true, build: { id: result.id, buildNumber: result.buildNumber, status: result.status, queueTime: result.queueTime, definition: { id: result.definition.id, name: result.definition.name }, sourceBranch: result.sourceBranch, url: result._links?.web?.href || `${this.currentConfig!.organizationUrl}/${this.currentConfig!.project}/_build/results?buildId=${result.id}`, requestedBy: { displayName: result.requestedBy?.displayName || 'API Request', uniqueName: result.requestedBy?.uniqueName || 'api' } } }, null, 2), }], }; } catch (error) { throw new Error(`Failed to trigger pipeline: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
  • src/index.ts:286-310 (registration)
    MCP tool registration including the tool name, description, and input schema definition returned by the listTools handler.
    { name: 'trigger-pipeline', description: 'Trigger a build pipeline in Azure DevOps', inputSchema: { type: 'object', properties: { definitionId: { type: 'number', description: 'Build definition ID to trigger', }, definitionName: { type: 'string', description: 'Build definition name (alternative to ID)', }, sourceBranch: { type: 'string', description: 'Source branch to build (default: default branch)', }, parameters: { type: 'object', description: 'Pipeline parameters as key-value pairs', }, }, }, },
  • Dispatch case in the central handleToolCall method that routes 'trigger-pipeline' calls to the specific triggerPipeline implementation.
    case 'trigger-pipeline': return await this.triggerPipeline(args || {});

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