GitHub MCP Server

Interaja com repositórios, issues, pull requests e mais no GitHub. Requer um token de acesso pessoal do GitHub.

Documentação

Workspace de Desenvolvimento Workiva IGAM

Este workspace contém tanto um GitHub MCP Server para integração com GitHub quanto scripts Python para relatórios de Identity, Governance e Access Management (IGAM) da Workiva.

Projetos

1. GitHub MCP Server (TypeScript)

Um servidor Model Context Protocol (MCP) que fornece capacidades abrangentes de integração com GitHub. Este servidor permite que assistentes de IA e outros clientes MCP interajam com repositórios, issues, pull requests e muito mais do GitHub por meio de uma interface padronizada.

2. Workiva IGAM Python Scripts

Scripts Python para recuperar, processar e gerar relatórios sobre dados de contas de usuário da Workiva para fins de conformidade e análise.


GitHub MCP Server

Um servidor Model Context Protocol (MCP) que fornece capacidades abrangentes de integração com GitHub. Este servidor permite que assistentes de IA e outros clientes MCP interajam com repositórios, issues, pull requests e muito mais do GitHub por meio de uma interface padronizada.

Recursos

Gerenciamento de Repositórios

  • list-repositories: Lista repositórios de um usuário ou organização
  • get-repository: Obtém informações detalhadas sobre um repositório específico
  • search-repositories: Busca repositórios no GitHub

Gerenciamento de Issues

  • list-issues: Lista issues de um repositório com opções de filtro
  • create-issue: Cria novas issues com labels e responsáveis
  • update-issue: Atualiza issues existentes (título, corpo, estado, labels, responsáveis)
  • search-issues: Busca issues e pull requests no GitHub

Gerenciamento de Pull Requests

  • list-pull-requests: Lista pull requests de um repositório
  • create-pull-request: Cria novos pull requests com suporte a rascunho

Operações de Arquivo

  • get-file-contents: Recupera conteúdos de arquivos ou listagens de diretórios de repositórios

Informações do Usuário

  • get-user: Obtém informações detalhadas sobre usuários do GitHub

Pré-requisitos

  • Node.js 16 ou superior
  • TypeScript
  • Um token de acesso pessoal do GitHub

Instalação

  1. Clone este repositório:
git clone <repository-url>
cd github-mcp-server
  1. Instale as dependências:
npm install
  1. Compile o projeto:
npm run build

Configuração

GitHub Token

Você precisa de um token de acesso pessoal do GitHub para usar este servidor. Crie um em: https://github.com/settings/tokens

O token precisa dos seguintes escopos, dependendo do seu caso de uso:

  • repo - Controle total de repositórios privados
  • public_repo - Acesso a repositórios públicos
  • read:user - Ler informações do perfil do usuário
  • read:org - Ler informações da organização

Variáveis de Ambiente

Defina a variável de ambiente GITHUB_TOKEN:

Windows:

set GITHUB_TOKEN=your_github_token_here

PowerShell:

$env:GITHUB_TOKEN="your_github_token_here"

macOS/Linux:

export GITHUB_TOKEN=your_github_token_here

Uso

Executando o Servidor

npm run start

Ou para desenvolvimento com recompilação automática:

npm run dev

Usando com Claude Desktop

  1. Atualize seu arquivo de configuração do Claude Desktop:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

  1. Adicione a configuração do servidor:
{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["C:\\absolute\\path\\to\\github-mcp-server\\build\\index.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}
  1. Reinicie o Claude Desktop

Usando com VS Code

O projeto inclui um arquivo de configuração .vscode/mcp.json. Atualize o valor de GITHUB_TOKEN e use a extensão MCP para VS Code.

Referência de Ferramentas

Ferramentas de Repositório

list-repositories

Lista repositórios de um usuário ou organização.

Parâmetros:

  • owner (string): Nome de usuário ou organização
  • type (opcional): Filtro de tipo de repositório ("all", "owner", "member")
  • sort (opcional): Ordenar por ("created", "updated", "pushed", "full_name")
  • per_page (opcional): Número de resultados por página (máx. 100)

get-repository

Obtém informações detalhadas sobre um repositório específico.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório

search-repositories

Busca repositórios no GitHub.

Parâmetros:

  • query (string): Consulta de busca
  • sort (opcional): Campo de ordenação ("stars", "forks", "help-wanted-issues", "updated")
  • order (opcional): Ordem de ordenação ("asc", "desc")
  • per_page (opcional): Número de resultados por página (máx. 100)

Ferramentas de Issues

list-issues

Lista issues de um repositório.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • state (opcional): Estado da issue ("open", "closed", "all")
  • labels (opcional): Lista de labels separados por vírgula
  • assignee (opcional): Nome de usuário do responsável
  • per_page (opcional): Número de resultados por página (máx. 100)

create-issue

Cria uma nova issue em um repositório.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • title (string): Título da issue
  • body (opcional): Corpo/descrição da issue
  • labels (opcional): Matriz de nomes de labels
  • assignees (opcional): Matriz de nomes de usuário para atribuir

update-issue

Atualiza uma issue existente.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • issue_number (number): Número da issue
  • title (opcional): Novo título da issue
  • body (opcional): Novo corpo da issue
  • state (opcional): Novo estado da issue ("open", "closed")
  • labels (opcional): Matriz de nomes de labels
  • assignees (opcional): Matriz de nomes de usuário para atribuir

Ferramentas de Pull Requests

list-pull-requests

Lista pull requests de um repositório.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • state (opcional): Estado do pull request ("open", "closed", "all")
  • head (opcional): Filtrar por branch head
  • base (opcional): Filtrar por branch base
  • per_page (opcional): Número de resultados por página (máx. 100)

create-pull-request

Cria um novo pull request.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • title (string): Título do pull request
  • head (string): Nome do branch head
  • base (string): Nome do branch base
  • body (opcional): Corpo/descrição do pull request
  • draft (opcional): Criar como pull request de rascunho

Ferramentas de Arquivo

get-file-contents

Obtém o conteúdo de um arquivo de um repositório.

Parâmetros:

  • owner (string): Proprietário do repositório
  • repo (string): Nome do repositório
  • path (string): Caminho do arquivo no repositório
  • ref (opcional): Branch, tag ou SHA do commit

Ferramentas de Busca

search-issues

Busca issues e pull requests no GitHub.

Parâmetros:

  • query (string): Consulta de busca
  • sort (opcional): Campo de ordenação
  • order (opcional): Ordem de ordenação ("asc", "desc")
  • per_page (opcional): Número de resultados por página (máx. 100)

Ferramentas de Usuário

get-user

Obtém informações sobre um usuário do GitHub.

Parâmetros:

  • username (string): Nome de usuário do GitHub

Exemplo de Uso

Aqui estão alguns exemplos de consultas que você pode usar com o GitHub MCP Server:

  1. Listar repositórios: "Mostre-me os repositórios da organização microsoft"
  2. Criar uma issue: "Crie uma issue em myrepo intitulada 'Bug fix needed' com o label 'bug'"
  3. Buscar repositórios: "Encontre repositórios Python populares relacionados a machine learning"
  4. Obter conteúdo de arquivo: "Mostre-me o arquivo README.md do branch main de microsoft/vscode"
  5. Listar issues: "Mostre-me todas as issues abertas em microsoft/typescript atribuídas a alguém"

Tratamento de Erros

O servidor implementa tratamento abrangente de erros:

  • Erros da API do GitHub são capturados e retornados com mensagens descritivas
  • Limitação de taxa é tratada de forma elegante
  • Erros de autenticação fornecem orientação clara
  • Erros de validação para parâmetros obrigatórios

Considerações de Segurança

  • Nunca exponha seu token do GitHub em logs nem faça commit dele no controle de versão
  • Use variáveis de ambiente para armazenar o token
  • O servidor valida todas as entradas antes de fazer chamadas à API
  • Siga o princípio do menor privilégio ao definir os escopos do token

Desenvolvimento

Estrutura do Projeto

src/
  index.ts          # Main MCP server implementation
.github/
  copilot-instructions.md  # Development guidelines
.vscode/
  mcp.json         # VS Code MCP configuration
build/             # Compiled JavaScript output
package.json       # Project configuration
tsconfig.json      # TypeScript configuration

Contribuição

  1. Siga as diretrizes de codificação em .github/copilot-instructions.md
  2. Use TypeScript para todo o código
  3. Implemente tratamento adequado de erros para novas ferramentas
  4. Adicione documentação abrangente para novos recursos
  5. Teste com vários repositórios e cenários do GitHub

Testes

Teste o servidor executando-o e usando várias ferramentas:

# Set your GitHub token
export GITHUB_TOKEN=your_token_here

# Start the server
npm run start

# The server will listen on stdio for MCP protocol messages

Licença

Licença ISC


Workiva IGAM Python Scripts

O diretório python/ contém scripts Python para relatórios de Identity, Governance e Access Management (IGAM) da Workiva.

Principais Recursos

  • Autenticação OAuth 2.0: Acesso seguro à API usando fluxo de credenciais de cliente
  • Processamento de Dados de Usuário: Recuperar e filtrar informações de contas de usuário da Workiva
  • Geração de Relatórios CSV: Relatórios padronizados para conformidade e análise
  • Notificações por E-mail: Entrega automatizada de relatórios com anexos
  • Visualização de Dados: Gráficos de distribuição de papéis e análises
  • Registro Abrangente: Logs de execução detalhados para solução de problemas

Início Rápido

  1. Navegue até o diretório Python:

    cd python/
    
  2. Instale as dependências:

    pip install requests configparser
    
  3. Configure o aplicativo:

    cp config.ini.template config.ini
    # Edit config.ini with your Workiva API credentials
    
  4. Execute o script principal:

    python W_IGAM_Request_new.py
    

Estrutura de Diretórios

python/
├── W_IGAM_Request_new.py      # Main IGAM reporting script
├── config.example.ini         # Configuration example template
├── config.ini.template        # Configuration template  
├── requirements.txt           # Python dependencies
├── requirements-azure.txt     # Azure-specific dependencies
├── README.md                  # Python scripts documentation
├── utils/                     # Utility modules
│   ├── visualize_roles.py     # Advanced role visualization
│   ├── simple_visualize_roles.py  # Simple visualization
│   ├── data_validator.py      # Data validation utilities
│   └── azure_config_loader.py # Azure configuration loader
└── tests/                     # Test files
    └── test_workiva_igam_integration.py  # Integration tests

Modelos de Configuração

O diretório config/ contém modelos de configuração:

  • Configurações do MCP Server: Modelos para Claude Desktop e outros clientes MCP
  • Configurações Python: Arquivos de configuração de exemplo para scripts IGAM

Requisitos de Configuração

Crie um arquivo config.ini com suas credenciais da API da Workiva:

  • Endpoints da API (token_url, users_url)
  • Credenciais do cliente OAuth (client_id, client_secret)
  • Configurações de saída (directory, filename)
  • Configurações de notificação por e-mail (opcional)

Nota de Segurança: Nunca faça commit do arquivo config.ini real com credenciais reais no controle de versão.

Para documentação detalhada, consulte python/README.md.

Suporte