You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GitHub webhook receiver and local MCP extension for GitHub notification workflows.
4
4
5
-
Receives GitHub webhook events and enables Lin and Lay to autonomously handle PR reviews and issue management.
6
-
It supports two operating styles:
5
+
## Description
7
6
8
-
- MCP polling: store webhook events and let an AI poll lightweight summaries.
9
-
- Channel push: push new events into a Claude Code session in real-time via `claude/channel`.
10
-
- Direct trigger: run a command immediately for each stored event.
7
+
`github-webhook-mcp` receives GitHub webhook events, persists them to a local `events.json`, and exposes them to AI agents through MCP tools.
8
+
It is designed for notification-style workflows where an AI can poll lightweight summaries, inspect a single event in detail, and mark handled events as processed.
11
9
12
10
Detailed behavior, event metadata, trigger semantics, and file responsibilities live in [docs/0-requirements.md](docs/0-requirements.md).
13
11
14
-
## Quick Start
12
+
## Features
15
13
16
-
### 1. Install dependencies
14
+
- Receives GitHub webhook events over HTTPS and persists them locally.
15
+
- Exposes pending events to MCP clients through lightweight polling tools.
16
+
- Supports real-time `claude/channel` notifications in Claude Code.
17
+
- Supports direct trigger mode for immediate Codex reactions per event.
18
+
- Ships as a Node-based `.mcpb` desktop extension and as an `npx` MCP server.
17
19
18
-
```bash
19
-
pip install -r requirements.txt
20
+
## Installation
21
+
22
+
### Claude Desktop — Desktop Extension (.mcpb)
23
+
24
+
Download `mcp-server.mcpb` from [Releases](https://github.com/Liplus-Project/github-webhook-mcp/releases), then:
25
+
26
+
1. Open Claude Desktop → **Settings** → **Extensions** → **Advanced settings** → **Install Extension...**
27
+
2. Select the `.mcpb` file
28
+
3. Enter the path to your `events.json` when prompted
29
+
30
+
### Claude Desktop / Claude Code — npx
31
+
32
+
Add to your Claude MCP config (`claude_desktop_config.json` or project settings):
- Recommended event profile: choose these events to stay close to GitHub Notifications
101
+
- Recommended event profile:
65
102
- Issues
66
103
- Issue comments
67
104
- Pull requests
@@ -74,73 +111,93 @@ cloudflared tunnel run
74
111
75
112
If your webhook is temporarily set to `Send me everything`, start the receiver with `--event-profile notifications` and it will ignore noisy events such as `workflow_job` or `check_suite`.
The Node.js MCP server supports Claude Code's `claude/channel` capability (research preview, v2.1.80+). When enabled, new webhook events are pushed into your session automatically — no polling needed.
116
+
Use the bundled Codex wrapper if you want the webhook to launch `codex exec` immediately.
If you want webhook delivery to stay notification-only for a workspace, create a `.codex-webhook-notify-only`
132
+
file in that workspace. The bundled wrapper will skip direct Codex execution and leave the event pending.
133
+
134
+
### 6. Optional channel push notifications
135
+
136
+
The Node.js MCP server supports Claude Code's `claude/channel` capability (research preview, v2.1.80+). When enabled, new webhook events are pushed into your session automatically.
80
137
81
138
```bash
82
139
claude --dangerously-load-development-channels server:github-webhook-mcp
83
140
```
84
141
85
-
Channel notifications are enabled by default. To disable, set `WEBHOOK_CHANNEL=0` in the MCP server env.
142
+
Channel notifications are enabled by default. To disable, set `WEBHOOK_CHANNEL=0` in the MCP server environment.
86
143
87
-
### 7. Configure MCP server
144
+
##Examples
88
145
89
-
#### Option A: Claude Desktop — Desktop Extension (.mcpb)
146
+
###Example 1: Check whether any GitHub notifications are pending
90
147
91
-
Download `mcp-server.mcpb` from [Releases](https://github.com/Liplus-Project/github-webhook-mcp/releases), then:
148
+
**User prompt:** "Do I have any pending GitHub webhook notifications right now?"
92
149
93
-
1. Open Claude Desktop → **Settings** → **Extensions** → **Advanced settings** → **Install Extension...**
94
-
2. Select the `.mcpb` file
95
-
3. Enter the path to your `events.json` when prompted
150
+
**Expected behavior:**
96
151
97
-
#### Option B: Claude Desktop / Claude Code — npx
152
+
- Calls `get_pending_status`
153
+
- Returns pending count, latest event time, and event types
154
+
- Uses that summary to decide whether more detail is needed
98
155
99
-
Add to your Claude MCP config (`claude_desktop_config.json` or project settings):
156
+
### Example 2: Review the latest pending PR-related event
100
157
101
-
```json
102
-
{
103
-
"mcpServers": {
104
-
"github-webhook-mcp": {
105
-
"command": "npx",
106
-
"args": ["github-webhook-mcp"],
107
-
"env": {
108
-
"EVENTS_JSON_PATH": "/path/to/events.json"
109
-
}
110
-
}
111
-
}
112
-
}
113
-
```
158
+
**User prompt:** "Show me the latest pending pull request event and explain what changed."
114
159
115
-
#### Option C: Codex — config.toml
160
+
**Expected behavior:**
116
161
117
-
```toml
118
-
[mcp.github-webhook-mcp]
119
-
command = "npx"
120
-
args = ["github-webhook-mcp"]
162
+
- Calls `list_pending_events` to find the newest relevant event
163
+
- Calls `get_event` only for the selected event
164
+
- Summarizes the PR metadata and payload without dumping every event
121
165
122
-
[mcp.github-webhook-mcp.env]
123
-
EVENTS_JSON_PATH = "/path/to/events.json"
124
-
```
166
+
### Example 3: Mark an event as handled after triage
125
167
126
-
#### Option D: Python (legacy)
168
+
**User prompt:** "I already handled event `EVENT_ID`. Mark it processed so it stops appearing."
Copy file name to clipboardExpand all lines: mcp-server/manifest.json
+28-4Lines changed: 28 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,21 @@
1
1
{
2
2
"manifest_version": "0.3",
3
3
"name": "github-webhook-mcp",
4
-
"version": "0.3.0",
4
+
"display_name": "GitHub Webhook MCP",
5
+
"version": "0.3.1",
5
6
"description": "Browse pending GitHub webhook events. Pairs with a webhook receiver that writes events.json.",
7
+
"long_description": "GitHub Webhook MCP helps Claude review and react to GitHub notifications from a local event store. It surfaces lightweight pending-event summaries, exposes full webhook payloads on demand, and lets users mark handled events as processed without exposing the event file directly.",
0 commit comments