GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Descripción del creador (original en inglés)
Turn GitHub pushes into plain-English client update emails. Map repos to clients and review digests.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://relay-vishnu.fly.dev/mcpEjecuta esto en tu terminal
claude mcp add --transport http relay https://relay-vishnu.fly.dev/mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"relay": {
"url": "https://relay-vishnu.fly.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"relay": {
"type": "http",
"url": "https://relay-vishnu.fly.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://relay-vishnu.fly.dev/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
El servidor pide iniciar sesión antes de mostrar sus herramientas.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub vishnumuthyalu, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Respondió en 290 ms (HTTP 401)
Declara inicio de sesión con OAuth, así que tu app de IA puede llevarte a iniciar sesión
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (1.0.1) llegó al registro hace 15 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: GitHub, Desktop Commander, Cloudflare MCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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