n8n_source_control_push
Push workflow changes to a Git repository for version control and collaboration in n8n automation projects.
Instructions
Push changes to the remote Git repository.
Args:
force (boolean): Force push (default: false)
message (string, optional): Commit message
Returns: Push result with affected files.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force push | |
| message | No | Commit message |
Implementation Reference
- src/tools/users-sourcecontrol.ts:229-266 (handler)Implementation of the n8n_source_control_push tool handler. It performs a POST request to the n8n API's /source-control/push endpoint and formats the response for the user.
// ============ Push to Source Control ============ server.registerTool( 'n8n_source_control_push', { title: 'Push to Source Control', description: `Push changes to the remote Git repository. Args: - force (boolean): Force push (default: false) - message (string, optional): Commit message Returns: Push result with affected files.`, inputSchema: SourceControlPushSchema, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true } }, async (params: z.infer<typeof SourceControlPushSchema>) => { const result = await post<N8nSourceControlPushResult>('/source-control/push', params); const files = result.pushResult?.files || []; const text = [ `**Push Complete**`, `- Status: ${result.statusCode}`, result.pushResult?.branch ? `- Branch: ${result.pushResult.branch}` : '', files.length ? `- Files Pushed:\n${files.map(f => ` - ${f}`).join('\n')}` : '- No files changed' ].filter(Boolean).join('\n'); return { content: [{ type: 'text', text }], structuredContent: result }; } );