Skip to main content
Glama
ddukbg

GitHub Enterprise MCP Server

trigger-workflow

Manually trigger GitHub Actions workflows in GitHub Enterprise repositories by specifying repository details, workflow identifier, and branch reference.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
workflow_idYesWorkflow ID or file name
refYesGit reference (branch, tag, SHA)
inputsNoWorkflow inputs

Implementation Reference

  • Full MCP tool registration for 'trigger-workflow', including Zod input schema, handler function with validation and dispatch logic
    server.tool(
      "trigger-workflow",
      {
        owner: z.string().min(1).describe("Repository owner"),
        repo: z.string().min(1).describe("Repository name"),
        workflow_id: z.union([z.string(), z.number()]).describe("Workflow ID or file name"),
        ref: z.string().min(1).describe("Git reference (branch, tag, SHA)"),
        inputs: z.record(z.string()).optional().describe("Workflow inputs")
      },
      async ({ owner, repo, workflow_id, ref, inputs }) => {
        try {
          // Parameter validation
          if (!owner || typeof owner !== 'string' || owner.trim() === '') {
            return {
              content: [
                {
                  type: "text",
                  text: "Repository owner is required."
                }
              ]
            };
          }
    
          if (!repo || typeof repo !== 'string' || repo.trim() === '') {
            return {
              content: [
                {
                  type: "text",
                  text: "Repository name is required."
                }
              ]
            };
          }
    
          if (!workflow_id) {
            return {
              content: [
                {
                  type: "text",
                  text: "Workflow ID or filename is required."
                }
              ]
            };
          }
    
          if (!ref || typeof ref !== 'string' || ref.trim() === '') {
            return {
              content: [
                {
                  type: "text",
                  text: "Git reference (branch, tag, or SHA) is required."
                }
              ]
            };
          }
    
          await context.actions.dispatchWorkflow(owner, repo, workflow_id, { ref, inputs });
    
          return {
            content: [
              {
                type: "text",
                text: `Successfully triggered workflow '${workflow_id}' in repository '${owner}/${repo}' on ref '${ref}'.`
              }
            ]
          };
        } catch (error: any) {
          return {
            content: [
              {
                type: "text",
                text: `Error triggering workflow: ${error.message}`
              }
            ]
          };
        }
      }
    );
  • Core handler function dispatchWorkflow in ActionsAPI that performs the actual GitHub API POST to trigger workflow_dispatch
     * Trigger a workflow run (workflow_dispatch event)
     * @param owner Repository owner
     * @param repo Repository name
     * @param workflowId Workflow ID or file name
     * @param options Options for workflow dispatch
     */
    async dispatchWorkflow(owner: string, repo: string, workflowId: number | string, options: WorkflowDispatchOptions): Promise<void> {
      await this.client.post(`repos/${owner}/${repo}/actions/workflows/${workflowId}/dispatches`, options);
    }
  • TypeScript interface defining the options structure for workflow dispatch, matching the tool's inputs (ref and optional inputs)
    export interface WorkflowDispatchOptions {
      ref: string; // The git reference for the workflow (branch, tag, HEAD)
      inputs?: Record<string, string>; // Input parameters defined in the workflow file

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/ddukbg/github-enterprise-mcp'

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