get-pull-request
Retrieve detailed information about a specific pull request from a GitHub Enterprise repository by specifying the owner, repository name, and pull request number.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (user or organization) | |
| pull_number | Yes | Pull request number | |
| repo | Yes | Repository name |
Implementation Reference
- server/index.ts:617-721 (registration)Registers the MCP tool 'get-pull-request' with input schema using Zod and the handler function.server.tool( "get-pull-request", { owner: z.string().describe("Repository owner (user or organization)"), repo: z.string().describe("Repository name"), pull_number: z.number().describe("Pull request number") }, async ({ owner, repo, pull_number }) => { try { // Parameter validation if (!owner || typeof owner !== 'string' || owner.trim() === '') { return { content: [ { type: "text", text: "Error: Repository owner (owner) is required." } ], isError: true }; } if (!repo || typeof repo !== 'string' || repo.trim() === '') { return { content: [ { type: "text", text: "Error: Repository name (repo) is required." } ], isError: true }; } if (!pull_number || typeof pull_number !== 'number') { return { content: [ { type: "text", text: "Error: Pull request number (pull_number) is required." } ], isError: true }; } const pullRequest = await context.pulls.getPullRequest(context.client, { owner, repo, pull_number }); // Format PR info for better readability const formattedPR = { number: pullRequest.number, title: pullRequest.title, body: pullRequest.body, state: pullRequest.state, user: pullRequest.user.login, created_at: pullRequest.created_at, updated_at: pullRequest.updated_at, closed_at: pullRequest.closed_at, merged_at: pullRequest.merged_at, head: { ref: pullRequest.head.ref, sha: pullRequest.head.sha, repo: pullRequest.head.repo.full_name }, base: { ref: pullRequest.base.ref, sha: pullRequest.base.sha, repo: pullRequest.base.repo.full_name }, merged: pullRequest.merged, mergeable: pullRequest.mergeable, comments: pullRequest.comments, commits: pullRequest.commits, additions: pullRequest.additions, deletions: pullRequest.deletions, changed_files: pullRequest.changed_files, url: `${pullRequest.number}` }; return { content: [ { type: "text", text: `Pull request #${pull_number} details:\n\n${JSON.stringify(formattedPR, null, 2)}` } ] }; } catch (error: any) { console.error('Error fetching pull request details:', error); return { content: [ { type: "text", text: `An error occurred while fetching pull request details: ${error.message}` } ], isError: true }; } } );
- server/index.ts:624-720 (handler)The main handler function for the 'get-pull-request' tool. Validates parameters, fetches PR details using the PullsAPI, formats the response, and returns it in MCP format.async ({ owner, repo, pull_number }) => { try { // Parameter validation if (!owner || typeof owner !== 'string' || owner.trim() === '') { return { content: [ { type: "text", text: "Error: Repository owner (owner) is required." } ], isError: true }; } if (!repo || typeof repo !== 'string' || repo.trim() === '') { return { content: [ { type: "text", text: "Error: Repository name (repo) is required." } ], isError: true }; } if (!pull_number || typeof pull_number !== 'number') { return { content: [ { type: "text", text: "Error: Pull request number (pull_number) is required." } ], isError: true }; } const pullRequest = await context.pulls.getPullRequest(context.client, { owner, repo, pull_number }); // Format PR info for better readability const formattedPR = { number: pullRequest.number, title: pullRequest.title, body: pullRequest.body, state: pullRequest.state, user: pullRequest.user.login, created_at: pullRequest.created_at, updated_at: pullRequest.updated_at, closed_at: pullRequest.closed_at, merged_at: pullRequest.merged_at, head: { ref: pullRequest.head.ref, sha: pullRequest.head.sha, repo: pullRequest.head.repo.full_name }, base: { ref: pullRequest.base.ref, sha: pullRequest.base.sha, repo: pullRequest.base.repo.full_name }, merged: pullRequest.merged, mergeable: pullRequest.mergeable, comments: pullRequest.comments, commits: pullRequest.commits, additions: pullRequest.additions, deletions: pullRequest.deletions, changed_files: pullRequest.changed_files, url: `${pullRequest.number}` }; return { content: [ { type: "text", text: `Pull request #${pull_number} details:\n\n${JSON.stringify(formattedPR, null, 2)}` } ] }; } catch (error: any) { console.error('Error fetching pull request details:', error); return { content: [ { type: "text", text: `An error occurred while fetching pull request details: ${error.message}` } ], isError: true }; } }
- server/index.ts:619-623 (schema)Zod schema defining the input parameters for the 'get-pull-request' tool: owner (string), repo (string), pull_number (number).{ owner: z.string().describe("Repository owner (user or organization)"), repo: z.string().describe("Repository name"), pull_number: z.number().describe("Pull request number") },
- api/pulls/pulls.ts:46-53 (helper)Underlying API helper function that performs the actual GitHub API call to retrieve pull request details.export async function getPullRequest( client: GitHubClient, params: GetPullRequestParams ): Promise<PullRequest> { const { owner, repo, pull_number } = params; return client.get<PullRequest>(`/repos/${owner}/${repo}/pulls/${pull_number}`); }
- api/pulls/types.ts:64-68 (schema)TypeScript interface defining the parameters for getPullRequest function.export interface GetPullRequestParams { owner: string; repo: string; pull_number: number; }