Skip to main content
Glama

run_pipeline

Execute development pipelines with configurable options to run specific tasks, skip others, apply fixes, and control output format for streamlined workflow automation.

Instructions

Execute devpipe with specified configuration and flags. Runs the development pipeline and returns results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
configNoPath to config.toml file
onlyNoRun only specific tasks (can specify multiple)
skipNoSkip specific tasks (can specify multiple)
sinceNoGit reference to run checks on changes since (e.g., HEAD, main, origin/main)
fixTypeNoHow to handle auto-fixable issues: auto (fix automatically), helper (show fix command), none (no fixes)
uiNoUI mode: basic (simple output) or full (animated progress)
dashboardNoShow dashboard view in terminal
failFastNoStop execution on first failure
fastNoSkip tasks that take longer than fastThreshold
dryRunNoShow what would be executed without running
verboseNoEnable verbose output
noColorNoDisable colored output

Implementation Reference

  • The main handler function for the 'run_pipeline' tool. It checks if devpipe is installed, builds the CLI command from input args, executes it, and returns structured results including command, exit code, success status, stdout, and stderr.
    case 'run_pipeline': { const devpipeCheck = await checkDevpipeInstalled(); if (!devpipeCheck.installed) { throw new Error(devpipeCheck.error); } const runArgs = args as RunPipelineArgs; const command = buildDevpipeCommand(runArgs); const result = await executeDevpipe(command); return { content: [ { type: 'text', text: JSON.stringify({ command, exitCode: result.exitCode, success: result.exitCode === 0, stdout: result.stdout, stderr: result.stderr, }, null, 2), }, ], }; }
  • TypeScript interface defining the expected input arguments for the run_pipeline tool, matching the inputSchema in registration.
    export interface RunPipelineArgs { config?: string; only?: string[]; skip?: string[]; since?: string; fixType?: 'auto' | 'helper' | 'none'; ui?: 'basic' | 'full'; dashboard?: boolean; failFast?: boolean; fast?: boolean; dryRun?: boolean; verbose?: boolean; noColor?: boolean; }
  • src/index.ts:82-140 (registration)
    Registration of the 'run_pipeline' tool in the ListTools response, providing name, description, and full inputSchema for MCP clients.
    name: 'run_pipeline', description: 'Execute devpipe with specified configuration and flags. Runs the development pipeline and returns results.', inputSchema: { type: 'object', properties: { config: { type: 'string', description: 'Path to config.toml file', }, only: { type: 'array', items: { type: 'string' }, description: 'Run only specific tasks (can specify multiple)', }, skip: { type: 'array', items: { type: 'string' }, description: 'Skip specific tasks (can specify multiple)', }, since: { type: 'string', description: 'Git reference to run checks on changes since (e.g., HEAD, main, origin/main)', }, fixType: { type: 'string', enum: ['auto', 'helper', 'none'], description: 'How to handle auto-fixable issues: auto (fix automatically), helper (show fix command), none (no fixes)', }, ui: { type: 'string', enum: ['basic', 'full'], description: 'UI mode: basic (simple output) or full (animated progress)', }, dashboard: { type: 'boolean', description: 'Show dashboard view in terminal', }, failFast: { type: 'boolean', description: 'Stop execution on first failure', }, fast: { type: 'boolean', description: 'Skip tasks that take longer than fastThreshold', }, dryRun: { type: 'boolean', description: 'Show what would be executed without running', }, verbose: { type: 'boolean', description: 'Enable verbose output', }, noColor: { type: 'boolean', description: 'Disable colored output', }, }, },
  • Helper function that constructs the complete devpipe CLI command string from the tool's input arguments by appending appropriate flags.
    export function buildDevpipeCommand(args: { config?: string; only?: string[]; skip?: string[]; since?: string; fixType?: string; ui?: string; dashboard?: boolean; failFast?: boolean; fast?: boolean; dryRun?: boolean; verbose?: boolean; noColor?: boolean; }): string { const parts = ['devpipe']; if (args.config) parts.push(`--config "${args.config}"`); if (args.only && args.only.length > 0) { args.only.forEach(task => parts.push(`--only ${task}`)); } if (args.skip && args.skip.length > 0) { args.skip.forEach(task => parts.push(`--skip ${task}`)); } if (args.since) parts.push(`--since ${args.since}`); if (args.fixType) parts.push(`--fix-type ${args.fixType}`); if (args.ui) parts.push(`--ui ${args.ui}`); if (args.dashboard) parts.push('--dashboard'); if (args.failFast) parts.push('--fail-fast'); if (args.fast) parts.push('--fast'); if (args.dryRun) parts.push('--dry-run'); if (args.verbose) parts.push('--verbose'); if (args.noColor) parts.push('--no-color'); return parts.join(' '); }
  • Helper function that executes the constructed devpipe command using Node.js child_process.exec and captures stdout, stderr, and exit code.
    export async function executeDevpipe(command: string, cwd?: string): Promise<{ stdout: string; stderr: string; exitCode: number }> { try { const { stdout, stderr } = await execAsync(command, { cwd: cwd || process.cwd(), maxBuffer: 10 * 1024 * 1024 // 10MB buffer }); return { stdout, stderr, exitCode: 0 }; } catch (error: any) { return { stdout: error.stdout || '', stderr: error.stderr || error.message || '', exitCode: error.code || 1 }; } }

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/drewkhoury/devpipe-mcp'

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