Skip to main content
Glama
ddukbg

GitHub Enterprise MCP Server

get-pull-request

Retrieve specific pull request details from GitHub Enterprise repositories using owner, repo, and pull number parameters.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner (user or organization)
repoYesRepository name
pull_numberYesPull request number

Implementation Reference

  • Registration and handler for the MCP 'get-pull-request' tool. Includes input schema validation with Zod, parameter checks, API call to underlying pulls.getPullRequest, response formatting, and error handling.
    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
          };
        }
      }
    );
  • Core handler function that executes the GitHub API GET request to retrieve a specific pull request by owner, repo, and pull number.
    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}`);
    }
  • TypeScript interface defining the parameters for the getPullRequest function (owner, repo, pull_number).
    export interface GetPullRequestParams {
      owner: string;
      repo: string;
      pull_number: number;
    }
  • Import of the PullsAPI module (api/pulls/pulls.ts functions) used by the MCP tool handler.
    import * as PullsAPI from '../api/pulls/pulls.js';

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