AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Mcp Github

mcp-missionsquad-mcp-github · by MissionSquad

Github MCP Server

No reviews yet
0 installs
17 views
0.0% view→install

Install

$ agentstack add mcp-missionsquad-mcp-github

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-missionsquad-mcp-github)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Mcp Github? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

GitHub MCP Server

MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.

Mission Squad modifications

  • github pat is now dynamic per request and does not have to be included via environment variables, but still falls back to environment variables.
  • name: mcp-github

Features

  • Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist
  • Comprehensive Error Handling: Clear error messages for common issues
  • Git History Preservation: Operations maintain proper Git history without force pushing
  • Batch Operations: Support for both single-file and multi-file operations
  • Advanced Search: Support for searching code, issues/PRs, and users

Tools

  1. create_or_update_file
  • Create or update a single file in a repository
  • Inputs:
  • owner (string): Repository owner (username or organization)
  • repo (string): Repository name
  • path (string): Path where to create/update the file
  • content (string): Content of the file
  • message (string): Commit message
  • branch (string): Branch to create/update the file in
  • sha (optional string): SHA of file being replaced (for updates)
  • Returns: File content and commit details
  1. push_files
  • Push multiple files in a single commit
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • branch (string): Branch to push to
  • files (array): Files to push, each with path and content
  • message (string): Commit message
  • Returns: Updated branch reference
  1. search_repositories
  • Search for GitHub repositories
  • Inputs:
  • query (string): Search query
  • page (optional number): Page number for pagination
  • perPage (optional number): Results per page (max 100)
  • Returns: Repository search results
  1. create_repository
  • Create a new GitHub repository
  • Inputs:
  • name (string): Repository name
  • description (optional string): Repository description
  • private (optional boolean): Whether repo should be private
  • autoInit (optional boolean): Initialize with README
  • Returns: Created repository details
  1. get_file_contents
  • Get contents of a file or directory
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • path (string): Path to file/directory
  • branch (optional string): Branch to get contents from
  • Returns: File/directory contents
  1. create_issue
  • Create a new issue
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • title (string): Issue title
  • body (optional string): Issue description
  • assignees (optional string[]): Usernames to assign
  • labels (optional string[]): Labels to add
  • milestone (optional number): Milestone number
  • Returns: Created issue details
  1. create_pull_request
  • Create a new pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • title (string): PR title
  • body (optional string): PR description
  • head (string): Branch containing changes
  • base (string): Branch to merge into
  • draft (optional boolean): Create as draft PR
  • maintainer_can_modify (optional boolean): Allow maintainer edits
  • Returns: Created pull request details
  1. fork_repository
  • Fork a repository
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • organization (optional string): Organization to fork to
  • Returns: Forked repository details
  1. create_branch
  • Create a new branch
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • branch (string): Name for new branch
  • from_branch (optional string): Source branch (defaults to repo default)
  • Returns: Created branch reference
  1. list_issues
  • List and filter repository issues
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • state (optional string): Filter by state ('open', 'closed', 'all')
  • labels (optional string[]): Filter by labels
  • sort (optional string): Sort by ('created', 'updated', 'comments')
  • direction (optional string): Sort direction ('asc', 'desc')
  • since (optional string): Filter by date (ISO 8601 timestamp)
  • page (optional number): Page number
  • per_page (optional number): Results per page
  • Returns: Array of issue details
  1. update_issue
  • Update an existing issue
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • issue_number (number): Issue number to update
  • title (optional string): New title
  • body (optional string): New description
  • state (optional string): New state ('open' or 'closed')
  • labels (optional string[]): New labels
  • assignees (optional string[]): New assignees
  • milestone (optional number): New milestone number
  • Returns: Updated issue details
  1. add_issue_comment
  • Add a comment to an issue
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • issue_number (number): Issue number to comment on
  • body (string): Comment text
  • Returns: Created comment details
  1. search_code
  • Search for code across GitHub repositories
  • Inputs:
  • q (string): Search query using GitHub code search syntax
  • sort (optional string): Sort field ('indexed' only)
  • order (optional string): Sort order ('asc' or 'desc')
  • per_page (optional number): Results per page (max 100)
  • page (optional number): Page number
  • Returns: Code search results with repository context
  1. search_issues
  • Search for issues and pull requests
  • Inputs:
  • q (string): Search query using GitHub issues search syntax
  • sort (optional string): Sort field (comments, reactions, created, etc.)
  • order (optional string): Sort order ('asc' or 'desc')
  • per_page (optional number): Results per page (max 100)
  • page (optional number): Page number
  • Returns: Issue and pull request search results
  1. search_users
  • Search for GitHub users
  • Inputs:
  • q (string): Search query using GitHub users search syntax
  • sort (optional string): Sort field (followers, repositories, joined)
  • order (optional string): Sort order ('asc' or 'desc')
  • per_page (optional number): Results per page (max 100)
  • page (optional number): Page number
  • Returns: User search results
  1. list_commits
  • Gets commits of a branch in a repository
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • page (optional string): page number
  • per_page (optional string): number of record per page
  • sha (optional string): branch name
  • Returns: List of commits
  1. get_issue
  • Gets the contents of an issue within a repository
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • issue_number (number): Issue number to retrieve
  • Returns: Github Issue object & details
  1. get_pull_request
  • Get details of a specific pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • Returns: Pull request details including diff and review status
  1. list_pull_requests
  • List and filter repository pull requests
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • state (optional string): Filter by state ('open', 'closed', 'all')
  • head (optional string): Filter by head user/org and branch
  • base (optional string): Filter by base branch
  • sort (optional string): Sort by ('created', 'updated', 'popularity', 'long-running')
  • direction (optional string): Sort direction ('asc', 'desc')
  • per_page (optional number): Results per page (max 100)
  • page (optional number): Page number
  • Returns: Array of pull request details
  1. create_pull_request_review
  • Create a review on a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • body (string): Review comment text
  • event (string): Review action ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
  • commit_id (optional string): SHA of commit to review
  • comments (optional array): Line-specific comments, each with:
  • path (string): File path
  • position (number): Line position in diff
  • body (string): Comment text
  • Returns: Created review details
  1. merge_pull_request
  • Merge a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • commit_title (optional string): Title for merge commit
  • commit_message (optional string): Extra detail for merge commit
  • merge_method (optional string): Merge method ('merge', 'squash', 'rebase')
  • Returns: Merge result details
  1. get_pull_request_files
  • Get the list of files changed in a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • Returns: Array of changed files with patch and status details
  1. get_pull_request_status
  • Get the combined status of all status checks for a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • Returns: Combined status check results and individual check details
  1. update_pull_request_branch
  • Update a pull request branch with the latest changes from the base branch (equivalent to GitHub's "Update branch" button)
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • expected_head_sha (optional string): The expected SHA of the pull request's HEAD ref
  • Returns: Success message when branch is updated
  1. get_pull_request_comments
  • Get the review comments on a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • Returns: Array of pull request review comments with details like the comment text, author, and location in the diff
  1. get_pull_request_reviews
  • Get the reviews on a pull request
  • Inputs:
  • owner (string): Repository owner
  • repo (string): Repository name
  • pull_number (number): Pull request number
  • Returns: Array of pull request reviews with details like the review state (APPROVED, CHANGES_REQUESTED, etc.), reviewer, and review body

Webhook Tools

This server now supports the full repository and organization webhook REST surface that is available with the existing github_pat auth model.

Repository webhook tools

  • list_repository_webhooks
  • get_repository_webhook
  • create_repository_webhook
  • update_repository_webhook
  • delete_repository_webhook
  • get_repository_webhook_config
  • update_repository_webhook_config
  • ping_repository_webhook
  • list_repository_webhook_deliveries
  • get_repository_webhook_delivery
  • redeliver_repository_webhook_delivery

Organization webhook tools

  • list_organization_webhooks
  • get_organization_webhook
  • create_organization_webhook
  • update_organization_webhook
  • delete_organization_webhook
  • get_organization_webhook_config
  • update_organization_webhook_config
  • ping_organization_webhook
  • list_organization_webhook_deliveries
  • get_organization_webhook_delivery
  • redeliver_organization_webhook_delivery

Permissions

Repository webhooks:

  • Classic PATs typically need admin:repo_hook (or broader repo) to create, edit, delete, ping, or redeliver.
  • Fine-grained PATs need repository Webhooks permission with read for list/get and write for create/update/delete/ping/redelivery.

Organization webhooks:

  • Classic PATs need admin:org_hook.
  • Fine-grained PATs need organization Webhooks permission with read for list/get and write for create/update/delete/ping/redelivery.

Usage notes

  • Create and update webhook tools hardcode name: "web" internally, which is what GitHub requires.
  • Repository webhook config supports url, content_type, secret, and insecure_ssl.
  • Organization webhook config supports those fields plus optional username and password for basic auth.
  • GitHub strongly recommends setting a webhook secret and validating delivery signatures on the receiving service.
  • insecure_ssl: "1" disables certificate verification and is discouraged.

Debugging flow

  • Use ping_*_webhook to trigger a test delivery after create or update.
  • Use list_*_webhook_deliveries to inspect recent attempts.
  • Use get_*_webhook_delivery to inspect the request payload, headers, and GitHub's captured response.
  • Use redeliver_*_webhook_delivery to replay a failed or stale delivery.

Out of scope

  • This server does not implement an inbound HTTP receiver for webhook deliveries.
  • This server does not perform delivery signature validation for your webhook endpoint.
  • GitHub App webhook endpoints are not included in this phase because those APIs require JWT-based app authentication rather than a PAT.

Search Query Syntax

Code Search

  • language:javascript: Search by programming language
  • repo:owner/name: Search in specific repository
  • path:app/src: Search in specific path
  • extension:js: Search by file extension
  • Example: q: "import express" language:typescript path:src/

Issues Search

  • is:issue or is:pr: Filter by type
  • is:open or is:closed: Filter by state
  • label:bug: Search by label
  • author:username: Search by author
  • Example: q: "memory leak" is:issue is:open label:bug

Users Search

  • type:user or type:org: Filter by account type
  • followers:>1000: Filter by followers
  • location:London: Search by location
  • Example: q: "fullstack developer" location:London followers:>100

For detailed search syntax, see GitHub's searching documentation.

Setup

Personal Access Token

Create a GitHub Personal Access Token with appropriate permissions:

  • Go to Personal access tokens (in GitHub Settings > Developer settings)
  • Select which repositories you'd like this token to have access to (Public, All, or Select)
  • Create a token with the repo scope ("Full control of private repositories")
  • Alternatively, if working only with public repositories, select only the public_repo scope
  • Copy the generated token

Usage with Claude Desktop

To use this with Claude Desktop, add the following to your claude_desktop_config.json:

Docker
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "mcp/github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": ""
      }
    }
  }
}

NPX

{
  "mcpServers": {

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [MissionSquad](https://github.com/MissionSquad)
- **Source:** [MissionSquad/mcp-github](https://github.com/MissionSquad/mcp-github)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.