GitHub Webhooks MCP Server

Um servidor MCP simples que gerencia webhooks do GitHub e permite que LLMs compatíveis com MCP interajam com a API do GitHub.

Documentação

GitHub Webhooks MCP Server

Um servidor Model Context Protocol (MCP) para gerenciar webhooks do GitHub em níveis de organização e de repositório.

Recursos

Webhooks em nível de organização

  • create_org_webhook - Cria webhooks que se aplicam a todos os repositórios de uma organização
  • list_org_webhooks - Lista todos os webhooks em nível de organização
  • update_org_webhook - Modifica webhooks de organização existentes
  • delete_org_webhook - Remove webhooks de organização

Webhooks em nível de repositório

  • create_repo_webhook - Cria webhooks para um repositório específico
  • list_repo_webhooks - Lista todos os webhooks de um repositório
  • update_repo_webhook - Modifica webhooks de repositório existentes
  • delete_repo_webhook - Remove webhooks de repositório

Instalação

npm install
npm run build

Configuração

O servidor requer um token de acesso pessoal do GitHub com as permissões apropriadas:

  • Para webhooks de organização: escopo admin:org_hook
  • Para webhooks de repositório: escopo admin:repo_hook

Defina o token como uma variável de ambiente:

export GITHUB_TOKEN=your_github_token_here

Uso

Executando o servidor

node dist/index.js

Configuração do cliente MCP

Adicione à configuração do seu cliente MCP (por exemplo, Claude Desktop):

{
  "mcpServers": {
    "github-webhooks": {
      "command": "node",
      "args": ["/path/to/github-webhooks-mcp-server/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}

Exemplos de ferramentas

Criar webhook de organização

{
  "org": "my-org",
  "config": {
    "url": "https://example.com/webhook",
    "content_type": "json",
    "secret": "my-secret"
  },
  "events": ["push", "pull_request"],
  "active": true
}

Listar webhooks de organização

{
  "org": "my-org",
  "per_page": 30,
  "page": 1
}

Atualizar webhook de organização

{
  "org": "my-org",
  "hook_id": 12345,
  "config": {
    "url": "https://example.com/new-webhook"
  },
  "active": false
}

Excluir webhook de organização

{
  "org": "my-org",
  "hook_id": 12345
}

Criar webhook de repositório

{
  "owner": "username",
  "repo": "repository-name",
  "config": {
    "url": "https://example.com/webhook",
    "content_type": "json"
  },
  "events": ["push", "issues"],
  "active": true
}

Listar webhooks de repositório

{
  "owner": "username",
  "repo": "repository-name"
}

Atualizar webhook de repositório

{
  "owner": "username",
  "repo": "repository-name",
  "hook_id": 12345,
  "events": ["push", "pull_request", "issues"]
}

Excluir webhook de repositório

{
  "owner": "username",
  "repo": "repository-name",
  "hook_id": 12345
}

Eventos de webhook

Eventos de webhook comuns incluem:

  • push - Push do Git para um repositório
  • pull_request - Atividade de pull request
  • issues - Atividade de issue
  • issue_comment - Atividade de comentários em issues
  • release - Atividade de release
  • create - Branch ou tag criada
  • delete - Branch ou tag excluída
  • fork - Repositório bifurcado (fork)
  • star - Repositório marcado com estrela
  • watch - Repositório acompanhado (watch)

Para uma lista completa de eventos, consulte GitHub Webhook Events Documentation.

Desenvolvimento

Compilação

npm run build

Estrutura do projeto

github-webhooks-mcp-server/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                 # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md

Requisitos

  • Node.js 18 ou superior
  • Token de acesso pessoal do GitHub com permissões apropriadas para webhooks

Licença

MIT