GitHub Webhooks MCP Server
A simple MCP server that manages GitHub webhooks and lets MCP compatible LLMs interact with the GitHub API.
Documentation
GitHub Webhooks MCP Server
A Model Context Protocol (MCP) server for managing GitHub webhooks at both organization and repository levels.
Features
Organization-level Webhooks
- create_org_webhook - Create webhooks that apply to all repositories in an organization
- list_org_webhooks - List all organization-level webhooks
- update_org_webhook - Modify existing organization webhooks
- delete_org_webhook - Remove organization webhooks
Repository-level Webhooks
- create_repo_webhook - Create webhooks for a specific repository
- list_repo_webhooks - List all webhooks for a repository
- update_repo_webhook - Modify existing repository webhooks
- delete_repo_webhook - Remove repository webhooks
Installation
npm install
npm run build
Configuration
The server requires a GitHub personal access token with appropriate permissions:
- For organization webhooks:
admin:org_hookscope - For repository webhooks:
admin:repo_hookscope
Set the token as an environment variable:
export GITHUB_TOKEN=your_github_token_here
Usage
Running the Server
node dist/index.js
MCP Client Configuration
Add to your MCP client configuration (e.g., Claude Desktop):
{
"mcpServers": {
"github-webhooks": {
"command": "node",
"args": ["/path/to/github-webhooks-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
Tool Examples
Create Organization Webhook
{
"org": "my-org",
"config": {
"url": "https://example.com/webhook",
"content_type": "json",
"secret": "my-secret"
},
"events": ["push", "pull_request"],
"active": true
}
List Organization Webhooks
{
"org": "my-org",
"per_page": 30,
"page": 1
}
Update Organization Webhook
{
"org": "my-org",
"hook_id": 12345,
"config": {
"url": "https://example.com/new-webhook"
},
"active": false
}
Delete Organization Webhook
{
"org": "my-org",
"hook_id": 12345
}
Create Repository Webhook
{
"owner": "username",
"repo": "repository-name",
"config": {
"url": "https://example.com/webhook",
"content_type": "json"
},
"events": ["push", "issues"],
"active": true
}
List Repository Webhooks
{
"owner": "username",
"repo": "repository-name"
}
Update Repository Webhook
{
"owner": "username",
"repo": "repository-name",
"hook_id": 12345,
"events": ["push", "pull_request", "issues"]
}
Delete Repository Webhook
{
"owner": "username",
"repo": "repository-name",
"hook_id": 12345
}
Webhook Events
Common webhook events include:
push- Git push to a repositorypull_request- Pull request activityissues- Issue activityissue_comment- Issue comment activityrelease- Release activitycreate- Branch or tag createddelete- Branch or tag deletedfork- Repository forkedstar- Repository starredwatch- Repository watched
For a complete list of events, see GitHub Webhook Events Documentation.
Development
Build
npm run build
Project Structure
github-webhooks-mcp-server/
├── src/
│ └── index.ts # Main server implementation
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
Requirements
- Node.js 18 or higher
- GitHub personal access token with appropriate webhook permissions
License
MIT