
Relay
io.github.vishnumuthyalu由 GitHub 账号 vishnumuthyalu 发布v1.0.1更新于 Oct 24, 2026
Turn GitHub pushes into plain-English client update emails. Map repos to clients and review digests.
概览
Relay 把 GitHub 推送转成通俗易懂的客户更新邮件,助手可通过托管 MCP 端点把仓库映射到客户并查看摘要。
- 可以做什么
- 把仓库映射到客户,并创建、更新或删除这些映射
- 查看摘要历史记录和本月用量与套餐上限
- 向已确认的客户发送示例摘要
- 登录 GitHub 后,使用与 JSON API 共享的按安装实例划分的操作
- 适用场景
- 适合自由职业者和小型代理机构:希望客户收到仓库推送的简短、无术语摘要,并倾向于通过对话让助手完成客户映射的设置与查看,而不是使用网页仪表盘。
- 运行要求
- 远程 MCP 端点 relay-vishnu.fly.dev/mcp,需通过 GitHub 进行 OAuth 2.1 登录。需在仓库上安装 Relay GitHub App,且每位客户须先通过邮件确认才会收到摘要。自托管需要 Node.js 22.12+、带 Postgres 的 Docker、GitHub App、Anthropic API 密钥和 Resend API 密钥。
安装
在 SourceWeft 中
- 打开 控制台中的 Relay,将其添加到工作区。
- 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.vishnumuthyalu%2Frelay/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。
{
"mcpServers": {
"relay": {
"type": "http",
"url": "https://relay-vishnu.fly.dev/mcp"
}
}
}README
Relay
Plain-English client updates from every GitHub push
Live at relay-vishnu.fly.dev. 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.
How it works
- GitHub App: one install connects any number of repositories, and no personal access tokens are needed (ADR 002).
- Multi-tenant: every row belongs to an installation, users are authorized by the installations GitHub says they can access, and uninstalling deletes that tenant's data.
- Postgres + pg-boss: the webhook replies 202 immediately, and a separate worker sends digests with retries and backoff (ADR 003).
- Consent built in: double opt-in confirmation, signed one-click unsubscribe (RFC 8058), and confirm/unsubscribe pages that only change state on POST.
- Cost controls: per-installation monthly cap on Claude-written digests (plain digests past it), token usage tracking, and a
CLAUDE_ENABLEDkill switch. - Spec-first: OpenAPI 3.1 and JSON Schema contracts enforced at runtime and in CI.
- Remote MCP server with OAuth 2.1: add one URL to Claude Code, Claude Desktop, VS Code or Cursor, sign in with GitHub, and manage Relay by chatting (docs/mcp.md, ADR 004, ADR 005).
- Dashboard: a small server-rendered UI at
/dashboardfor people who don't use MCP. - Richer summaries (opt-in): merged PR descriptions from GitHub, and issue details from the tenant's ticket tracker through Anthropic's MCP connector, with read-only tool allowlists and fallbacks (docs/summaries.md).
Running locally
Prerequisites: Node.js 22.12+, Docker (for Postgres), a GitHub App, an Anthropic API key and a Resend API key.
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:
- Open
PUBLIC_URL/installand install the app on a repository. - Open
PUBLIC_URL/dashboardand sign in with GitHub. - Map the repository to a client in the dashboard, with the API (below) or with the MCP tools. The client receives a confirmation email.
- After the client confirms, push to the default branch, or run
node simulate-webhook.js.
To run everything in containers instead: docker compose up --build.
Deploying
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.
Configuration
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.
API
The JSON API is described in spec/openapi.yaml and validated at runtime. It uses the session cookie from Sign in with GitHub.
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.
MCP server
Remote: add https://relay-vishnu.fly.dev/mcp to your MCP client (or https://<host>/mcp for your own deployment). For example:
Local, against your own database:
Client setup is in docs/mcp.md, and the tool contract is in spec/mcp-tools.md.
Testing
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.
CI runs the same steps on Node 22 and 24 with a Postgres service container, and fails if coverage drops (npm run test:coverage).
Project structure
Security
- Webhooks are verified with HMAC-SHA256 (constant-time) before anything else reads the body.
- Delivery IDs are claimed atomically, so duplicates and redeliveries never send twice.
- Sessions are signed
httpOnlycookies withSameSite=Lax. The JSON API only accepts JSON bodies, which blocks cross-site form posts. - Tenant data is always queried by installation, and other tenants' installations return 404.
- Email links are HMAC-signed and bound to the current address. Changing a client's email invalidates old links.
- Everything rendered into email or pages is HTML-escaped. Commit text is passed to Claude as untrusted data, and replies are schema-validated.
- No GitHub tokens are stored.
- MCP access tokens are bound to
PUBLIC_URL/mcp(RFC 8707). PKCE is mandatory, authorization codes are single-use, refresh tokens rotate, and both are stored only as hashes. The/mcpendpoint checks the Host header against DNS rebinding.
License
MIT
来源:README.md,提交 c454b50
工具
0版本历史
1- v1.0.1最新Oct 23, 2026
评分
已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分