GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Turn GitHub pushes into plain-English client update emails. Map repos to clients and review digests.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://relay-vishnu.fly.dev/mcpพิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http relay https://relay-vishnu.fly.dev/mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"relay": {
"url": "https://relay-vishnu.fly.dev/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"relay": {
"type": "http",
"url": "https://relay-vishnu.fly.dev/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://relay-vishnu.fly.dev/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub vishnumuthyalu ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.1) เข้า registry 14 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Plain-English client updates from every GitHub push
Live at [relay-vishnu.fly.dev](https://relay-vishnu.fly.dev/dashboard). Install the GitHub App, then add https://relay-vishnu.fly.dev/mcp to your MCP client, find Relay in the MCP Registry, or install the extension from the VS Code Marketplace or Open VSX.
Relay is a GitHub App for freelancers and agencies. Install it on your repositories, map each one to a client, and every push to the main branch becomes a short, jargon-free email summary written by Claude. Clients confirm by email before anything is sent, and every digest has a one-click unsubscribe.
sequenceDiagram
participant Dev participant GitHub participant Web as Relay web participant Queue as Postgres (pg-boss) participant Worker as Relay worker participant Claude participant Resend participant Client
Dev->>GitHub: git push GitHub->>Web: POST /webhook/github (HMAC-signed, installation id) Web->>Web: verify signature, claim X-GitHub-Delivery alt duplicate, filtered, or client not confirmed Web-->>GitHub: 200 duplicate / filtered else new push for an active mapping Web->>Queue: enqueue process-push Web-->>GitHub: 202 accepted Queue->>Worker: job Worker->>Claude: summarize commits (structured output), unless over the monthly cap Claude-->>Worker: validated summary Worker->>Resend: digest email + List-Unsubscribe Resend-->>Client: digest end
CLAUDE_ENABLED kill switch./dashboard for people who don't use MCP.Prerequisites: Node.js 22.12+, Docker (for Postgres), a GitHub App, an Anthropic API key and a Resend API key.
git clone https://github.com/vishnumuthyalu/relay-extension.git
cd relay-extension npm install cp .env.example .env # fill in the values; see docs/github-app.md docker compose up -d db # Postgres on localhost:5432 (dev + test databases) npm run migrate npm run dev # web process on :3000 npm run dev:worker # worker process, in a second terminal
GitHub must reach your machine for webhooks and sign-in, so run a tunnel (ngrok http 3000) and use its URL as PUBLIC_URL and in the app settings.
Then:
PUBLIC_URL/install and install the app on a repository.PUBLIC_URL/dashboard and sign in with GitHub.node simulate-webhook.js.To run everything in containers instead: docker compose up --build.
One image, two processes (web, worker), one Postgres. The hosted instance runs on Fly.io (one web and one worker machine) with Supabase Postgres; migrations run as Fly's release command before each deploy. See docs/deploy.md. Tags drive releases: v* deploys the backend and updates the MCP Registry entry, and ext-v* publishes the VS Code extension.
All settings are environment variables; .env.example lists and explains each one. The web and worker processes refuse to start if a required value is missing.
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL | Yes | Postgres connection string |
PUBLIC_URL | Yes | Public base URL (webhooks, sign-in callback, email links) |
SESSION_SECRET | Yes | 32+ random characters; signs sessions and email links |
GITHUB_APP_SLUG, GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GITHUB_WEBHOOK_SECRET | Yes | From the GitHub App |
ANTHROPIC_API_KEY | Unless CLAUDE_ENABLED=false | Claude API key |
RESEND_API_KEY, FROM_EMAIL | Yes | Email delivery (verify your sending domain in Resend) |
ANTHROPIC_MODEL | No | Default claude-haiku-4-5 |
DIGEST_MONTHLY_CAP | No | Claude-written digests per installation per month, default 100 |
CLAUDE_ENABLED | No | false sends plain digests for everyone |
GITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY | No | Pull request context in summaries |
INTEGRATIONS_KEY | No | Encrypts ticket-tracker tokens; enables tracker connections |
The JSON API is described in spec/openapi.yaml and validated at runtime. It uses the session cookie from Sign in with GitHub.
| Method | Path | Purpose |
|---|---|---|
GET | /api/me | You and the installations you can manage |
GET | /api/installations/{id}/mappings | Client mappings with status (pending, active, unsubscribed) |
PUT | /api/installations/{id}/mappings/{owner}/{repo} | Create or update a mapping; sends the confirmation email |
DELETE | /api/installations/{id}/mappings/{owner}/{repo} | Stop digests for a repository |
POST | /api/installations/{id}/mappings/{owner}/{repo}/test | Send a sample digest to a confirmed client |
GET | /api/installations/{id}/digests | Digest history |
GET | /api/installations/{id}/usage | This month's usage against the cap |
Other routes: POST /webhook/github (GitHub App deliveries), /mcp (remote MCP), /oauth/* and /.well-known/* (OAuth for MCP clients), /dashboard, /auth/login, /auth/callback, POST /auth/logout, /install, /confirm, /unsubscribe, /privacy, /health, /ready.
Remote: add https://relay-vishnu.fly.dev/mcp to your MCP client (or https:// /mcp for your own deployment). For example:
claude mcp add --transport http relay https://relay-vishnu.fly.dev/mcp
Local, against your own database:
RELAY_INSTALLATION_ID=12345678 npm run mcp # stdio server for one installation
npm run mcp:inspect # open it in the MCP Inspector
Client setup is in docs/mcp.md, and the tool contract is in spec/mcp-tools.md.
Tests run against a real Postgres: each test file gets its own schema, so suites run in parallel. docker compose up -d db creates the relay_test database.
npm test
npm run lint npx @stoplight/spectral-cli lint spec/openapi.yaml --ruleset .spectral.yaml
CI runs the same steps on Node 22 and 24 with a Postgres service container, and fails if coverage drops (npm run test:coverage).
relay-extension/
├── server.js # Web process: webhooks, sign-in, API, email link pages ├── worker.js # Worker process: sends digests from the queue ├── lib/ │ ├── config.js # Env validation │ ├── db/ # Postgres pool, migrations runner, tenant-scoped queries │ ├── jobs/process-push.js # One delivery: caps, Claude or fallback, email, records │ ├── queue.js # pg-boss setup │ ├── service.js # Per-installation operations shared by API and MCP │ ├── pipeline.js # Summarize + email │ ├── claude.js # Claude structured outputs + schema validation │ ├── email.js # Email HTML, unsubscribe headers, Resend │ ├── links.js # Signed confirm/unsubscribe links │ ├── github.js # GitHub OAuth (Sign in with GitHub) │ ├── oauth/ # MCP authorization server: clients, tokens, JWT │ ├── context/ # Optional PR and ticket context for summaries │ ├── github-app.js # GitHub App JWT and installation tokens │ ├── crypto-box.js # AES-256-GCM for stored tracker tokens │ ├── html.js, csrf.js # Server-rendered pages and form protection │ ├── security.js # Webhook HMAC verification │ └── retry.js # Retry with backoff for Claude and Resend ├── routes/ # webhook, mcp, oauth, auth, dashboard, api, email links ├── migrations/ # Numbered SQL migrations ├── mcp/ # MCP server, tools, resources, stdio entrypoint ├── spec/ # OpenAPI, JSON Schemas, webhook and MCP contracts ├── tests/ # Jest suites + helpers (per-file Postgres schema) ├── extension/ # VS Code extension: registers the remote MCP server ├── server.json # MCP Registry entry ├── fly.toml # Fly.io deployment (web + worker, migrations on release) ├── docs/ # GitHub App, MCP, summaries, deployment, ADRs, sequence diagram ├── docker-compose.yml └── Dockerfile
httpOnly cookies with SameSite=Lax. The JSON API only accepts JSON bodies, which blocks cross-site form posts.PUBLIC_URL/mcp (RFC 8707). PKCE is mandatory, authorization codes are single-use, refresh tokens rotate, and both are stored only as hashes. The /mcp endpoint checks the Host header against DNS rebinding.MIT