GitHub MCP Server
by luizHramoss
README.md
# GitHub MCP Server
Servidor MCP (Model Context Protocol) customizado, escrito em TypeScript, que conecta o Claude à API REST do GitHub.
## O que ele faz
Expõe 6 ferramentas (tools) que o Claude pode chamar:
| Tool | Descrição |
|---|---|
| `list_repos` | Lista repositórios do usuário autenticado |
| `get_repo` | Detalhes de um repositório específico |
| `list_issues` | Lista issues de um repositório |
| `create_issue` | Cria uma issue nova |
| `get_file_content` | Lê o conteúdo de um arquivo do repositório |
| `search_code` | Busca código no GitHub |
## 1. Gerar um GitHub Personal Access Token
1. Acesse **GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens**
2. Crie um token com permissões mínimas necessárias:
- `Contents: Read` (para `get_file_content`)
- `Issues: Read and write` (para `list_issues`/`create_issue`)
- `Metadata: Read` (obrigatório sempre)
3. Copie o token gerado (começa com `github_pat_...`)
> Dica de segurança: nunca commite o token no repositório. Use variável de ambiente.
## 2. Instalar e buildar
```bash
npm install
npm run build
```
Isso gera `build/index.js`, que é o executável do servidor (comunica via stdio, protocolo padrão do MCP).
## 3. Testar localmente (opcional, sem Claude)
```bash
export GITHUB_PERSONAL_ACCESS_TOKEN="seu_token_aqui"
npm start
```
Se aparecer `GitHub MCP server rodando via stdio.` no stderr, está funcionando. Para testar as tools interativamente, use o [MCP Inspector](https://github.com/modelcontextprotocol/inspector):
```bash
npx @modelcontextprotocol/inspector node build/index.js
```
## 4. Conectar ao Claude Desktop
Edite o arquivo de configuração do Claude Desktop:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
Adicione:
```json
{
"mcpServers": {
"github": {
"command": "node",
"args": ["/caminho/absoluto/para/github-mcp-server/build/index.js"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "seu_token_aqui"
}
}
}
}
```
Reinicie o Claude Desktop. As ferramentas do GitHub devem aparecer no ícone de ferramentas (🔨) da conversa.
## 5. Próximos passos (ideias para expandir e turbinar o portfólio)
- Adicionar tools de escrita: `create_pull_request`, `merge_pull_request`, `create_branch`
- Adicionar paginação real (cursor-based) em vez de só `per_page`
- Rate limiting e cache (o GitHub limita a 5000 req/h autenticado)
- Testes automatizados com Vitest/Jest
- CI com GitHub Actions rodando lint + testes + build a cada push
- Publicar como pacote npm (`npx github-mcp-server`)
- Dockerizar o servidor (bom gancho pra conectar com seus outros projetos DevOps)
## Estrutura do projeto
```
github-mcp-server/
├── src/
│ └── index.ts # lógica do servidor e definição das tools
├── build/ # gerado pelo `npm run build`
├── package.json
├── tsconfig.json
└── README.md
```
TDQS
A3.5/5.0
Scored across 6 tools
Disambiguation5/5
Each tool targets a distinct resource/action: repository listing/detail, issue listing/creation, file reading, and code search. No tools appear to overlap in purpose.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern such as list_repos, get_repo, list_issues, and create_issue. The naming is predictable and internally consistent.
Tool Count5/5
Six tools provide a reasonable, well-scoped surface for basic GitHub repository queries, issue management, and code search. Each tool earns its place without redundancy.
Completeness3/5
The set covers a useful read-heavy workflow and issue creation, but it lacks operations like updating/closing issues, repository creation, and pull request access. These are notable gaps within the GitHub domain.
Maintenance
ActivityMaintained
ResponsivenessNo issues