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
- Clone este repositório:
git clone <repository-url>
cd github-mcp-server
- Instale as dependências:
npm install
- 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 privadospublic_repo- Acesso a repositórios públicosread:user- Ler informações do perfil do usuárioread: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
- 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
- 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"
}
}
}
}
- 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çãotype(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óriorepo(string): Nome do repositório
search-repositories
Busca repositórios no GitHub.
Parâmetros:
query(string): Consulta de buscasort(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óriorepo(string): Nome do repositóriostate(opcional): Estado da issue ("open", "closed", "all")labels(opcional): Lista de labels separados por vírgulaassignee(opcional): Nome de usuário do responsávelper_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óriorepo(string): Nome do repositóriotitle(string): Título da issuebody(opcional): Corpo/descrição da issuelabels(opcional): Matriz de nomes de labelsassignees(opcional): Matriz de nomes de usuário para atribuir
update-issue
Atualiza uma issue existente.
Parâmetros:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioissue_number(number): Número da issuetitle(opcional): Novo título da issuebody(opcional): Novo corpo da issuestate(opcional): Novo estado da issue ("open", "closed")labels(opcional): Matriz de nomes de labelsassignees(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óriorepo(string): Nome do repositóriostate(opcional): Estado do pull request ("open", "closed", "all")head(opcional): Filtrar por branch headbase(opcional): Filtrar por branch baseper_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óriorepo(string): Nome do repositóriotitle(string): Título do pull requesthead(string): Nome do branch headbase(string): Nome do branch basebody(opcional): Corpo/descrição do pull requestdraft(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óriorepo(string): Nome do repositóriopath(string): Caminho do arquivo no repositórioref(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 buscasort(opcional): Campo de ordenaçãoorder(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:
- Listar repositórios: "Mostre-me os repositórios da organização microsoft"
- Criar uma issue: "Crie uma issue em myrepo intitulada 'Bug fix needed' com o label 'bug'"
- Buscar repositórios: "Encontre repositórios Python populares relacionados a machine learning"
- Obter conteúdo de arquivo: "Mostre-me o arquivo README.md do branch main de microsoft/vscode"
- 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
- Siga as diretrizes de codificação em
.github/copilot-instructions.md - Use TypeScript para todo o código
- Implemente tratamento adequado de erros para novas ferramentas
- Adicione documentação abrangente para novos recursos
- 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
-
Navegue até o diretório Python:
cd python/ -
Instale as dependências:
pip install requests configparser -
Configure o aplicativo:
cp config.ini.template config.ini # Edit config.ini with your Workiva API credentials -
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.