
Neutra
io.github.emokeo由 GitHub 账号 emokeo 发布v0.2.0更新于 Nov 6, 2026
Two people's AI assistants find a meeting time without either seeing the other's calendar.
概览
Neutra 是一个远程 MCP 服务器,让两个人的 AI 助手在不查看彼此日历的情况下私下比对空闲时间并确定会议时间。
- 可以做什么
- 用本人的空闲时间和会议时长发起一个决策,返回一个代码和一条可转发的消息
- 用该代码和本人的空闲时间回答他人的决策,匹配成功时发送日历邀请
- 查询决策状态和匹配到的会议时间,或取消自己发起的决策及其邀请
- 读取自己提交的回答
- 向开发者提交并查看功能请求
- 适用场景
- 适合两个人希望由各自的助手跨不同助手协商会议时间、同时保持各自空闲时间私密的场景。当对方没有助手时,也可以通过简单的登录网页作答。
- 运行要求
- 远程端点 neutra.day,作为自定义连接器添加,无需本地安装。需要 Google 登录,服务器只使用你的姓名和邮箱。双方都需要支持 MCP 的助手,或由应答方使用浏览器页面。
安装
在 SourceWeft 中
- 打开 控制台中的 Neutra,将其添加到工作区。
- 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.emokeo%2Fneutra/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。
{
"mcpServers": {
"neutra": {
"type": "http",
"url": "https://neutra.day/mcp"
}
}
}README
Neutra
A neutral place where people's AI assistants agree on things for them, without anyone seeing anyone else's data.
Today it does one thing: two people's assistants find a time to meet. Each assistant tells Neutra when its person is free. Neutra finds a common time and sends one calendar invite to both. Neither side ever sees the other's times.
It works across assistants: Anna can use Claude and Ben another assistant, as long as both support MCP connectors. Ben can also answer without an assistant: the message includes a link to a simple page where he signs in with Google and adds the times he's free.
Privacy, by design
- No AI on Neutra's side. Neutra is plain code that compares time ranges. Your times never go into an AI model of ours.
- Nobody sees anyone's times. Only the matched meeting time comes back. The other person's times are never returned, and the code is stored only as a hash.
- Times are deleted as soon as a decision is settled, at the latest after 14 days. The person answering never has their times stored at all.
- Retries can't map a calendar. The person answering gets at most 3 tries, and each answer must cover at least twice the meeting length, so nobody can probe your free time slot by slot.
- Data stays in the EU, in Cloudflare's EU jurisdiction.
- Checked by tests:
test/decisions.test.tsverifies that no times or codes appear in any response.
Details: privacy page.
Try it
- In Claude: Customize → Connectors → Add custom connector, URL
https://neutra.day/mcp, then Add. - Sign in with Google. Neutra uses only your name and email: to send the invite to the right address, and so that only you can answer.
- Ask: "Use Neutra to find an hour with Ben next week. I'm free Tuesday and Thursday, 18:00–21:00." Forward the message it gives you.
For agent builders
A remote MCP server with Google sign-in. Resources follow Google's AIPs: decisions/{decision} and decisions/{decision}/answers/{answer}.
Errors use google.rpc codes: NOT_FOUND, PERMISSION_DENIED, FAILED_PRECONDITION, INVALID_ARGUMENT, RESOURCE_EXHAUSTED (a daily or hourly limit was reached).
Running Neutra
Runs on Cloudflare Workers with D1, based on Cloudflare's remote-mcp-google-oauth template. Every push to main is type-checked, tested and deployed by GitHub Actions (.github/workflows/deploy.yml); migrations in migrations/ are applied before each deploy. Changes go through pull requests.
Setup (done once)
Cloudflare
- Account ID and the
MCP_RESOURCEaddress are inwrangler.jsonc. The domainneutra.dayis attached to the Worker as a Custom Domain in the Cloudflare dashboard. - API token: "Edit Cloudflare Workers" template plus D1: Edit.
- The D1 database (EU jurisdiction) and the
OAUTH_KVnamespace were created once withwrangler d1 create neutra --jurisdiction euandwrangler kv namespace create OAUTH_KV; their IDs are inwrangler.jsonc.
Google Cloud (project neutra)
- Google Auth Platform: audience External, publishing status In production (testing mode makes refresh tokens expire after 7 days). Branding: home page and privacy links above, authorized domain
neutra.day. - Web client with redirect URI
https://neutra.day/callback, used by both the connector sign-in and the browser answer page (addhttps://developers.google.com/oauthplaygroundonly while making a new inviter key, andhttp://localhost:8788/callbackfor local dev). - Google Calendar API and Gmail API enabled.
- Sign-in asks only for email and profile. While
ACCESS_MODEisallowlist, onlyALLOWED_EMAILScan sign in.
Inviter ([email protected])
- Refresh token with scopes
calendar.eventsandgmail.send, obtained via the OAuth 2.0 Playground using the web client's own credentials (steps indocs/RUNBOOK.md).
GitHub secrets (Settings → Secrets and variables → Actions)
Local development
npm install, copy .dev.vars.example to .dev.vars and fill it in, then npm run dev. Test with npx @modelcontextprotocol/inspector@latest against http://localhost:8788/mcp.
License
MIT, see LICENSE. Includes code from Cloudflare's MIT-licensed templates.
来源:README.md,提交 b082232
工具
0版本历史
1- v0.2.0最新Nov 6, 2026
评分
已满足适用检查项的 75%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
请在仓库或注册中心条目中声明许可证。