merge_pull_request
Merge a pull request in a GitHub repository by specifying the owner, repository, and pull request number, with options for commit details and merge method.
Instructions
Merge a pull request in a GitHub repository.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| commit_title | No | Title for merge commit | |
| commit_message | No | Extra detail for merge commit | |
| merge_method | No | Merge method |
Implementation Reference
- src/tools/pullrequests.ts:203-248 (handler)The main tool definition and handler for 'merge_pull_request'. Uses octokit.rest.pulls.merge() to merge a GitHub pull request. Accepts: owner, repo, pullNumber, commit_title, commit_message, and merge_method. Returns merged status, message, and SHA.
// Tool: Merge Pull Request server.tool( "merge_pull_request", "Merge a pull request in a GitHub repository.", { owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), pullNumber: z.number().describe("Pull request number"), commit_title: z.string().optional().describe("Title for merge commit"), commit_message: z .string() .optional() .describe("Extra detail for merge commit"), merge_method: z .enum(["merge", "squash", "rebase"]) .optional() .describe("Merge method"), }, async ({ owner, repo, pullNumber, commit_title, commit_message, merge_method, }) => { try { const response = await octokit.rest.pulls.merge({ owner, repo, pull_number: pullNumber, commit_title, commit_message, merge_method, }) const m = response.data return { content: [{ type: "text", text: `PR merged successfully.\nMerged: ${m.merged}\nMessage: ${m.message}\nSHA: ${m.sha}` }], } } catch (e: any) { return { content: [{ type: "text", text: `Error: ${e.message}` }], } } }, ) - src/tools/pullrequests.ts:207-220 (schema)Zod schema defining the input parameters for merge_pull_request: owner (string), repo (string), pullNumber (number), commit_title (optional string), commit_message (optional string), merge_method (optional enum: merge/squash/rebase).
{ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), pullNumber: z.number().describe("Pull request number"), commit_title: z.string().optional().describe("Title for merge commit"), commit_message: z .string() .optional() .describe("Extra detail for merge commit"), merge_method: z .enum(["merge", "squash", "rebase"]) .optional() .describe("Merge method"), }, - src/tools/pullrequests.ts:5-5 (registration)The function 'registerPullRequestTools' is exported and registered in src/index.ts via registerPullRequestTools(server, octokit), which adds all pull request tools (including merge_pull_request) to the MCP server.
export function registerPullRequestTools(server: McpServer, octokit: Octokit) { - src/index.ts:14-18 (registration)The function registerAllToolsAndResources calls registerPullRequestTools(server, octokit) which registers merge_pull_request (and all other PR tools) on the MCP server.
export function registerAllToolsAndResources(server: McpServer, octokit: Octokit): void { registerSearchTools(server, octokit) registerIssueTools(server, octokit) registerRepositoryTools(server, octokit) registerPullRequestTools(server, octokit)