关于 SecureInput
SecureInput 是面向编码 Agent 的本地开源 MCP 服务,用独立输入界面收集 API 密钥、密码或令牌,避免默认将秘密返回到聊天结果。凭据可交给本地命令或写入受限权限的 .env 文件。
主要功能
- 01内联表单或配对浏览器输入
- 02通过标准输入或环境变量交付
- 03安全写入 .env 文件
- 04请求状态查询与取消
- 05默认不在 MCP 结果中返回秘密
- 06仅监听本机回环地址
适用场景
- 01在不粘贴到聊天的情况下提供 API 密钥
- 02将凭据传给本地命令执行
- 03为项目更新 .env 配置
- 04让无头 Agent 请求一次性凭据
MCP 相关
它通过 stdio MCP 桥接器提供 request_secret 及状态查询、取消工具;支持内联表单的客户端可直接显示输入界面,其他客户端使用配对的本机浏览器。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SecureInput — 为 AI 编码 Agent 安全输入私密 API 密钥
让 AI 编码 Agent 获得所需的访问权限,而无需在聊天中粘贴 API 密钥。 SecureInput 是一个开源、本地优先的 Model Context Protocol(MCP)服务,用于管理 API 密钥、密码和令牌。主机支持时,它会在内嵌 MCP App 中收集输入;否则会在配对的 localhost 浏览器中收集。它可以通过 stdin 或环境变量将值传递给本地命令,也可以将值写入 .env 文件。
默认的 MCP 响应包含状态和退出信息,不包含机密。MCP 桥接专为 Claude Code、Cursor、Codex、VS Code / GitHub Copilot、Windsurf 和 Cline 等 stdio 客户端设计;是否能内嵌显示取决于主机对 MCP Apps 的支持。macOS 和 Linux 需要 Node.js 22 或更高版本。
agent: "I need a GitHub token to create the repo."
│
▼
request_secret (MCP)
│
▼
inline form in a compatible host, or paired localhost browser
│
▼
SecureInput daemon on 127.0.0.1
├── execute: gh auth login --with-token (token through stdin)
└── write_env: .env.local (plaintext file, mode 0600)
│
▼
agent: { "ok": true, "status": "completed", "exitCode": 0 }
为什么要开发它
编码 Agent 经常需要凭据。常见的做法都不理想:
| 做法 | 问题 |
|---|---|
| 在聊天中粘贴密钥 | 密钥会进入模型上下文、聊天记录、日志,还可能进入遥测数据。 |
| 让 Agent 打印终端命令 | 你必须手动运行;密钥可能留在 shell 历史记录或 ps 中。 |
| 在终端提示符中输入 | 虽然可行,但重复繁琐、容易输错,而且远程或无头 Agent 无法使用。 |
手动提交 .env | 容易设置错误的权限、重复密钥,或误提交文件。 |
SecureInput 为凭据提供独立的输入路径。默认情况下,它不会在 MCP 工具结果中返回该值。内嵌主机、你运行的命令,以及能够访问已写入 .env 文件的应用,仍属于信任边界。请参阅安全模型。
功能
- 原生支持 MCP — 一个工具
request_secret,以及轮询、取消和状态工具。 - 仅限本地 — 绑定到
127.0.0.1;使用配对令牌、签名会话 Cookie,并进行 Origin 和 CSRF 检查。 - 默认不在聊天中传递机密 — Agent 会收到请求状态和退出详情。stdout/stderr 不会包含在 MCP 结果中。
- 直接执行命令 — 不使用 shell;通过 stdin 或环境变量提供机密,绝不将其作为命令行参数传递。
- 安全写入
.env— 原子替换、0600权限、保留注释和换行符;仅允许.env和.env.*。 - 两种输入模式 — 紧凑的内嵌表单按 Enter 键提交;配对浏览器会显示请求详情,并为高风险操作提供额外确认。
- 一次性请求 — 待处理请求会过期,结果仅短暂保留,且每次提交只能领取一次。
- 纵深防御 — 使用兼容 RE2 的验证模式、值和输出大小上限、ANSI 清理、输出脱敏,以及不记录值的审计元数据。
- 精简的 shadcn/ui 前端 — UI 刻意保持简单:配对、请求列表、表单和结果。
- 可选返回模式 — 供确实需要获取该值的客户端使用;默认禁用,并明确标记为危险。
要求
- Node.js 22 或更高版本
- macOS 或 Linux(代码支持 Windows,但 CI 尚未覆盖)
- 兼容 MCP Apps 的主机;或者在同一台机器上使用浏览器作为备用方案
安装
Claude Desktop:下载捆绑包
- 从 GitHub Releases 下载
secureinput-release-0.1.0.mcpb。此捆绑包未经签名;安装前请检查源代码和发布内容。 - 在 Claude Desktop 中,打开 Settings → Desktop app → Manage(位于 Extensions 旁边;旧版本中为 Settings → Extensions),然后依次选择 Advanced settings → Install Extension…,并选择下载的文件。是否可用可能取决于组织设置。请参阅 Claude 的安装指南。
- 在 Claude 的连接器或扩展设置中确认 SecureInput 已连接,然后使用虚假密钥进行测试。内联输入取决于主机支持情况;否则,请使用配对的本地浏览器。
此捆绑包需要兼容 Node.js 22 的运行时,并支持 macOS 和 Linux。这是直接下载的捆绑包,并非 Claude 官方目录中的条目。要更新,请下载并安装更新版本的捆绑包;推送到 GitHub 不会自动更新已安装的副本。
从源代码安装
npm 包尚未发布。请从此仓库安装,或从 GitHub Releases 下载 MCP 捆绑包,以供兼容 MCPB 的客户端使用。此捆绑包需要 Node.js 22 或更高版本,目前未经签名。
git clone https://github.com/r69shabh/secureinput.git
cd secureinput
npm ci
npm run build
npm link # puts `secureinput` on your PATH
将 SecureInput 添加到你的 MCP 客户端。客户端首次连接时会自动启动本地守护进程。要自行启动并配对浏览器备用方案:
secureinput serve
内联请求不会打开浏览器。客户端需要使用浏览器备用方案时,如果启用了打开浏览器的功能,系统会自动打开其配对页面。你也可以手动打开并配对:
secureinput pair
你也可以检查一切是否正常运行:
secureinput status
secureinput doctor
守护进程监听 http://127.0.0.1:4780。配置文件位于 ~/.secureinput/,权限模式为 0600。
npm link仅供本地使用。也可以使用npm install -g .,或指定dist/cli/index.js的绝对路径。
浏览器或内联输入
本地内联组件重新构建后,已连接的 SecureInput 服务会自动通知资源已更新。支持 MCP 工具列表变更通知的客户端,无需重新连接即可在后续请求中使用新表单;已打开的表单仍会保留原版本。如果客户端不刷新工具元数据,可能需要重新连接。要安装此刷新功能本身,需要重启现有 MCP 进程一次。
在 GitHub 上推送更改不会在用户的电脑上安装更新:请先更新本地检出版本并重新构建。刷新机制只会更新组件;运行中的服务或守护进程如有更改,仍可能需要重启。SecureInput 不会在后台下载或执行更新。
在兼容的 MCP Apps 客户端上,内联输入为默认方式。如果客户端无法渲染,SecureInput 会自动打开配对的本地主机浏览器输入界面。支持内联请求时不会打开浏览器,按 Enter 键即可授权所请求的交付,无需额外的 SecureInput 确认对话框。宿主仍可能应用自身的 MCP 工具权限。
现有的浏览器专用显式偏好设置会保留。要将现有安装切换为优先使用内联输入:
secureinput settings --input-mode inline
secureinput stop
重新连接 MCP 客户端以应用更改后的设置。仅在希望强制使用浏览器输入时,才使用 secureinput settings --input-mode browser。
内联输入需要宿主声明 MCP Apps HTML 功能。仅支持文本的客户端会自动使用浏览器。两种模式都会将数据交付给同一套本地 execute 或 write_env 实现。内联表单只显示字段标签,以及带内嵌提交箭头的圆角轮廓输入框。在内联模式下,按 Enter 键即可授权所请求的交付,包括 Agent 明确要求的覆盖操作;浏览器流程则保留独立的审核控件。内联表单使用 AES-256-GCM 加密值和单次请求能力;每次都会生成新的 RSA-OAEP-SHA-256 密钥对来封装加密密钥。只有守护进程持有私钥。能力和公钥通过仅供组件使用的工具结果元数据提供;宿主必须确保这些元数据不会进入模型上下文。不支持内联模式下将数据返回给 Agent,此类操作会改用浏览器。
内联组件无需直接访问网络:它会通过宿主的 MCP 桥接器提交密文。这并不能防范会篡改组件代码或密钥的恶意宿主。本地浏览器与聊天宿主之间的隔离性更强。无论哪种模式,都不会对已获准命令的文件系统或网络访问进行沙盒隔离;仅仅使用终端命令也不能据此声称数据“永不用于训练”。
要对实际组件以及终端到环境变量的流程进行本地合成测试:
npm run build
npm run demo:host
打开打印出的回环 URL,然后提交一个虚构密钥。参考宿主会在受限 iframe 中渲染真实的 MCP App;演示用 Node 命令会在隔离的临时目录中创建 .env.inline-demo,并将其权限设为 0600。紧凑的内联表单不会显示命令供审核。此参考宿主是测试夹具,不能证明特定聊天产品支持内联应用。仅在经过单独评估的宿主中使用真实凭据。
连接你的编码 Agent
SecureInput 以 stdio MCP 桥接器的形式运行。第一个需要它的客户端会自动启动共享守护进程;浏览器只需配对一次。
Claude Code
claude mcp add secureinput -- secureinput mcp
运行 claude mcp list 检查连接。如果希望该配置在所有项目中可用,请在 secureinput 前添加 --scope user。
Cursor
添加到 ~/.cursor/mcp.json(或项目的 .cursor/mcp.json):
{
"mcpServers": {
"secureinput": {
"command": "secureinput",
"args": ["mcp"]
}
}
}
Codex CLI
使用 Codex CLI 注册服务:
codex mcp add secureinput -- secureinput mcp
codex mcp list
或者,添加到 ~/.codex/config.toml:
[mcp_servers.secureinput]
command = "secureinput"
args = ["mcp"]
VS Code / GitHub Copilot
添加到 .vscode/mcp.json:
{
"servers": {
"secureinput": {
"type": "stdio",
"command": "secureinput",
"args": ["mcp"]
}
}
}
任意 MCP 客户端
使用 stdio 服务,命令为 secureinput,参数为 mcp。
{
"mcpServers": {
"secureinput": {
"command": "secureinput",
"args": ["mcp"]
}
}
}
如果可执行文件不在 PATH 中,请使用 dist/cli/index.js 的绝对路径:
{
"mcpServers": {
"secureinput": {
"command": "node",
"args": ["/absolute/path/to/secureinput/dist/cli/index.js", "mcp"]
}
}
}
在 Agent 规则中加入类似以下说明,让 Agent 使用该工具,而不是要求用户粘贴密钥:
When you need an API key, password, or token, call the SecureInput MCP tool
request_secret. Do not ask me to paste secrets into chat. Prefer delivery
mode "execute" with the secret in stdin/env, or "write_env" for .env files.
MCP 工具
request_secret
创建安全输入请求,并可选择等待用户提交。
{
"title": "GitHub CLI login",
"description": "Authenticate gh so I can create and push the repository.",
"fields": [
{
"id": "token",
"label": "GitHub token",
"description": "A fine-grained token with repo access.",
"type": "password",
"minLength": 20
}
],
"delivery": {
"mode": "execute",
"command": "gh",
"args": ["auth", "login", "--with-token"],
"stdin": "{{token}}",
"timeoutSeconds": 60
},
"waitSeconds": 30
}
字段:
title— 简短的请求名称,最多 100 个字符。description— 说明需要该密钥的原因,最多 1000 个字符。cwd— 可选的工作目录,相对于 MCP 客户端的工作目录解析;解析结果必须位于允许的根目录内。fields— 1–10 个输入项。每项包含id、label、可选的description、type(password或text)、placeholder、minLength、maxLength、pattern(RE2)、required、sensitive和autocomplete。delivery—execute、write_env或return(默认禁用)。timeoutSeconds— 请求有效时长,30–900 秒。默认值为 300。waitSeconds— 此工具调用阻塞等待的时长,0–240 秒。默认值为 30。
如果用户在 waitSeconds 内尚未提交,结果为 { "requestId": "req_…", "status": "pending", "inputMode": "inline" }(或 "browser")。请使用返回的请求 ID 调用 check_secret_request。
check_secret_request
对现有请求进行长轮询。最多等待 45 秒。
{ "requestId": "req_…", "waitSeconds": 30 }
cancel_secret_request
取消仍处于待处理状态的请求。
{ "requestId": "req_…" }
secureinput_status
返回输入模式、返回模式状态以及待处理请求的 ID 和状态。完整的浏览器/API 策略响应保持不变。
传递模式
execute — 使用密钥运行命令
{
"mode": "execute",
"command": "gh",
"args": ["auth", "login", "--with-token"],
"cwd": ".",
"stdin": "{{token}}",
"env": {},
"timeoutSeconds": 120
}
- 命令会直接以
shell: false启动。SecureInput 不会进行 shell 插值。 - 密钥字段可以通过
{{fieldId}}出现在stdin或env值中,但不能出现在command或args中。在某些系统上,其他进程仍可能看到环境变量;如有条件,请优先使用 stdin。 - 非敏感的
text字段可用于args,例如用户名。 - 至少有一个密钥引用必须通过
stdin或env传递。 - stdout 和 stderr 不会提供给 Agent。配对的本地浏览器可以显示经过大小限制、尽力脱敏的输出。
- 子进程会收到基本的操作系统变量(如 PATH、HOME 和临时目录设置)、固定的终端设置,以及显式配置的传递 env 映射。不会继承其他守护进程环境变量。
- 超时后会终止进程组。
- 命令必须以非交互方式运行。不支持仅限 TTY 的登录流程;请改用该工具的令牌/非交互模式。
write_env — 写入 .env 文件
{
"mode": "write_env",
"path": ".env.local",
"mapping": {
"secret": "STRIPE_SECRET_KEY"
},
"overwrite": false
}
- 仅允许
.env和.env.*文件;文件名包含example、sample、template、dist、defaults或schema时会被拒绝。不接受.envrc等类似脚本的文件名。 - 父目录必须存在,且解析结果必须位于允许的根目录内。
- 不允许使用符号链接。
- 已有键需要设置
overwrite: true。浏览器会要求确认覆盖;内联提交则授权所请求的覆盖,无需单独确认。 - 写入是原子操作,生成的文件权限为
0600。会保留已有注释、export前缀、引号样式和换行符。 - 拒绝处理大于 1 MiB 的文件。
return — 将密钥返回给 Agent(危险)
默认禁用。启动守护进程时使用 --allow-return 以启用:
secureinput serve --allow-return
此设置会持久保存到配置文件中。返回模式会将密钥放入模型上下文和对话记录中。仅当 execute 和 write_env 无法解决问题时才使用此模式。
Agent 看到的内容
MCP 响应是精简的状态对象。完整请求详情仅通过仅供 widget 使用的 _meta 发送,不会在模型可见的内容中重复出现。输入待处理时,内嵌 widget 不会轮询。提交后,它会长轮询仅供应用使用的状态工具,使 UI 更新不会进入模型上下文。
已完成的 execute 请求如下所示:
{"requestId":"req_…","status":"completed","exitCode":0}
密钥不会出现在工具结果、请求对象、SSE 流、审计日志或服务日志中。
安全模型
SecureInput 面向本地桌面威胁模型构建,而非用于防范存在恶意用户的多用户主机。
请参阅安全与信任指南,了解示意图、数据位置和实用检查清单。
设计上受到保护
- 仅监听环回地址的服务,并通过 Host 标头检查拒绝 DNS 重绑定攻击。
- 256 位随机 MCP 和配对令牌,存储在权限为
0600的配置文件中。 - 配对令牌交换为签名的
HttpOnly、SameSite=Strict会话 Cookie。 - 浏览器状态变更请求会进行同源检查并使用自定义 CSRF 标头。
- 严格的 CSP、
frame-ancestors 'none'、不启用 CORS,以及 API 和 HTML 入口点上的 no-store。 - 单次请求认领、每个请求的 TTL、待处理请求上限和速率限制。
- 以恒定时间比较令牌,并对配对操作实施速率限制。
- 使用 RE2 验证模式,避免正则表达式拒绝服务攻击。
- 不会刻意将提交的字段值放入 URL、argv、日志、审计记录或错误消息中。初始配对 URL 包含单独的配对令牌;请妥善保密。
- 输出脱敏会处理每个密钥的原始形式、JSON 转义形式、URL 编码形式和 base64 形式,以及常见令牌格式。
- 使用
shell: false执行命令;超时后会终止进程组。 - 环境变量写入采用原子操作、权限为
0600、可防范符号链接,并限制在允许的根目录内。 - 风险评估会标记 shell/网络/绝对路径命令、环境变量覆盖和返回模式。浏览器流程会添加审核复选框;内嵌流程不会显示这些复选框,提交即表示授权传递。
- 审计日志仅记录元数据和结果:请求 ID、客户端、传递目标、字段名称、退出码和耗时。
保护范围之外
- 你批准的命令可能会外传密钥。审核准确的命令和目标位置是最后一道控制措施。
- 具有文件系统或终端访问权限的 Agent,可能会在写入
.env文件后读取该文件,或运行命令来读取它。如果不希望创建持久文件,请使用带 stdin 的execute。 - 同一用户下的恶意软件、root、受攻击的浏览器、恶意扩展程序或键盘记录器都可以读取你输入的任何内容。SecureInput 不声称能够阻止它们。
- 在某些系统上,同一用户运行的其他进程可能会看到环境变量。命令支持时,优先使用 stdin。
- 对经过转换的密钥(已哈希、拆分、加密或重新编码的输出),脱敏只能尽力而为。
- 待处理请求和密钥值仅保存在内存中。重启守护进程会丢弃这些内容。
.env文件是明文文件。SecureInput 会设置安全权限,但不会加密任何内容。
配置
默认配置目录:~/.secureinput/
| 文件 | 用途 |
|---|---|
config.json | 端口、令牌、允许的根目录、返回/审计/浏览器设置。权限为 0600。 |
runtime.json | 正在运行的守护进程 PID 和端口。 |
audit.jsonl | 仅包含元数据的审计记录。不含密钥值。 |
server.log | 守护进程日志。不含密钥值。 |
环境变量:
| 变量 | 含义 |
|---|---|
SECUREINPUT_HOME | 覆盖配置目录。 |
SECUREINPUT_NO_OPEN | 设为 1 可阻止自动打开浏览器。 |
SECUREINPUT_WEB_DIR | 覆盖已构建的 Web UI 目录。 |
允许的根目录默认为你的主目录。启动守护进程时可进一步收紧范围:
secureinput serve --root ~/projects
多个目录可重复使用 --root。首次运行时会解析并持久化这些值。更改后请重启守护进程。
CLI 参考
secureinput serve [--port 4780] [--root <path>]... [--allow-return]
[--no-open] [--no-audit] [--home <path>] [--web-dir <path>]
secureinput mcp [--home <path>] [--port <port>]
[--client-name <name>] [--client-version <version>]
secureinput pair [--home <path>] [--port <port>] [--no-open]
secureinput status
secureinput stop
secureinput doctor
serve运行守护进程并打开配对页面。mcp运行 stdio 桥接程序,并在需要时自动启动守护进程。pair在需要时启动守护进程,并输出配对 URL。status显示守护进程的运行状况、策略和待处理请求。stop停止守护进程。doctor检查 Node 版本、守护进程是否可访问,以及运行时 PID。
MCP 桥接程序会继承当前工作目录,并将其报告给守护进程。该目录必须位于允许的根目录内;否则请求会被拒绝,而不会静默回退。
HTTP API 和 HTTP MCP
守护进程还会公开一个无状态的 Streamable HTTP MCP 端点:
POST http://127.0.0.1:4780/mcp
Authorization: Bearer <mcpToken from ~/.secureinput/config.json>
Content-Type: application/json
对于偏好使用 HTTP 而非 stdio 的客户端或测试框架,这很实用。该端点使用 JSON 响应,而不是长连接 SSE 会话。它仍仅限环回访问,并且需要 MCP 令牌。
浏览器 UI 使用 /api 下经过身份验证的 REST 和 SSE 端点。这些属于实现细节,可能会发生变化;MCP 工具则是稳定的接口。
选择交付方式
| 方法 | 适用场景 | 持久化内容 |
|---|---|---|
使用 stdin 的 execute | 接受通过 stdin 传入令牌的非交互式 CLI 登录或命令 | 命令可能会自行存储凭据 |
使用环境变量的 execute | 需要环境变量的命令 | 命令可能会存储凭据;同一用户的其他进程可能会看到该命令的环境变量 |
write_env | 读取 .env 文件的本地应用 | 仅所有者可访问的明文文件 |
当你需要在 SecureInput 中查看目标位置和风险确认信息时,请使用浏览器输入模式。紧凑的内联形式会显示输入标签并立即提交,不会显示浏览器的审核界面。无论使用哪种模式,都必须有人输入该值。
常见问题
编码 Agent 能看到我的 API 密钥吗?
默认情况下,MCP 结果不会主动返回该密钥。Agent 会看到请求 ID、状态和退出代码;标准输出和标准错误会保留在本地。获准执行的命令仍可能写入或传输这些值,而具有终端或文件系统访问权限的 Agent 可能能够读取已写入的 .env 文件。return 模式会明确将该值提供给 Agent,除非使用 --allow-return 启动守护进程,否则此模式处于禁用状态。
我可以在 Agent 聊天中输入机密吗? 可以,默认支持兼容的 MCP Apps 宿主。小组件会先加密提交内容,再通过宿主传递给本地守护进程。它使用相同的本地命令/环境文件交付实现;按 Enter 键即表示授权内联交付,而浏览器仍保留审核控件。宿主仍控制渲染和小组件元数据,因此只能在你信任的宿主中使用内联输入。请参阅下方的输入模式设置。这并不表示它兼容所有聊天客户端。
机密存储在哪里?
SecureInput 会在进程内存中保留待处理请求和提交的值,并在交付后丢弃引用;但无法保证 JavaScript 内存会被清零。write_env 会按预期将明文写入你批准的 .env 文件。命令也可能自行持久化凭据。已完成请求的元数据会在内存中保留 10 分钟,只有元数据会写入审计日志。
它能与 Claude Code 配合使用吗?
可以。运行 claude mcp add secureinput -- secureinput mcp。相同的 stdio 桥接也适用于 Cursor、Codex CLI、VS Code Copilot、Cline、Windsurf 和其他 MCP 客户端。
它能与 Cursor 配合使用吗?
可以。将上方所示的 mcpServers 条目添加到 Cursor 的 MCP 配置中。
为什么不直接使用密码管理器? 密码管理器很适合人类使用,但它不是 MCP 交付途径。SecureInput 专注于将机密交付给特定命令或环境文件,并提供可审计的目标,且无需 Agent API 密钥。
Agent 能读取我的整个环境吗? 命令会接收一小组操作系统环境变量,以及交付映射中明确提供的值。它仍以你的操作系统用户权限运行,并可能读取文件或凭据存储。浏览器模式会显示命令,并为高风险请求添加确认步骤;紧凑内联模式不会显示这些详细信息。请使用权限范围尽可能小的凭据。
如果守护进程重启,会发生什么? 待处理请求和已完成结果都会丢失。Agent 会收到“找不到请求”错误,并可创建新请求。这是有意为之:不设机密保险库,也不保留过期凭据。
我可以通过 SSH 或在开发容器中使用它吗? 守护进程只监听 loopback。如果浏览器和 Agent 在同一台机器上运行,就可以使用。对于远程容器,请通过 SSH 转发端口,并从该机器的浏览器会话进行配对;不要将端口 4780 暴露到公网。远程/多用户托管不在支持范围内。
Windows 怎么样? 代码会处理 Windows 进程终止和路径,但目前 CI 仅在 Linux 上运行。现阶段请将 Windows 支持视为尽力而为。
浏览器 UI 是否仅使用 shadcn/ui 构建? UI 使用 shadcn/ui 组件、Radix 原语、Tailwind 和 lucide 图标。没有第三方 UI 套件或外部资源。
开发
npm ci
npm run typecheck
npm test
npm run build
npm run dev会构建 Web UI 并启动守护进程,但不会打开浏览器。npm run dev:web会在端口 5173 上运行 Vite,并将/api代理到守护进程。npm test会运行 node:test 单元测试和集成测试,包括身份验证、CSRF、Origin/Host 拒绝、SSE、通过 HTTP 的 MCP、一次性提交、过期处理、脱敏、环境文件写入以及 stdio 桥接行为。
项目结构:
src/shared/ schemas, validation, redaction, env parser
src/server/ daemon, auth, policy, request service, delivery, audit
src/mcp/ stdio bridge
src/cli/ command-line entry point
src/web/ React + Vite + Tailwind + shadcn/ui
test/ node:test unit and integration tests
有关详细设计和威胁模型,请参阅 PLAN.md;有关漏洞报告,请参阅 SECURITY.md;有关贡献指南,请参阅 CONTRIBUTING.md。
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。