Github MCP Server

Integra-se com o GitHub, permitindo que LLMs interajam com repositórios, issues e pull requests por meio da API

Documentação

Github MCP Server

Um Model Context Protocol Server para Github.

Fornece integração com Github através de MCP, permitindo que LLMs interajam com ele.

Documentação da API REST do Github

Instalação

Instalação Manual

  1. Crie ou obtenha um token de acesso para sua conta Github: Guia

  2. Adicione a configuração do servidor ao Claude Desktop:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: Consulte este Guia
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "github-mcp-server"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_personal_github_access_token"
      }
    }
  }
}

Componentes

Ferramentas

  1. search_repositories: Pesquisar um repositório no GitHub.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 30, máximo: 100): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
  2. search_issues: Pesquisar issues de um repositório.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
      • order (string opcional, padrão: desc): Ordenação (asc ou desc).
      • sort (string opcional, padrão: best match): Campo de ordenação (pode ser um de: comments, reactions, reactions-+1, reactions--1, reactions-smile, reactions-thinking_face, reactions-heart, reactions-tada, interactions, created ou updated).
  3. search_commits: Pesquisar commits de um repositório.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
      • order (string opcional, padrão: desc): Ordenação (asc ou desc).
      • sort (string opcional, padrão: best match): Campo de ordenação (pode ser um de: committer-date ou author-date).
  4. search_code: Pesquisar código de um repositório.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
  5. search_users: Pesquisar usuários de um repositório.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
      • order (string opcional, padrão: desc): Ordenação (asc ou desc).
      • sort (string opcional, padrão: best match): Campo de ordenação (pode ser um de: followers, repositories ou joined).
  6. search_topics: Pesquisar tópicos.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
  7. search_labels: Pesquisar labels em um repositório.

    • Entradas obrigatórias:
      • query (string): A consulta para pesquisar o repositório.
      • page (número, padrão: 1): Número da página para paginação.
      • per_page (número, padrão: 30, máximo: 100): Número de resultados por página.
      • order (string opcional, padrão: desc): Ordenação (asc ou desc).
      • sort (string opcional, padrão: best match): Campo de ordenação (pode ser um de: created ou updated).
  8. list_repositories_issues: Listar issues de um repositório.

    • Entradas obrigatórias:
      • owner (string): O proprietário do repositório.
      • repo (string): O nome do repositório.
      • page (número opcional, padrão: 1): Número da página para paginação.
      • per_page (número opcional, padrão: 30, máximo: 100): Número de resultados por página.
      • direction (string opcional, padrão: desc): Direção da ordenação (asc ou desc).
      • sort (string opcional, padrão: created): Campo de ordenação (pode ser um de: created, comments ou updated).
      • since (string opcional): Resultados atualizados pela última vez após o horário informado (formato ISO 8601: YYYY-MM-DDTHH:MM:SSZ.).
      • labels (string opcional): Nomes de labels separados por vírgula. Exemplo: bug,ui,@high.
      • milestone (string opcional): Número do milestone.
      • assignee (string opcional): Nome do usuário designado (* para todos).
      • creator (string opcional): O usuário que criou a issue. (* para todos).
      • mentioned (string opcional): Um usuário mencionado na issue.
  9. get_issue: Obter uma issue de um repositório.

    • Entradas obrigatórias:
      • owner (string): O proprietário do repositório.
      • repo (string): O nome do repositório.
      • issue_number (número): O número da issue.
  10. list_repositories_pull_requests: Listar pull requests de um repositório.

    • Entradas obrigatórias:
      • owner (string): O proprietário do repositório.
      • repo (string): O nome do repositório.
      • page (número opcional, padrão: 1): Número da página para paginação.
      • per_page (número opcional, padrão: 30, máximo: 100): Número de resultados por página.
      • direction (string opcional, padrão: desc): Direção da ordenação (asc ou desc).
      • sort (string opcional, padrão: created): Campo de ordenação (pode ser um de: created, popularity, long-running ou updated).
      • head (string opcional): Filtra pulls por usuário head ou organização head e nome da branch no formato usuário:ref-name ou organização:ref-name (Por exemplo: github:new-script-format ou octocat:test-branch).
      • base (string opcional): Filtra pulls pelo nome da branch base. (Por exemplo: gh-pages).
  11. get_pull_request: Obter um pull request de um repositório.

    • Entradas obrigatórias:
      • owner (string): O proprietário do repositório.
      • repo (string): O nome do repositório.
      • pull_request_number (número): O número do pull request.

Exemplos de uso

Alguns exemplos de prompts que você pode usar para interagir com Github:

  1. "modelcontextprotocol" → execute a ferramenta search_repositories para encontrar repositórios onde modelcontextprotocol é mencionado.
  2. "Qual é a issue 739 no repositório modelcontextprotocol servers" → execute a ferramenta get_issue para encontrar a issue 739 do repositório modelcontextprotocol servers.
  3. "Qual é o PR 717 no repositório modelcontextprotocol servers" → execute a ferramenta get_pull_request para encontrar o PR 717 do repositório modelcontextprotocol servers.

Desenvolvimento

  1. Instale as dependências:
pnpm install
  1. Configure o token de acesso do Github em .env:
GITHUB_PERSONAL_ACCESS_TOKEN=<your_personal_github_access_token>
  1. Execute localmente com watch:
pnpm dev
  1. Compile o servidor:
pnpm build
  1. Depuração local com inspector:
pnpm inspector