github webhook mcp
通过Cloudflare Worker+持久对象为Claude提供实时GitHub webhook通知。
建筑
GitHub ──POST──▶ Cloudflare Worker ──▶ Durable Object (SQLite)
│
├── MCP tools (Streamable HTTP)
├── WebSocket real-time stream
│
┌────────────────┘
│
Desktop / Codex: .mcpb local bridge ──▶ polling via MCP tools
Claude Code CLI: .mcpb local bridge ──▶ WebSocket → channel notifications- Cloudflare工作人员 接收GitHub webhooks,验证签名,将事件存储在SQLite的持久对象中。
- 本地MCP桥 (.mcpb)将工具调用代理到Worker,并可选择通过WebSocket连接以获得实时通道通知。
- 无需本地webhook接收器或隧道。
先决条件
| 组件 | 必填 |
|---|---|
| Node.js 18+ | MCP服务器 |
| Cloudflare帐户 | 工作者部署(自托管) |
入门指南
1.安装GitHub应用程序
安装 GitHub Webhook MCP 您的GitHub组织或帐户上的应用程序:
- 访问
- 选择要安装的组织或帐户
- 选择要授予访问权限的存储库(或所有存储库)
- 批准请求的权限
注: 当应用程序在更新后请求新权限时,您必须在GitHub通知或应用程序的安装设置中批准它们。在接受权限之前,Webhooks不会被传递。
重要提示: 不要为同一端点创建单独的存储库webhook。GitHub应用程序处理所有webhook交付——存储库webhook会导致重复或格式错误的请求。
2.设置MCP客户端
继续 安装指南 将您的AI助手连接到webhook服务。
安装
请参阅 安装维基页面 有关完整的设置指南,包括:
- 快速开始 使用预览实例
- MCP客户端设置 适用于Claude Desktop、Claude Code CLI和Codex
- 自助托管指南 用于Cloudflare Workers部署
用法示例
示例1:检查挂起的webhook状态
用户提示:
“有新的GitHub通知吗?”
预期产量: AI呼叫 get_pending_status 并返回摘要:
You have 3 pending webhook events:
- 2 push events
- 1 pull_request event示例2:检查特定事件
用户提示:
“显示最新拉取请求事件的详细信息。”
预期产量: AI呼叫 list_pending_events 找到PR事件,然后 get_event 使用事件ID检索完整有效载荷:
PR #42 "Fix login timeout" was opened by @alice in repo acme/web-app
Branch: fix/login-timeout → main
Status: open
Changed files: 3示例3:审核后处理事件
用户提示:
“我已经查看了所有推送通知,并将其标记为已完成。”
预期产量: AI呼叫 list_pending_events 要查找推送事件,则 mark_processed 对于每一个:
Marked 2 push events as processed:
- Push to main by @bob (3 commits)
- Push to develop by @alice (1 commit)示例4:通过webhooks监控CI状态
用户提示:
“CI检查通过了我最近的PR吗?”
预期产量: AI呼叫 list_pending_events 寻找 check_run 与公关相关的事件,然后 get_event 详细信息:
CI results for PR #42 "Fix login timeout":
- build (ubuntu-latest): ✓ passed
- lint: ✓ passed
- test (node-18): ✓ passed
All checks passed.MCP工具
| 工具 | 说明 |
|---|---|
get_pending_status | 按类型列出的挂起事件计数的轻量级快照 |
list_pending_events | 未决事件摘要(无完整有效载荷) |
get_event | 按ID显示单个事件的完整有效载荷 |
get_webhook_events | 所有待处理事件的完整有效载荷 |
mark_processed | 将事件标记为已处理 |
单体仓库结构
worker/ — Cloudflare Worker + Durable Objects
local-mcp/ — Local stdio MCP bridge (TypeScript, dev)
mcp-server/ — .mcpb package for Claude Desktop
shared/ — Shared types and utilities隐私政策
事件存储在Cloudflare持久对象(边缘存储)中。本地MCP网桥代理工具调用Worker,不在本地存储事件数据。
- 扩展隐私政策:https://smgjp.com/privacy-policy-github-webhook-mcp/
支持
- GitHub问题:https://github.com/Liplus-Project/github-webhook-mcp/issues
- 维基 (英文)
- 要求: docs/0-requirements.md
相关
- Liplus项目/Liplus语言 --Li+语言规范
