{
  "name": "io.github.github/github-mcp-server",
  "description": "The official GitHub MCP connects AI models directly to the GitHub API. Create repos, open issues, manage pull requests, search code, and read file contents — all from a natural language prompt. Essential for any AI-assisted GitHub workflow.",
  "status": "active",
  "version": "latest",
  "_meta": {
    "com.top-mcps/lastVerified": "2026-05-31",
    "com.top-mcps/score": {
      "value": 90,
      "rubricVersion": "2026-04",
      "lastComputed": "2026-06-02T13:16:41.466Z",
      "methodology": "https://top-mcps.com/about/methodology"
    },
    "com.top-mcps/stats": {
      "fetchedAt": "2026-06-02T11:55:51.335Z",
      "githubStars": 29075,
      "lastCommitAt": "2026-04-16T16:22:50Z"
    }
  },
  "repository": {
    "url": "https://github.com/github/github-mcp-server",
    "source": "github"
  },
  "author": {
    "name": "GitHub"
  },
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "",
      "version": "latest",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "name": "GITHUB_PERSONAL_ACCESS_TOKEN",
          "description": "GITHUB_PERSONAL_ACCESS_TOKEN — required credential for GitHub.",
          "isRequired": true,
          "isSecret": true
        }
      ]
    }
  ],
  "capabilities": {
    "tools": [
      {
        "name": "get_file_contents",
        "description": "Read a file from a repo at a given path and ref.",
        "sideEffect": "read",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "path",
            "type": "string",
            "required": true
          },
          {
            "name": "ref",
            "type": "string",
            "required": false
          }
        ]
      },
      {
        "name": "search_repositories",
        "description": "Search public and accessible repositories.",
        "sideEffect": "read",
        "args": [
          {
            "name": "query",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "search_code",
        "description": "Search code across GitHub.",
        "sideEffect": "read",
        "args": [
          {
            "name": "q",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "create_or_update_file",
        "description": "Commit a single file change to a branch.",
        "sideEffect": "write",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "path",
            "type": "string",
            "required": true
          },
          {
            "name": "content",
            "type": "string",
            "required": true
          },
          {
            "name": "message",
            "type": "string",
            "required": true
          },
          {
            "name": "branch",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "create_issue",
        "description": "Open a new issue on a repo.",
        "sideEffect": "write",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "title",
            "type": "string",
            "required": true
          },
          {
            "name": "body",
            "type": "string",
            "required": false
          }
        ]
      },
      {
        "name": "create_pull_request",
        "description": "Open a pull request.",
        "sideEffect": "write",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "title",
            "type": "string",
            "required": true
          },
          {
            "name": "head",
            "type": "string",
            "required": true
          },
          {
            "name": "base",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "merge_pull_request",
        "description": "Merge an open PR that passes branch protection.",
        "sideEffect": "write",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "pull_number",
            "type": "number",
            "required": true
          }
        ]
      },
      {
        "name": "list_issues",
        "description": "List issues on a repo with filters.",
        "sideEffect": "read",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "create_branch",
        "description": "Create a new branch from a base ref.",
        "sideEffect": "write",
        "args": [
          {
            "name": "owner",
            "type": "string",
            "required": true
          },
          {
            "name": "repo",
            "type": "string",
            "required": true
          },
          {
            "name": "branch",
            "type": "string",
            "required": true
          },
          {
            "name": "from_branch",
            "type": "string",
            "required": false
          }
        ]
      }
    ],
    "security": {
      "scope": "read-write",
      "sandbox": "Authenticates to the GitHub API using the token in `GITHUB_PERSONAL_ACCESS_TOKEN`. The blast radius equals the token scope — the MCP has whatever repo, issue, PR, and admin permissions the token grants.",
      "gotchas": [
        "Classic tokens grant every permission on the account — prefer fine-grained tokens scoped to the specific repos you want the agent to touch.",
        "Branch-protection rules still apply; unprotected branches let an agent push directly to default branches."
      ]
    }
  },
  "_links": {
    "html": "https://top-mcps.com/mcp/github",
    "markdown": "https://top-mcps.com/mcp/github.md",
    "methodology": "https://top-mcps.com/about/methodology"
  }
}
