Skip to main content
Glama
cuongdev

AWS CodePipeline MCP Server

by cuongdev

get_pipeline_state

Retrieve the current status and execution details of an AWS CodePipeline to monitor deployment progress and identify issues.

Instructions

Get the state of a specific pipeline

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline

Implementation Reference

  • The handler function that fetches the AWS CodePipeline state for the given pipelineName, transforms the response data, and returns it as MCP content.
    export async function getPipelineState(codePipelineManager: CodePipelineManager, input: { pipelineName: string }) {
      const { pipelineName } = input;
      const codepipeline = codePipelineManager.getCodePipeline();
      
      const response = await codepipeline.getPipelineState({ name: pipelineName }).promise();
      
      // Convert AWS.CodePipeline.StageState[] to our StageState[]
      const stageStates = response.stageStates?.map((stage: AWS.CodePipeline.StageState) => {
        // Convert TransitionState
        const inboundTransitionState = stage.inboundTransitionState ? {
          enabled: stage.inboundTransitionState.enabled === undefined ? false : stage.inboundTransitionState.enabled,
          lastChangedBy: stage.inboundTransitionState.lastChangedBy,
          lastChangedAt: stage.inboundTransitionState.lastChangedAt,
          disabledReason: stage.inboundTransitionState.disabledReason
        } : undefined;
        
        // Convert StageExecution
        const latestExecution = stage.latestExecution ? {
          pipelineExecutionId: stage.latestExecution.pipelineExecutionId || '',
          status: stage.latestExecution.status || ''
        } : undefined;
        
        // Convert ActionStates
        const actionStates = (stage.actionStates || []).map((action: AWS.CodePipeline.ActionState) => {
          // Convert ActionExecution
          const latestExecution = action.latestExecution ? {
            status: action.latestExecution.status || '',
            summary: action.latestExecution.summary,
            lastStatusChange: action.latestExecution.lastStatusChange || new Date().toISOString(),
            token: action.latestExecution.token,
            externalExecutionId: action.latestExecution.externalExecutionId,
            externalExecutionUrl: action.latestExecution.externalExecutionUrl,
            errorDetails: action.latestExecution.errorDetails ? {
              code: action.latestExecution.errorDetails.code || '',
              message: action.latestExecution.errorDetails.message || ''
            } : undefined
          } : undefined;
          
          // Convert ActionRevision
          const currentRevision = action.currentRevision ? {
            revisionId: action.currentRevision.revisionId || '',
            revisionChangeId: action.currentRevision.revisionChangeId || '',
            created: action.currentRevision.created || new Date().toISOString()
          } : undefined;
          
          return {
            actionName: action.actionName || '',
            currentRevision,
            latestExecution,
            entityUrl: action.entityUrl
          };
        });
        
        return {
          stageName: stage.stageName || '',
          inboundTransitionState,
          actionStates,
          latestExecution
        };
      }) || [];
      
      const pipelineState = {
        pipelineName: response.pipelineName || '',
        pipelineVersion: response.pipelineVersion || 0,
        stageStates: stageStates,
        created: response.created?.toISOString() || '',
        updated: response.updated?.toISOString() || ''
      };
    
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify({ pipelineState }, null, 2),
          },
        ],
      };
    }
  • Schema definition for the get_pipeline_state tool, including name, description, and input schema requiring pipelineName.
    export const getPipelineStateSchema = {
      name: "get_pipeline_state",
      description: "Get the state of a specific pipeline",
      inputSchema: {
        type: "object",
        properties: {
          pipelineName: { 
            type: "string",
            description: "Name of the pipeline"
          }
        },
        required: ["pipelineName"],
      },
    } as const;
  • src/index.ts:110-128 (registration)
    Registration of the tool schema in the MCP server's listTools request handler.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools: [
          listPipelinesSchema,
          getPipelineStateSchema,
          listPipelineExecutionsSchema,
          approveActionSchema,
          retryStageSchema,
          triggerPipelineSchema,
          getPipelineExecutionLogsSchema,
          stopPipelineExecutionSchema,
          // Add new tool schemas
          getPipelineDetailsSchema,
          tagPipelineResourceSchema,
          createPipelineWebhookSchema,
          getPipelineMetricsSchema,
        ],
      };
    });
  • src/index.ts:140-142 (registration)
    Dispatch/registration of the tool handler in the MCP server's callTool request handler switch statement.
    case "get_pipeline_state": {
      return await getPipelineState(codePipelineManager, input as { pipelineName: string });
    }

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/cuongdev/mcp-codepipeline-server'

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