关于 onepassword
1Password MCP 服务通过 1Password CLI 让 AI 助手访问和管理保险库中的凭据。服务在显示凭据或创建条目前通过 elicitation 请求用户确认,并支持按操作和按条目配置确认规则。
主要功能
- 01读取凭据前通过 elicitation 请求用户确认
- 02读取与写入的确认可分别配置
- 03白名单条目可跳过确认提示
- 04支持使用服务账户令牌进行自动化认证
- 05通过工具分组控制只读或写入权限
适用场景
- 01让助手在用户批准后查找并读取某个 API 密钥
- 02在只读分组中检查某条目是否存在及其字段结构
- 03让助手创建新的登录条目或安全笔记
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 1Password 保险库的列出、读取和创建相关工具,以及 onepassword://config 资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y onepassword-mcp-serverOP_SERVICE_ACCOUNT_TOKEN密钥Service account token for authentication with 1Password CLI.ENABLED_TOOLGROUPSComma-separated tool groups to enable (readonly, write).SKIP_HEALTH_CHECKSSkip credential validation on server startup.DANGEROUSLY_SKIP_ELICITATIONSBypass all credential approval prompts (exposes all secrets).OP_ELICITATION_READPrompt for approval before revealing credentials.OP_ELICITATION_WRITEPrompt for approval before creating or sharing items.OP_WHITELISTED_ITEMSComma-separated item titles or IDs that bypass read elicitation.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
1Password MCP 服务
用于通过 CLI 与 1Password 交互的 MCP 服务。让 AI 助手能够安全地访问和管理存储在 1Password 保管库中的凭据。
亮点
- 基于征询的审批 - 在显示凭据或创建条目前,系统会提示用户确认
- 可按操作配置 - 可分别为读取和写入操作启用或禁用征询
- 条目白名单 - 可预先批准特定条目,以跳过征询提示
- 通过 1Password CLI 安全访问凭据
- 支持用于自动化的服务账户身份验证
- 支持对保管库和条目进行读取和写入操作
- 按工具分组,以进行基于权限的访问控制
前置条件
功能
工具
| 工具 | 分组 | 说明 |
|---|---|---|
onepassword_list_vaults | readonly | 列出所有可访问的保管库 |
onepassword_list_items | readonly | 列出指定保管库中的条目 |
onepassword_get_item | readonly | 获取条目详情(显示凭据需要审批) |
onepassword_get_item_metadata | readonly | 获取条目元数据(标题、字段、保管库、标签),不包含机密值 — 无需审批提示 |
onepassword_list_items_by_tag | readonly | 按标签查找条目 |
onepassword_create_login | write | 创建新的登录凭据(需要审批) |
onepassword_create_secure_note | write | 创建新的安全备注(需要审批) |
onepassword_share_item | write | 为现有条目生成分享 URL(需要审批) |
onepassword_create_api_credential | write | 创建新的 API 凭据条目(需要审批) |
资源
| 资源 | 说明 |
|---|---|
onepassword://config | 服务配置和状态(用于调试) |
工具分组
通过 ENABLED_TOOLGROUPS 环境变量控制可用的工具:
| 分组 | 说明 |
|---|---|
readonly | 只读操作(列出、获取) |
write | 写入操作(创建) |
示例:
ENABLED_TOOLGROUPS="readonly"- 仅启用读取操作(适用于大多数情况,更安全)ENABLED_TOOLGROUPS="readonly,write"- 完全访问权限- 未设置 - 启用所有工具(默认)
快速开始
安装
npx onepassword-mcp-server
配置
设置必需的环境变量:
export OP_SERVICE_ACCOUNT_TOKEN="your-service-account-token"
Claude Desktop 配置
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"onepassword": {
"command": "npx",
"args": ["-y", "onepassword-mcp-server"],
"env": {
"OP_SERVICE_ACCOUNT_TOKEN": "your-service-account-token",
"ENABLED_TOOLGROUPS": "readonly"
}
}
}
}
重启 Claude Desktop,即可开始使用!
环境变量
| 变量 | 必填 | 描述 | 默认值 |
|---|---|---|---|
OP_SERVICE_ACCOUNT_TOKEN | 是 | 1Password 服务账户令牌 | - |
ENABLED_TOOLGROUPS | 否 | 以逗号分隔的工具组 | 全部启用 |
SKIP_HEALTH_CHECKS | 否 | 启动时跳过凭证验证 | false |
DANGEROUSLY_SKIP_ELICITATIONS | 否 | 设置为 true 以绕过所有确认提示(会暴露所有密钥) | 未设置(需要征询) |
OP_ELICITATION_READ | 否 | 显示凭证前征询 | true |
OP_ELICITATION_WRITE | 否 | 创建或共享项目之前征询 | false |
OP_WHITELISTED_ITEMS | 否 | 以逗号分隔的项目标题或 ID,读取时无需征询 | 无 |
安全注意事项
- 启动安全检查:除非已配置征询(HTTP 备用 URL),或通过
DANGEROUSLY_SKIP_ELICITATIONS=true明确选择跳过,否则服务会拒绝启动。这可以防止意外地不受限制地访问所有密钥。 - 基于征询的批准(读取):默认情况下,
get_item会在显示敏感凭证前提示用户确认。读取操作会暴露现有密钥,因此默认启用提示。 - 默认不在写入时征询:写入操作(
create_login、create_secure_note、create_api_credential、share_item)默认不会提示。写入操作只会创建新项目,或为现有项目生成共享 URL;这些工具无法覆盖或删除现有数据,因此增加提示步骤并无必要。设置OP_ELICITATION_WRITE=true可启用写入确认。 - 服务账户令牌:通过环境变量传入,绝不会记录到日志中
- CLI 参数:创建操作的密码会作为 CLI 参数传入(会短暂显示在进程列表中)
- 建议:除非确实需要写入权限,否则请使用
readonly工具组
凭证审批的工作方式
- 默认情况下,
onepassword_get_item会返回项目元数据,但敏感字段会显示为[REDACTED] - 服务会通过征询提示用户批准访问凭证
- 获得批准后,本次请求会返回完整凭证
- 通过
OP_WHITELISTED_ITEMS添加的白名单项目(按标题或项目 ID 匹配)会完全绕过批准提示
无需批准即可检查是否存在
onepassword_get_item_metadata 是 onepassword_get_item 的仅元数据版本。它会返回相同的项目结构(标题、类别、保管库、标签、字段标签、类型、URL、日期,以及非敏感字段值),但会彻底移除敏感字段的值——不显示 [REDACTED] 占位符,也不会泄露信息——并且绝不会触发批准提示。如果你只需要确认“保管库 Y 中是否存在标题为 X 的项目?”或“此项目有哪些字段?”,请使用它。只有在确实需要读取凭证值时,才调用 onepassword_get_item。
配置示例
禁用所有确认(适用于全自动工作流):
DANGEROUSLY_SKIP_ELICITATIONS=true
仅确认写入,自动批准读取(启动时需要 HTTP 回退 URL——DANGEROUSLY_SKIP_ELICITATIONS=true 会覆盖各操作的设置):
ELICITATION_REQUEST_URL="https://your-endpoint/request"
ELICITATION_POLL_URL="https://your-endpoint/poll"
OP_ELICITATION_READ=false
OP_ELICITATION_WRITE=true
默认行为(读取时提示,写入时不提示——推荐用于大多数 Agent 使用场景):
ELICITATION_REQUEST_URL="https://your-endpoint/request"
ELICITATION_POLL_URL="https://your-endpoint/poll"
# OP_ELICITATION_READ defaults to true
# OP_ELICITATION_WRITE defaults to false
按标题或 ID 将特定项目加入白名单(始终自动批准这些项目):
OP_WHITELISTED_ITEMS="Stripe Key,AWS Credentials,abc123def456"
开发
项目结构
onepassword-mcp-server/
├── local/ # Local server implementation
│ └── src/
│ ├── index.ts # Main entry point
│ └── index.integration-with-mock.ts
├── shared/ # Shared business logic
│ └── src/
│ ├── server.ts # Server factory
│ ├── tools.ts # Tool registration
│ ├── tools/ # Individual tools
│ ├── onepassword-client/ # CLI wrapper
│ └── types.ts # TypeScript types
├── tests/ # Test suite
│ ├── functional/ # Unit tests
│ ├── integration/ # MCP protocol tests
│ └── manual/ # Real CLI tests
└── package.json
本地运行
# Install dependencies
npm run install-all
# Build
npm run build
# Run tests
npm test
# Run integration tests
npm run test:integration
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。