mcpField
V
Vaulted MCP Server — Encrypted Secret Sharing for AI Agents

Vaulted MCP Server — Encrypted Secret Sharing for AI Agents

本地服务
github.com/vaulted-fyiAI 与智能体14 天前更新

关于 Vaulted MCP Server — Encrypted Secret Sharing for AI Agents

Vaulted MCP Server 让 AI Agent 创建和获取加密且会过期的机密。环境变量、文件和 dotenv 键在本地解析,值不会进入 LLM 上下文。

主要功能

  1. 01创建阅后即焚的机密链接
  2. 02在本地解析环境变量、文件和 dotenv 输入
  3. 03使用 AES-256-GCM 加密
  4. 04通过浏览器、剪贴板或文件获取机密
  5. 05跟踪状态和本地历史记录

适用场景

  1. 01分享环境变量而不向 Agent 暴露其值
  2. 02在对话历史之外传递解密后的机密
  3. 03检查共享机密是否已被查看

MCP 相关

提供 create_secret、view_secret、check_status 和 list_secrets 四种 MCP 工具。通过 stdio 通信,可配置给兼容 MCP 的客户端使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vaulted": {
"command": "npx",
"args": [
"-y",
"@vaulted/mcp-server"
]
}
}
}
启动命令npx -y @vaulted/mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@vaulted/mcp-server

工具

3

收录的工具列表 · 更新于 3 周前

参数类型必填说明
contentstring是要加密并分享的密文内容。最多 1000 个字符。
max_viewsenum否密文自毁前可查看的次数上限。默认值为 1。1 | 3 | 5 | 10
expiryenum否密文过期前的时长。默认值为 24h。1h | 2h | 6h | 12h | 24h | 3d | 7d | 14d | 30d
passphrasestring否用于额外保护的可选密码短语。收件人需要输入此密码短语才能查看密文。

详细介绍

@vaulted/mcp-server

npm version license

直接通过 Claude Desktop、Cursor、Windsurf 和任何兼容 MCP 的 AI 工具分享加密的阅后即焚秘密。

  • 🔒 零知识端到端加密(AES-256-GCM,密钥绝不会发送到服务端)
  • 🙈 Agent 不可见的输入:分享环境变量、文件和 .env 密钥,而不将其暴露在上下文中
  • 🛠️ 4 个工具:create_secret、view_secret、check_status、list_secrets
  • 📋 本地历史记录,并实时跟踪状态
  • 💻 适用于 Claude Desktop、Cursor、Windsurf、Claude Code、VS Code

Agent 不可见的秘密分享

核心功能:敏感值在本地解析,绝不会传递给大模型。当你让 Agent 分享环境变量或文件时,MCP 服务会直接从你的计算机读取值,Agent 看到的始终只有安全链接,而不是秘密本身。

"Share the value of my STRIPE_SECRET_KEY env var"
→ Agent passes: env:STRIPE_SECRET_KEY  (never sees the value)
→ Server resolves it locally, encrypts, returns the link

这意味着敏感值绝不会出现在对话历史记录或大模型的上下文中。

安装

需要 Node.js ≥ 18。

通过 npx 即可使用,无需安装:

npx -y @vaulted/mcp-server

也可以全局安装:

npm install -g @vaulted/mcp-server
vaulted-mcp-server

快速开始

将配置添加到 MCP 宿主并重启应用。你的 Agent 将立即获得全部 4 个 Vaulted 工具的使用权限。

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}

配置

Claude Desktop

文件:~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}
Cursor

文件:~/.cursor/mcp.json

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}
Windsurf

文件:~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}
Claude Code

项目根目录中的文件 .mcp.json(或全局文件 ~/.claude/.mcp.json):

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}
VS Code

文件:.vscode/mcp.json

{
  "servers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server"]
    }
  }
}
任何其他 MCP 客户端

运行 npx @vaulted/mcp-server,将其作为 stdio 传输。该服务使用标准 MCP stdio 协议。

可选标志
标志默认值描述
--base-urlhttps://vaulted.fyiVaulted API 基础 URL(用于可自托管实例)
--allowed-dirs(none)可访问的文件输入源目录,以逗号分隔(扩展 CWD)

通过 args 数组传递标志:

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server", "--base-url", "https://your-instance.example.com"]
    }
  }
}

多个允许的目录:

{
  "mcpServers": {
    "vaulted": {
      "command": "npx",
      "args": ["-y", "@vaulted/mcp-server", "--allowed-dirs", "/home/user/secrets,/tmp/creds"]
    }
  }
}

工具参考

create_secret

加密并存储机密,返回可分享的自毁链接。

参数类型默认值描述
contentstring必填要加密的机密(最多 1000 个字符)。支持Agent 盲传前缀。
max_views"1" | "3" | "5" | "10""1"自毁前可查看的次数
expiry"1h" | "2h" | "6h" | "12h" | "24h" | "3d" | "7d" | "14d" | "30d""24h"过期时间
passphrasestring(无)可选的密码保护
labelstring(无)便于阅读的本地历史记录标签

返回: { success: true, data: { url, statusUrl, expiresIn, maxViews, passphraseProtected }, message }


view_secret

从 Vaulted URL 检索并解密机密。默认在浏览器中打开;使用 output_mode 可避免解密后的值进入对话。

参数类型默认值描述
urlstring(二选一必填)完整的 Vaulted URL,包括 # 片段
secret_idstring(二选一必填)机密 ID(可替代 url)
encryption_keystring(使用 secret_id 时)URL 片段中的加密密钥(使用 secret_id 时必填)
output_mode"browser" | "clipboard" | "file" | "direct""browser"解密后的值的发送位置
file_pathstring(无)当 output_mode 为 "file" 时必填
passphrasestring(无)对受密码保护的机密为必填

输出模式:

  • browser — 在默认浏览器中打开机密 URL(在浏览器中解密,值不会进入 Agent 上下文)
  • clipboard — 将解密后的值复制到剪贴板,不向 Agent 返回任何内容
  • file — 将解密后的值写入 file_path,不向 Agent 返回任何内容
  • direct — 在响应中返回解密后的值(请谨慎使用——该值会进入 Agent 上下文)

返回: 取决于 output_mode。浏览器、剪贴板和文件模式会确认操作成功,但不会返回明文。


check_status

检查密钥被查看的次数,以及密钥是否仍处于有效状态。不会消耗查看次数。

参数类型默认值描述
urlstring(一个必需)状态 URL(例如,https://vaulted.fyi/s/<id>/status?token=...)
secret_idstring(一个必需)密钥 ID(可替代 url)
status_tokenstring(需与 ID 搭配)创建密钥时生成的状态令牌(与 secret_id 搭配时必需)
previousViewsnumber(无)传入上次已知的查看次数,以检测自上次检查后是否有新的查看。当次数增加时,响应会包含“检测到新的查看!”

返回: { success: true, data: { views, maxViews, status, expiresAt }, message }


list_secrets

显示本地跟踪的所有密钥,以及从 API 获取的实时状态。

参数类型描述
(无)—无参数

返回: { success: true, data: { entries: [...], suggestedAction? }, message }

当存在尚未消耗且处于有效状态的密钥时,会包含 suggestedAction,提示你使用 check_status 进行监控。


响应格式

所有工具都使用一致的响应结构:

// Success
{ "success": true, "data": { /* tool-specific */ }, "message": "Human-readable summary" }

// Error
{ "success": false, "error": { "code": "SECRET_EXPIRED", "message": "...", "suggestion": "..." } }

错误代码: SECRET_EXPIRED、SECRET_CONSUMED、PASSPHRASE_REQUIRED、ENV_VAR_NOT_FOUND、FILE_NOT_FOUND、PATH_TRAVERSAL_BLOCKED、DOTENV_KEY_NOT_FOUND、API_UNREACHABLE、API_ERROR、ENCRYPTION_FAILED、FILE_WRITE_ERROR、INVALID_INPUT

示例

创建密钥
"Share this API key securely: sk-abc123"

→ 在聊天中返回一个一次性链接。通过 Slack、电子邮件或工单分享。

Agent 不可见:分享环境变量
"Share the value of my GITHUB_TOKEN env var securely"

→ Agent 将 env:GITHUB_TOKEN 传递给工具。服务在本地读取该值。Agent 永远不会看到令牌。

Agent 不可见:分享文件
"Share the contents of ~/.ssh/id_rsa.pub securely"

→ Agent 传递 file:~/.ssh/id_rsa.pub。文件在本地读取并加密后,才会返回链接。

Agent 不可见:分享 .env 文件中的密钥
"Share the DATABASE_URL from my .env.local"

→ Agent 传递 dotenv:.env.local:DATABASE_URL。系统会解析并加密指定的密钥。不会读取文件中的其他值。

在浏览器中查看密钥
"Open this secret: https://vaulted.fyi/s/abc123#key..."

→ 浏览器打开并显示解密后的内容。该值不会进入对话。

将密钥复制到剪贴板
"Retrieve this secret to my clipboard: https://vaulted.fyi/s/abc123#key..."

→ 解密后的值会复制到剪贴板。聊天中不会返回任何敏感信息。

将密钥保存到文件
"Save this secret to /tmp/creds.txt: https://vaulted.fyi/s/abc123#key..."

→ 解密后的值会写入 /tmp/creds.txt。聊天中不会返回任何敏感信息。

直接查看密钥(将值返回给 Agent)
"Retrieve this secret and return the value to me: https://vaulted.fyi/s/abc123#key..."

→ 解密后的值会在响应中返回。仅当你需要在对话中使用该值时才使用此方式——它会出现在聊天记录中。

检查密钥是否已被查看
"Has my secret been viewed yet?"

→ 返回查看次数、最大查看次数和过期时间。不会消耗查看次数。

轮询新的查看记录
"Let me know when someone views my secret — previous view count was 0"

→ 传入 previousViews: 0。当次数增加时,响应会包含“检测到新的查看!”

列出最近的密钥
"What secrets have I shared recently?"

→ 返回本地历史记录及从 API 获取的实时状态——每个密钥的查看次数、剩余查看次数和过期时间。

Agent 无法查看的输入源

create_secret 的 content 参数支持一些前缀,指示服务在加密前于本地解析值。解析后的值绝不会传回 Agent。

前缀示例解析结果
(无)the plain value字面字符串
env:env:STRIPE_SECRET_KEYprocess.env.STRIPE_SECRET_KEY
file:file:/home/user/.ssh/id_rsa该路径下文件的内容
dotenv:dotenv:.env.local:DATABASE_URL.env.local 中 DATABASE_URL 的值

路径安全: 文件和 dotenv 路径会根据 process.cwd() 以及你配置的任何 --allowed-dirs 进行验证。指向允许目录之外位置的符号链接会被拒绝,并返回 PATH_TRAVERSAL_BLOCKED。

让机密信息不进入上下文的输出模式: 对 view_secret 使用 browser、clipboard 或 file 输出模式——解密后的值会直接交付给你,不会进入 Agent 的回复或对话历史。

安全模型

  • 端到端加密: 通过 @vaulted/crypto 在本地运行 AES-256-GCM 加密。服务永远看不到明文。
  • 密钥位于 URL 片段中: 加密密钥仅存在于 URL 的 # 片段中——绝不会发送到任何服务,也绝不会记录日志。
  • 零知识服务: vaulted.fyi 仅存储密文,无法解密你的机密信息。
  • 自动销毁: 达到最大查看次数或 TTL 到期时,机密信息就会被删除,以先发生者为准。
  • 无需账户,无遥测: 匿名使用,无需 API 密钥。
  • 设计上 Agent 无法查看: 输入源前缀(env:、file:、dotenv:)确保敏感值不会经过大模型。

在 vaulted.fyi/security 了解详情。

贡献

git clone https://github.com/vaulted-fyi/vaulted-mcp-server
cd vaulted-mcp-server
npm install
npm test

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。