用途
该技能用于通过本地 1Password MCP 服务器统一管理环境变量配置,主要面向 1Password Developer Environments 以及从 1Password 挂载到本地的 .env 文件。其核心特点是:MCP 工具只返回变量名称,从不返回密钥值,从而使密钥保留在 1Password 内,不会在会话中泄露。
适用时机
- 用户提到 1Password Environments、1Password Developer Environments、1Password MCP 服务器,或来自 1Password 的本地 .env 文件。
- 用户要求在密钥管理器可用且 1Password 可用的情况下,从密钥管理器设置、挂载、创建或同步项目 .env 文件。
- 用户要求使用 1Password 安全地配置仓库环境变量、API 密钥、令牌、凭据或密钥。
- 用户希望列出或比较环境变量名称,而不暴露密钥值。
不适用情形:与密码管理器无关的任务、对任意本地 .env 文件的解析、非 1Password 的密钥存储,除非用户要求将这些配置迁移到 1Password。
前置要求
该技能依赖本地 1Password MCP 服务器。如果当前会话中没有相应工具,应按以下步骤帮助用户完成设置,而不是自行发挥:
- 安装 1Password 桌面应用,并在“设置 > 开发者”中启用 MCP 服务器。在企业账户中,需管理员先在管理后台的“Sharing & Permissions”策略部分启用该功能,否则该设置不可用。
- 桌面应用会在 PATH 上安装 1password-mcp 别名(支持 macOS、Windows 和 Linux)。
- 将客户端配置为以本地 MCP 服务器方式启动 1password-mcp。对于 Codex,可在 ~/.codex/config.toml 中添加:
[mcp_servers.1password]
command = "1password-mcp"
- 1Password 桌面应用会要求用户批准每个客户端连接,访问环境可能还需要额外批准。
可用工具
本地服务器提供以下工具:
- authenticate:通过 1Password 桌面应用进行身份验证,返回账户 ID。
- list_environments:列出账户下的 Developer Environments。
- create_environment:创建新的 Developer Environment。
- rename_environment:重命名现有 Developer Environment。
- list_variables:列出某 Environment 中的变量名称,不返回值。
- append_variables:添加或更新 Environment 变量。
- create_local_env_file:在 macOS 或 Linux 上将 Environment 挂载为本地 .env 文件。
- list_local_env_files:列出某 Environment 的本地 .env 挂载。
此外还提供以下文档资源:
- 1password://docs/getting-started
- 1password://docs/environments-guide
工作流
- 如果当前轮次尚无账户 ID,先调用 authenticate。1Password 桌面应用会要求用户批准连接。
- 后续调用使用 accountId。服务器文档可能将返回值写作 account_id;MCP 工具调用使用 camelCase 参数,例如 accountId 和 environmentId。
- 除非用户已提供当前 environmentId,否则先使用返回的 accountId 调用 list_environments 再操作 Environment。
- 如果目标 Environment 不明确,应询问用户使用哪一个,而不是猜测。
- 环境级调用使用服务器返回的 environmentId。
- 当用户想要检查 Environment 时,优先使用 list_variables,它只返回名称,不返回密钥值。
- 仅在用户明确要求添加或更新变量时使用 append_variables。
- 在 macOS 或 Linux 上创建本地 .env 挂载时使用 create_local_env_file,并传入用户想要的绝对 mountPath。
- 创建之前先用 list_local_env_files 检查现有本地挂载,避免重复。
常见流程
将 1Password 挂载为当前仓库的 .env
- 调用 authenticate。
- 调用 list_environments。
- 如果请求未明确指定 Environment,询问用户选择。
- 对所选 Environment 调用 list_local_env_files,避免重复挂载。
- 如果用户说“这里”“这个仓库”或“这个项目”,使用当前工作区的绝对 .env 路径作为 mountPath。
- 调用 create_local_env_file,传入 accountId、environmentId、environmentName 和绝对 mountPath。
- 报告挂载路径和 Environment 名称,但不要读取挂载的 .env 文件来验证。
检查变量
- 调用 authenticate。
- 除非用户已给出 environmentId,否则调用 list_environments。
- 环境级调用使用服务器返回的 environmentId。
- 调用 list_variables,只汇总变量名称。
添加或更新变量
- 确认用户明确想要创建或更新变量,并收集缺失的名称或值。
- 调用 authenticate 并解析目标 Environment。
- 优先先调用 list_variables,以判断请求的变量名是否已存在。
- 调用 append_variables,严格按当前会话中暴露的活动 MCP 工具 schema 进行。
- 当活动 schema 接受结构化变量对象时,对密钥使用 { "name": "API_KEY", "value": "...", "concealed": true },仅对非敏感值(如 URL 或功能开关)使用 concealed: false。
- 当活动 schema 将变量暴露为 string[] 时,不要发送不支持的对象字段。使用该 schema 要求的字符串格式,如果用户请求的变量格式不明确,应要求澄清。
错误处理
- 如果身份验证或环境访问失败,告知用户 1Password 桌面应用可能需要批准、解锁或账户访问权限。
- 如果 MCP 工具不可用,参照上文“前置要求”帮助用户启用并配置本地 MCP 服务器。
- 本地 .env 挂载的文档仅涵盖 macOS 与 Linux。
安全
- 不要泄露、记录或回显密钥值。
- 不要为了验证存在而读取挂载的 .env 文件;改用 MCP 工具。
- 除非用户请求已经明确,否则在创建或修改变量前先询问。
- 即使 1Password 不会将明文密钥内容持久化到磁盘,本地 .env 挂载仍应视为敏感内容。
- 如果用户将密钥粘贴到聊天中,避免重复回传,应以变量名称指代。
备注
官方文档:https://www.1password.dev/environments 和 https://www.1password.dev/environments/mcp-codex-server
该技能也作为 1Password Codex 插件的一部分分发(https://github.com/1Password/1password-codex-plugin),该插件会自动配置 MCP 服务器。