GitHub
Description: Enable agents to interact with GitHub repositories, issues, and pull requests.
Author: Arcade
Auth: User authorization via the GitHub auth provider
The Arcade GitHub MCP Server provides a pre-built set of tools for interacting with GitHub. This server is optimized for LLM usage and user experience, featuring fuzzy matching, smart defaults, and streamlined output. It is enterprise-ready and can be configured for both GitHub.com and GitHub Enterprise Server.
These tools make it easy to build agents and AI apps that can:
- Access private repositories (with the user’s permission)
- Get info about repositories, issues, pull requests, and more
- Post issues, comments, and replies as the user
- Perform fuzzy searches for repositories, users, and labels
- Use intelligent defaults for user context and repository settings
- Interact with Projects V2 (modern GitHub Projects)
Critical: This MCP Server is built for GitHub Apps, not OAuth Apps.
You must create a GitHub App (not an OAuth App) to use this server properly.
Configuration Required: All tools require secrets to be configured in Arcade Dashboard. See Secrets Setup below.
GitHub Enterprise Support
This MCP Server fully supports GitHub Enterprise Server 2.22+
Default Configuration:
- If no
GITHUB_SERVER_URLis configured, the default ishttps://api.github.com(GitHub.com) - All tools work with GitHub.com out of the box
For GitHub Enterprise Server:
- Create your GitHub App on your Enterprise instance (not github.com)
- Configure the
GITHUB_SERVER_URLsecret in Arcade Dashboard (see Secrets Setup below) - Use your Enterprise server’s API endpoint
Example Enterprise Server URLs:
https://github.yourcompany.com/api/v3https://enterprise.yourorg.com/api/v3https://git.company.internal/api/v3
Note: GitHub Enterprise Server uses the /api/v3 path after the hostname. GitHub.com uses https://api.github.com (no /api/v3 suffix).
GitHub App Permissions Summary
When creating your GitHub App, you’ll need to grant specific permissions. Here’s a quick reference of which tools require which permissions:
Repository Permissions
| Permission | Level | Required For |
|---|---|---|
| Contents | Read | All repository and pull request tools, getting file contents |
| Contents | Write | Creating/updating files, creating branches, merging PRs |
| Issues | Read & Write | Issue management, PR assignments, managing labels (Issues) |
| Pull requests | Read & Write | Pull request management, reviews, managing labels (PRs) |
| Metadata | Read | All tools (automatically granted) |
| Statuses | Read | CheckPullRequestMergeStatus |
Organization Permissions
| Permission | Level | Required For |
|---|---|---|
| Members | Read | Projects, collaborators, org repos, user search |
| Projects | Read & Write | All Projects V2 tools |
User Permissions
| Permission | Level | Required For |
|---|---|---|
| Read user profile | Read | User context tools, review workload |
| Act on behalf of user | Enabled | SetStarred (starring repositories) |
Tools by Permission Requirements
Basic Repository Access (Contents Read + Metadata)
GetRepositoryCountStargazersListStargazersListRepositoryActivitiesGetFileContents
Repository Write (Contents Write + Metadata)
CreateBranchCreateOrUpdateFileUpdateFileLines
Issue Management (Contents Read + Issues + Metadata)
CreateIssueUpdateIssueGetIssueListIssuesCreateIssueCommentListRepositoryLabelsManageLabels(for issues)
Pull Request Read (Contents + Pull requests Read + Metadata)
ListPullRequestsGetPullRequestListPullRequestCommitsListReviewCommentsOnPullRequestCheckPullRequestMergeStatus(+ Statuses)
Pull Request Write (Contents Read + Pull requests Write + Metadata)
UpdatePullRequestCreatePullRequestSubmitPullRequestReviewManagePullRequestManagePullRequestReviewersCreateReviewCommentCreateReplyForReviewCommentResolveReviewThreadManageLabels(for pull requests)MergePullRequest(+ Contents Write)
Organization Tools (Contents + Metadata + Members)
ListOrgRepositoriesSearchMyReposListRepositoryCollaboratorsAssignPullRequestUser(+ Issues Write)
Projects V2 (Contents + Metadata + Projects + Members)
ListProjectsListProjectItemsSearchProjectItemListProjectFieldsUpdateProjectItem(Projects Write)
User Context (Contents + Metadata + Read user profile)
WhoAmI(+ Members)GetUserRecentActivityGetUserOpenItemsGetReviewWorkload(+ Pull requests Read)
⚠️ Special: Notifications (Requires Classic PAT)
GetNotificationSummaryListNotifications
Note: GitHub Apps cannot access notifications API. Requires classic Personal Access Token with notifications scope.
Available Tools
These tools are currently available in the Arcade GitHub MCP Sever.
| Tool Name | Description |
|---|---|
| Github.CreateIssue | Create an issue in a GitHub repository. |
| Github.UpdateIssue | Update an existing issue in a repository. |
| Github.GetIssue | Get details of a specific issue. |
| Github.ListIssues | List issues in a repository with filtering. |
| Github.CreateIssueComment | Create a comment on an issue. |
| Github.ListPullRequests | List pull requests in a GitHub repository. |
| Github.GetPullRequest | Get details of a pull request. |
| Github.UpdatePullRequest | Update a pull request. |
| Github.CreatePullRequest | Create a new pull request. |
| Github.MergePullRequest | Merge a pull request. |
| Github.ListPullRequestCommits | List commits on a pull request. |
| Github.SubmitPullRequestReview | Submit a review (approve/request changes/comment). |
| Github.CreateReviewComment | Create a review comment on a pull request. |
| Github.CreateReplyForReviewComment | Reply to a review comment. |
| Github.ResolveReviewThread | Resolve or unresolve a review conversation thread. |
| Github.ListReviewCommentsOnPullRequest | List review comments on a pull request. |
| Github.ListReviewCommentsInARepository | List all review comments in a repository. |
| Github.ManagePullRequest | Update pull request properties. |
| Github.ManagePullRequestReviewers | Add or remove reviewers from a pull request. |
| Github.AssignPullRequestUser | Assign a user to a pull request with fuzzy matching. |
| Github.CheckPullRequestMergeStatus | Check if a PR is ready to merge. |
| Github.ListProjects | List Projects V2 in an organization or user account. |
| Github.ListProjectItems | List items in a Projects V2 project. |
| Github.SearchProjectItem | Search for a specific item in a project. |
| Github.UpdateProjectItem | Update field values for a project item. |
| Github.ListProjectFields | List all custom fields in a project. |
| Github.GetRepository | Get details of a GitHub repository. |
| Github.ListOrgRepositories | List repositories of a GitHub organization. |
| Github.SearchMyRepos | Search repositories with fuzzy matching. |
| Github.ListRepositoryCollaborators | List collaborators and teams for a repository. |
| Github.ListRepositoryActivities | List activities of a GitHub repository. |
| Github.CountStargazers | Count the number of stargazers for a repository. |
| Github.ListStargazers | List the stargazers of a GitHub repository. |
| Github.SetStarred | Star or unstar a GitHub repository. |
| Github.CreateBranch | Create a new branch in a repository. |
| Github.GetFileContents | Get the contents of a file in a repository. |
| Github.CreateOrUpdateFile | Create or update a file in a repository. |
| Github.UpdateFileLines | Replace a block of lines within a file. |
| Github.ListRepositoryLabels | List all labels defined in a repository. |
| Github.ManageLabels | Add or remove labels from an issue or pull request. |
| Github.WhoAmI | Get information about the authenticated user. |
| Github.GetUserRecentActivity | Get user's recently created PRs and issues. |
| Github.GetUserOpenItems | Get user's currently open PRs and issues. |
| Github.GetReviewWorkload | Get PRs awaiting review by the user. |
| Github.GetNotificationSummary | Get a summary of user notifications. ⚠️ Requires Classic PAT |
| Github.ListNotifications | List notifications with pagination. ⚠️ Requires Classic PAT |
If you need to perform an action that’s not listed here, you can get in touch with us to request a new tool, or create your own tools with the GitHub auth provider.
Github.SetStarred
Star or unstar a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + User Permissions → “Act on behalf of user”
Important: This tool requires the “Act on behalf of user” permission to be enabled in your GitHub App settings.
Parameters
owner(string, required) The owner of the repository.name(string, required) The name of the repository.starred(boolean, required) Whether to star (true) or unstar (false) the repository.
Github.ListStargazers
List the stargazers of a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read)
Parameters
owner(string, required) The owner of the repository.repo(string, required) The name of the repository.limit(int, optional, Defaults toNone) The maximum number of stargazers to return. If not provided, all stargazers will be returned.
Github.CreateIssue
Create an issue in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Issues (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.title(string, required) The title of the issue.body(string, optional) The contents of the issue.assignees(array of strings, optional) Logins for Users to assign to this issue.milestone(integer, optional) The number of the milestone to associate this issue with.labels(array of strings, optional) Labels to associate with this issue.add_to_project_number(integer, optional) Project number to add this issue to.add_to_project_scope(enum (ProjectScopeTarget), optional) Project scope (organization or user) if adding to a project.add_to_project_owner(string, optional) Project owner (defaults to issue owner if not specified).
Github.CreateIssueComment
Create a comment on an issue in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Issues (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.issue_number(integer, required) The number that identifies the issue.body(string, required) The contents of the comment.
Github.UpdateIssue
Update an existing issue in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Issues (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.issue_number(integer, required) The number that identifies the issue.title(string, optional) The new title of the issue.body(string, optional) The new contents of the issue.state(enum (IssueState), optional) State of the issue (open, closed, all).labels(array of strings, optional) Labels to set (replaces existing).assignees(array of strings, optional) Assignees to set (replaces existing).milestone(integer, optional) Milestone number to associate.
Github.GetIssue
Get details of a specific issue from a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Issues (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.issue_number(integer, required) The number that identifies the issue.
Github.ListIssues
List issues in a GitHub repository with filtering and pagination.
GitHub App Permissions: Repository → Contents (Read), Issues (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.state(enum (IssueState), optional, Defaults toopen) The state of issues to return.labels(string, optional) Comma-separated label names (e.g., “bug,ui,@high”).sort(enum (IssueSortProperty), optional, Defaults tocreated) What to sort results by.direction(enum (SortDirection), optional, Defaults todesc) The direction to sort results.since(string, optional) Only show issues updated after this time (ISO 8601 format).per_page(integer, optional, Defaults to30) The number of results per page (max 100).page(integer, optional, Defaults to1) Page number of results to fetch.search_org_wide(boolean, optional, Defaults tofalse) Search across all organization repositories instead of just one repository.
Github.ListPullRequests
List pull requests in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.state(enum (PRState), optional, Defaults toPRState.OPEN) The state of the pull requests to return.head(string, optional) Filter pulls by head user or head organization and branch name in the format of user:ref-name or organization:ref-name.base(string, optional, Defaults to'main') Filter pulls by base branch name.sort(enum (PRSortProperty), optional, Defaults toPRSortProperty.CREATED) The property to sort the results by.direction(enum (SortDirection), optional) The direction of the sort.per_page(integer, optional, Defaults to30) The number of results per page (max 100).page(integer, optional, Defaults to1) The page number of the results to fetch.search_org_wide(boolean, optional, Defaults tofalse) Search across all organization repositories instead of just one repository.
Github.GetPullRequest
Get details of a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.include_diff_content(boolean, optional, Defaults tofalse) If true, return the diff content of the pull request.
Github.UpdatePullRequest
Update a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.title(string, optional) The title of the pull request.body(string, optional) The contents of the pull request.state(enum (PRState), optional) State of this Pull Request. Either open or closed.base(string, optional) The name of the branch you want your changes pulled into.maintainer_can_modify(boolean, optional) Indicates whether maintainers can modify the pull request.
Github.ListPullRequestCommits
List commits (from oldest to newest) on a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.per_page(integer, optional, Defaults to30) The number of results per page (max 100).page(integer, optional, Defaults to1) The page number of the results to fetch.
Github.CreateReplyForReviewComment
Create a reply to a review comment for a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.comment_id(integer, required) The unique identifier of the comment to reply to.body(string, required) The text of the reply comment.
Github.ResolveReviewThread
Resolve or unresolve a pull request review conversation thread.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.thread_id(string, required) The GraphQL Node ID of the review thread.resolved(boolean, optional, Defaults totrue) Whether to resolve or unresolve the thread.
Github.ListReviewCommentsOnPullRequest
List review comments on a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.sort(enum (ReviewCommentSortProperty), optional, Defaults to'created') The property to sort the results by. Can be one of:created,updated.direction(enum (SortDirection), optional, Defaults to'desc') The direction to sort results. Can be one of:asc,desc.since(string, optional) Only show results that were last updated after the given time. This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ.per_page(integer, optional, Defaults to30) The number of results per page (max 100).page(integer, optional, Defaults to1) The page number of the results to fetch.include_extra_data(boolean, optional, Defaults tofalse) If true, return all the data available about the pull requests. This is a large payload and may impact performance - use with caution.
Github.CreateReviewComment
Create a review comment for a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Important: Line numbers must be part of the PR diff (changed lines only). If the line wasn’t changed in the PR, the comment will fail.
Tip: Use subject_type='file' to comment on the entire file if unsure about line positions.
If the subject_type is not ‘file’, then the start_line and end_line parameters are required. If the subject_type is ‘file’, then the start_line and end_line parameters are ignored. If the commit_id is not provided, the latest commit SHA of the PR’s base branch will be used.
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.pull_number(integer, required) The number that identifies the pull request.body(string, required) The text of the review comment.path(string, required) The relative path to the file that necessitates a comment.commit_id(string, optional) The SHA of the commit needing a comment. If not provided, the latest commit SHA of the PR’s base branch will be used.start_line(integer, optional) The start line of the range of lines in the pull request diff that the comment applies to. Required unless ‘subject_type’ is ‘file’.end_line(integer, optional) The end line of the range of lines in the pull request diff that the comment applies to. Required unless ‘subject_type’ is ‘file’.side(enum (DiffSide), optional, Defaults to'RIGHT') The side of the diff that the pull request’s changes appear on. Use LEFT for deletions that appear in red. Use RIGHT for additions that appear in green or unchanged lines that appear in white and are shown for context.start_side(string, optional) The starting side of the diff that the comment applies to.subject_type(enum (ReviewCommentSubjectType), optional, Defaults to'FILE') The type of subject that the comment applies to. Can be one of: file, hunk, or line.
Github.CountStargazers
Count the number of stargazers (stars) for a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read)
Parameters
owner(string, required) The owner of the repository.name(string, required) The name of the repository.
Github.ListOrgRepositories
List repositories for the specified GitHub organization.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Members (Read)
Parameters
org(string, required) The organization name. The name is not case sensitive.repo_type(enum (RepoType), optional, Defaults to'ALL') The types of repositories to return.sort(enum (RepoSortProperty), optional, Defaults to'CREATED') The property to sort the results by.sort_direction(enum (SortDirection), optional, Defaults to'ASC') The order to sort by.per_page(integer, optional, Defaults to30) The number of results per page.page(integer, optional, Defaults to1) The page number of the results to fetch.
Github.GetRepository
Get detailed information about a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.
Github.ListRepositoryActivities
List repository activities such as pushes, merges, force pushes, and branch changes. Retrieves a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.direction(enum (SortDirection), optional, Defaults to'DESC') The direction to sort the results by.per_page(integer, optional, Defaults to30) The number of results per page (max 100).before(string, optional) A cursor (unique identifier, e.g., a SHA of a commit) to search for results before this cursor.after(string, optional) A cursor (unique identifier, e.g., a SHA of a commit) to search for results after this cursor.ref(string, optional) The Git reference for the activities you want to list. Can be formatted asrefs/heads/BRANCH_NAMEor justBRANCH_NAME.actor(string, optional) The GitHub username to filter by the actor who performed the activity.time_period(enum (RepoTimePeriod), optional) The time period to filter by.activity_type(enum (ActivityType), optional) The activity type to filter by.
Github.ListReviewCommentsInARepository
List review comments in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository. The name is not case sensitive.repo(string, required) The name of the repository without the .git extension. The name is not case sensitive.sort(enum (ReviewCommentSortProperty), optional, Defaults to'created') The property to sort the results by. Can be one of: created, updated.direction(enum (SortDirection), optional, Defaults to'DESC') The direction to sort results. Ignored without sort parameter. Can be one of: asc, desc.since(string, optional) Only show results that were last updated after the given time. This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ.per_page(integer, optional, Defaults to30) The number of results per page (max 100).page(integer, optional, Defaults to1) The page number of the results to fetch.include_extra_data(boolean, optional, Defaults tofalse) If true, return all the data available about the pull requests. This is a large payload and may impact performance - use with caution.
Github.CreatePullRequest
Create a new pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.title(string, required) The title of the pull request.head(string, required) The branch where your changes are (e.g., “feature/auth”). For cross-repo PRs: “username:branch”.base(string, required) The branch you want changes pulled into (e.g., “main”).body(string, optional) The contents/description of the pull request.draft(boolean, optional, Defaults tofalse) Create as a draft pull request.maintainer_can_modify(boolean, optional, Defaults totrue) Allow maintainers to modify the PR branch.issue(integer, optional) Issue number to auto-link. Will prepend “Closes #(issue)” to the PR body.reviewers(array of strings, optional) List of user logins to request reviews from.team_reviewers(array of strings, optional) List of team slugs to request reviews from.
Github.MergePullRequest
Merge a pull request in a GitHub repository.
GitHub App Permissions: Repository → Contents (Read & Write), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.merge_method(enum (MergeMethod), optional, Defaults tomerge) The merge method to use (merge, squash, rebase).commit_title(string, optional) Title for the merge commit.commit_message(string, optional) Extra detail for the merge commit message.sha(string, optional) Expected head SHA to ensure merge safety. Merge fails if SHA doesn’t match.delete_branch(boolean, optional, Defaults tofalse) Delete the head branch after successful merge.
Github.SubmitPullRequestReview
Submit a review for a pull request (approve, request changes, or comment).
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.event(enum (ReviewEvent), required) The review action (APPROVE, REQUEST_CHANGES, COMMENT).body(string, optional) The body text of the review. Required when event is REQUEST_CHANGES or COMMENT.
Github.ManagePullRequest
Update properties of a pull request (title, body, state, base branch).
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.title(string, optional) New title for the pull request.body(string, optional) New body for the pull request.append_body(boolean, optional, Defaults tofalse) Append to existing body instead of replacing.state(enum (PRState), optional) State of the pull request.base(string, optional) The name of the branch to change the base to.
Github.ManagePullRequestReviewers
Add or remove reviewers from a pull request.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.add_reviewers(array of strings, optional) List of user logins to add as reviewers.add_team_reviewers(array of strings, optional) List of team slugs to add as reviewers.remove_reviewers(array of strings, optional) List of user logins to remove as reviewers.remove_team_reviewers(array of strings, optional) List of team slugs to remove as reviewers.
Github.AssignPullRequestUser
Assign a user to a pull request with intelligent search and fuzzy matching.
GitHub App Permissions: Repository → Contents (Read), Issues (Write), Pull requests (Read), Metadata (Read) + Organization → Members (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.assignee_identifier(string, required) The user identifier (username, email, name, or ID).search_mode(enum (UserSearchMode), required) How to interpret the assignee_identifier.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.CheckPullRequestMergeStatus
Check if a pull request is ready to merge without attempting the merge.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read), Statuses (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.pull_number(integer, required) The number that identifies the pull request.include_check_details(boolean, optional, Defaults tofalse) Include individual check run details in the response.
Github.ListProjects
List Projects V2 across organization or user scopes.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Projects (Read), Members (Read)
Note: Works with Projects V2 only (not Classic Projects).
Parameters
search_mode(enum (ProjectLookupMode), required) Select search by number or name.scope_target(enum (ProjectScopeTarget), required) Where the project lives (organization, user, all).scope_identifier(string, required) Owner reference (org name or username).project_identifier(string, optional) Project number or title.query_filter(string, optional) Filter projects (e.g., “template”).state(enum (ProjectState), optional) Project state filter.per_page(integer, optional, Defaults to30) Items per page (max 100).cursor(string, optional) Cursor for next page.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.ListProjectItems
List items for a Projects V2 project with optional filtering.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Projects (Read), Members (Read)
Parameters
project_search_mode(enum (ProjectLookupMode), required) Select project lookup by number or name.project_identifier(string, required) Project number or title.scope_target(enum (ProjectScopeTarget), required) Where the project lives.scope_identifier(string, required) Owner reference.filter_assignee(string, optional) Filter by assignee (“@me” or username).filter_status(string, optional) Filter by status field value.filter_labels(array of strings, optional) Filter by labels.filter_is_open(boolean, optional) Filter by open/closed state.advanced_query(string, optional) Advanced query (overrides filters).per_page(integer, optional, Defaults to30) Items per page (max 100).cursor(string, optional) Cursor for next page.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.SearchProjectItem
Search for a specific item in a Projects V2 project.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Projects (Read), Members (Read)
Parameters
project_search_mode(enum (ProjectLookupMode), required) Select project lookup by number or name.project_identifier(string, required) Project number or title.item_search_mode(enum (ProjectItemLookupMode), required) Select item lookup by ID or title.item_identifier(string, required) Item ID or title.scope_target(enum (ProjectScopeTarget), required) Where the project lives.scope_identifier(string, required) Owner reference.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.UpdateProjectItem
Update field values for an item in a Projects V2 project.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Projects (Read & Write), Members (Read)
Parameters
project_search_mode(enum (ProjectLookupMode), required) Select project lookup by number or name.project_identifier(string, required) Project number or title.item_search_mode(enum (ProjectItemLookupMode), required) Select item lookup by ID or title.item_identifier(string, required) Item ID or title.scope_target(enum (ProjectScopeTarget), required) Where the project lives.scope_identifier(string, required) Owner reference.field_updates(object, required) Field updates (e.g.,{"Status": "Done", "Priority": "High"}).auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.ListProjectFields
List all custom fields configured for a Projects V2 project.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Projects (Read), Members (Read)
Parameters
project_search_mode(enum (ProjectLookupMode), required) Select project lookup by number or name.project_identifier(string, required) Project number or title.scope_target(enum (ProjectScopeTarget), required) Where the project lives.scope_identifier(string, required) Owner reference.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.ListRepositoryCollaborators
List users and teams who have access to a repository and can be requested as reviewers.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Members (Read)
Detail levels: basic (fast), include_org_members (default), full_profiles (slow, enriches with emails/names)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.affiliation(enum (CollaboratorAffiliation), optional) Filter by affiliation type.permission(enum (CollaboratorPermission), optional) Filter by permission level.detail_level(enum (CollaboratorDetailLevel), optional, Defaults toinclude_org_members) Detail level to include.include_teams(boolean, optional, Defaults totrue) Include teams that have access to the repository.per_page(integer, optional, Defaults to30) Number of collaborators per page (max 100).page(integer, optional, Defaults to1) Page number of results to fetch.
Github.SearchMyRepos
Search repositories accessible to the authenticated user with fuzzy matching.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + Organization → Members (Read)
Parameters
repo_name(string, required) Repository name or partial name to search for.scope(enum (RepoSearchScope), optional, Defaults toall) Where to search (all, personal, organization).organization(string, optional) Organization name when scope is “organization”.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.include_recent_branches(integer, optional, Defaults to10) Include up to this many recent branches per repository (0-30).
Github.CreateBranch
Create a new branch in a repository.
GitHub App Permissions: Repository → Contents (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.branch(string, required) The name of the new branch.from_branch(string, optional) The name of the branch to branch off of. Default: repository default branch.
Github.GetFileContents
Get the contents of a file in a repository.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.path(string, required) The content path.ref(string, optional) The name of the commit/branch/tag. Default: the repository’s default branch.
Github.CreateOrUpdateFile
Create or update a file in a repository.
GitHub App Permissions: Repository → Contents (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.path(string, required) The content path.content(string, required) The new content of the file.message(string, required) The commit message.branch(string, required) The branch name.sha(string, optional) The blob SHA of the file being replaced. Required if updating.
Github.UpdateFileLines
Replace a block of lines within a file (1-indexed, inclusive).
GitHub App Permissions: Repository → Contents (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.path(string, required) The content path.branch(string, required) The branch to update.start_line(integer, required) The first (1-indexed) line number to replace. Must be <= end_line.end_line(integer, required) The last (1-indexed) line number to replace. Must exist in the file.new_content(string, required) The replacement lines (no need to include trailing newline).message(string, required) The commit message describing the change.
Github.ListRepositoryLabels
List all labels defined in a repository.
GitHub App Permissions: Repository → Issues (Read), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.per_page(integer, optional, Defaults to100) The number of results per page (max 100).page(integer, optional, Defaults to1) The page number of the results to fetch.
Github.ManageLabels
Add or remove labels from an issue or pull request. Supports fuzzy matching for typo tolerance.
GitHub App Permissions: Repository → Issues (Write) or Pull requests (Write), Metadata (Read)
Parameters
owner(string, required) The account owner of the repository.repo(string, required) The name of the repository.number(integer, required) The number that identifies the issue or pull request.entity_type(enum (LabelEntityType), required) The type of entity (issue or pull_request).add_labels(array of strings, optional) List of label names to add. Supports fuzzy matching.remove_labels(array of strings, optional) List of label names to remove. Supports fuzzy matching.auto_accept_matches(boolean, optional, Defaults tofalse) Auto-accept fuzzy matches above 0.9 confidence.
Github.WhoAmI
Get information about the authenticated GitHub user, including profile, organizations, and teams.
GitHub App Permissions: Organization → Members (Read) + User Permissions → Read user profile
Parameters
No parameters required for this tool.
Github.GetUserRecentActivity
Get user’s recently created pull requests and issues across all repositories.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + User Permissions → Read user profile
Parameters
days(integer, optional, Defaults to30) Number of days to look back.per_page(integer, optional, Defaults to10) Number of items per category (PRs and issues). Max 50.
Github.GetUserOpenItems
Get user’s currently open pull requests and issues across all repositories.
GitHub App Permissions: Repository → Contents (Read), Metadata (Read) + User Permissions → Read user profile
Parameters
per_page(integer, optional, Defaults to30) Number of items per category (PRs and issues). Max 100.
Github.GetReviewWorkload
Get pull requests awaiting review by the authenticated user.
GitHub App Permissions: Repository → Contents (Read), Pull requests (Read), Metadata (Read) + User Permissions → Read user profile
Parameters
No parameters required for this tool.
Github.GetNotificationSummary
Get a summary of GitHub notifications grouped by reason, repository, and type.
Special Requirements: GitHub Apps cannot access the notifications API.
Required: Classic Personal Access Token with notifications scope.
👉 How to create a Classic PAT - Create with notifications scope only
Parameters
No parameters required for this tool.
Github.ListNotifications
List GitHub notifications with pagination.
Special Requirements: GitHub Apps cannot access the notifications API.
Required: Classic Personal Access Token with notifications scope.
👉 How to create a Classic PAT - Create with notifications scope only
Parameters
page(integer, optional, Defaults to1) Page number to fetch.per_page(integer, optional, Defaults to30) Number of notifications per page (max 100).all_notifications(boolean, optional, Defaults tofalse) Include read notifications.participating(boolean, optional, Defaults tofalse) Only show notifications user is participating in.
Configuration & Setup
Authentication
Critical: This MCP Server uses GitHub Apps authentication, not OAuth Apps.
You must create a GitHub App to use this server. OAuth Apps are not supported.
The Arcade GitHub MCP Server uses the GitHub auth provider to connect to users’ GitHub accounts.
For Arcade Cloud:
- No configuration needed
- Your users will see
Arcadeas the requesting application - All tools work out of the box
For Self-Hosted:
- You must create your own GitHub App
- Configure the GitHub auth provider with your app credentials
- Your users will see your application name
New to GitHub Apps? Read Why Arcade Uses GitHub Apps to understand the security and compliance benefits.
Secrets Setup
All tools require secrets to be configured in Arcade Dashboard.
Steps:
- Go to Arcade Dashboard
- Navigate to Secrets in the left sidebar
- Click Add Secret
- Add the following secrets:
| Secret Name | Value | Required For |
|---|---|---|
GITHUB_SERVER_URL | https://api.github.com (default for GitHub.com) | All tools |
GITHUB_CLASSIC_PERSONAL_ACCESS_TOKEN | Classic PAT with notifications scope | Notifications tools only |
Default: If GITHUB_SERVER_URL is not configured, it defaults to https://api.github.com (GitHub.com)
GitHub Enterprise Users: Set GITHUB_SERVER_URL to your Enterprise server’s API endpoint (e.g., https://github.yourcompany.com/api/v3). Note that Enterprise uses /api/v3 path. See GitHub Enterprise Support for details.
For Notifications Tools: Create a classic Personal Access Token at github.com/settings/tokens with only the notifications scope checked. GitHub Apps cannot access the notifications API.
Enumerations Reference
Below is a reference of enumerations used by tools in this server. Each enum is linked from the tool documentation above.
PRSortProperty
Sort properties for pull requests (list_pull_requests):
CREATED:created- Sort by creation dateUPDATED:updated- Sort by last update datePOPULARITY:popularity- Sort by number of comments/reactionsLONG_RUNNING:long-running- Sort by duration PR has been open
PRState
Pull request state filter:
OPEN:open- Open pull requests onlyCLOSED:closed- Closed pull requests onlyALL:all- All pull requests
IssueState
Issue state filter:
OPEN:open- Open issues onlyCLOSED:closed- Closed issues onlyALL:all- All issues
IssueSortProperty
Sort properties for issues (list_issues):
CREATED:created- Sort by creation dateUPDATED:updated- Sort by last update dateCOMMENTS:comments- Sort by number of comments
ReviewCommentSortProperty
Sort properties for review comments:
CREATED:created- Sort by creation dateUPDATED:updated- Sort by last update date
ReviewCommentSubjectType
Review comment subject type (create_review_comment):
FILE:file- Comment on entire file (use if unsure about line numbers)LINE:line- Comment on specific lines in diff
DiffSide
Side of the diff for review comments:
LEFT:LEFT- For deletions (red)RIGHT:RIGHT- For additions (green) or unchanged lines (context)
SortDirection
Sort direction (used across multiple tools):
ASC:asc- Ascending order (oldest first)DESC:desc- Descending order (newest first)
MergeMethod
PR merge methods (merge_pull_request):
MERGE:merge- Create merge commit (preserves all commits)SQUASH:squash- Squash commits into oneREBASE:rebase- Rebase and merge (linear history)
ReviewEvent
Review actions (submit_pull_request_review):
APPROVE:APPROVE- Approve the pull requestREQUEST_CHANGES:REQUEST_CHANGES- Request changes before mergingCOMMENT:COMMENT- Comment without approval/rejection
UserSearchMode
User search modes (assign_pull_request_user):
username:username- Search by GitHub usernameemail:email- Search by email addressname:name- Search by display nameid:id- Search by numeric user ID
RepoType
Repository types (list_org_repositories):
ALL:all- All repositoriesPUBLIC:public- Public repositories onlyPRIVATE:private- Private repositories onlyFORKS:forks- Forked repositories onlySOURCES:sources- Source repositories (not forks)MEMBER:member- Repositories with explicit permission
RepoSortProperty
Repository sort properties:
CREATED:created- Sort by creation dateUPDATED:updated- Sort by last update datePUSHED:pushed- Sort by last push dateFULL_NAME:full_name- Sort alphabetically by full name
RepoSearchScope
Repository search scope (search_my_repos):
ALL:all- All accessible repositoriesPERSONAL:personal- Personal repositories onlyORGANIZATION:organization- Organization repositories only
RepoTimePeriod
Time periods for activity filtering:
DAY:day- Last dayWEEK:week- Last weekMONTH:month- Last monthQUARTER:quarter- Last quarterYEAR:year- Last year
ActivityType
Repository activity types:
PUSH:push- Regular push eventsFORCE_PUSH:force_push- Force push eventsBRANCH_CREATION:branch_creation- Branch creationBRANCH_DELETION:branch_deletion- Branch deletionPR_MERGE:pr_merge- PR merge eventsMERGE_QUEUE_MERGE:merge_queue_merge- Merge queue events
CollaboratorAffiliation
Collaborator affiliation types:
OUTSIDE:outside- Outside collaboratorsDIRECT:direct- Direct collaboratorsALL:all- All collaborators
CollaboratorPermission
Permission levels:
PULL:pull- Read-only accessTRIAGE:triage- Read and triage accessPUSH:push- Read and write accessMAINTAIN:maintain- Read, write, and maintain accessADMIN:admin- Full administrative access
CollaboratorDetailLevel
Detail level for collaborator listing:
BASIC:basic- Only explicit collaborators (fast)INCLUDE_ORG_MEMBERS:include_org_members- Add org members (default)FULL_PROFILES:full_profiles- Add org members + enrich with emails/names (slow)
ProjectScopeTarget
Project scope:
ORGANIZATION:organization- Organization-owned projectsUSER:user- User-owned projectsALL:all- All accessible projects
ProjectLookupMode
Project lookup method:
NUMBER:number- Find by project numberNAME:name- Find by project name/title
ProjectItemLookupMode
Project item lookup method:
ID:id- Find by item IDTITLE:title- Find by item title
ProjectState
Project state filter:
OPEN:open- Open projects onlyCLOSED:closed- Closed projects onlyALL:all- All projects
LabelEntityType
Entity type for label management:
ISSUE:issue- IssuePULL_REQUEST:pull_request- Pull Request