1Password MCP Server
Manage 1Password vaults and credentials from any MCP client — discovering, creating, editing, rotating, and using secrets without dumping plaintext into the model transcript.
Discover vaults and items via
vault_list,item_lookup, anditem_list(metadata only, never secrets).Read safely with
item_getandpassword_read— concealed values, SSH keys, OTP seeds, and card numbers stay hidden unless you opt in withreveal: true.Validate references with
op_check_ref, returning only non-secret vault/item/field metadata.Create credentials — logins/passwords (
password_create) and Secure Notes with custom fields (note_create).Edit and rotate — update titles, notes, tags, URLs, and fields (
item_edit); rotate concealed fields (password_update); generate random or memorable passwords.Use secrets without revealing them —
op_runinjectsop://references into a local command's environment and redacts resolved values from returned output.Archive or permanently delete items with
item_archiveanditem_delete.Follow guided workflows — four prompts: password generation, credential rotation, vault audit, and secret-reference building.
Browse resources over
onepassword://URIs: server config, vault catalog, and per-vault item metadata.Restrict scope server-wide to an allow-list of vaults via
OP_MCP_ALLOWED_VAULTS, alongside tightly scoped service-account access.
Connects AI clients to 1Password vaults for secure credential management, enabling tools to list vaults, search, create, read, update, delete items, and generate passwords, with prompts for password generation, credential rotation, and vault auditing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@1Password MCP Server list my vaults"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
1Password MCP Server
Give your AI assistant a locked door to 1Password — not a pile of passwords in the chat.
@takescake/1password-mcp is a community Model Context Protocol (MCP) server. It lets Claude, Cursor, VS Code Copilot, OpenAI Codex, Gemini, and other MCP clients manage vaults and credentials through a 1Password Service Account.
Built on the MCP TypeScript SDK v2 with protocol negotiation for 2026-07-28 (and legacy clients). Secrets stay in 1Password; agents prefer op:// references and op_run so plaintext never has to land in the model transcript.
Not an official 1Password product. Community-built, Apache 2.0 licensed.
Who this is for
You are… | You get… |
Not deeply technical | A one-time setup: create a service account, paste the token into your AI app’s MCP settings, then ask in plain English (“list my automation vault”, “rotate the staging DB password”). |
An agent / LLM | Fifteen typed tools, four workflow prompts, three browsable resources, and clear rules: prefer |
A developer / SRE | Full item CRUD, secure notes, password generation, vault allow-lists, Keychain token loading on macOS, and CI-friendly env config. |
Related MCP server: mcp-1password
Why teams pick this server
Security-first defaults —
password_readreturns metadata, anditem_gethides secret-bearing fields (passwords, SSH keys, OTP seeds, card numbers), unless you opt in withreveal: true.op_run(the MCP equivalent ofop run) — injectop://vault/item/fieldinto a local command’s environment; resolved secrets are redacted from the returned stdout/stderr on a best-effort basis (including common encodings).Full vault toolkit — list, search, get, edit, create logins & notes, rotate passwords, archive, or delete.
Guided prompts — password generation, credential rotation, vault audit, and secret-reference helpers.
Browsable resources — vault and item catalogs over
onepassword://…URIs (no secrets in resource payloads).Modern MCP — stdio transport, Zod 4 schemas, MCP 2026-07-28 negotiation with legacy client compatibility.
What you get
Tools (15)
Grouped the way agents and humans actually use them.
Discover
Tool | What it does |
| List vaults the service account can access (id, name, description, type), limited to the allow-list if one is set. |
| Search a vault by title substring; optional |
| List every item in a vault (id, title, category, tags, |
Read (safe by default)
Tool | What it does |
| Full item: title, category, tags, notes, fields. Secret-bearing values (passwords and other concealed fields, SSH private keys, OTP seeds, card numbers) stay hidden unless |
| Read one field (default |
| Validate |
Create & update
Tool | What it does |
| Create a Login or Password item (username, URL, tags, notes). |
| Create a Secure Note with optional tags and custom fields. |
| Rotate a password / concealed field (creates the field if missing). |
| Update title, notes (empty string clears), tags, URL; upsert or remove fields. Unreferenced fields stay untouched. |
| Cryptographically secure random password (length 8–128; symbols/numbers/uppercase toggles). |
| Memorable passphrase from a ~500-word list (word count, separator, number/symbol suffixes). |
Use secrets without revealing them
Tool | What it does |
| Run a local command ( |
Soft-delete & destroy
Tool | What it does |
| Move an item to the archive (hidden from normal views). |
| Permanently delete an item — cannot be undone. |
Prompts (4)
Prompt | When to use it |
| Generate (random or memorable) and optionally store — without dumping the password into chat. |
| Find → verify access → generate → update → confirm |
| Inventory a vault by category; flag duplicates / oddities — never reveal secrets. |
| Build a paste-ready |
Resources (3)
URI | Contents |
| Non-secret server config (name, version, log level, token source, Node version). |
| JSON list of accessible vaults (limited to the allow-list if one is set). |
| URI template (listed by |
Upgrading from 4.x: resource URIs used to start with
1password://, which MCP clients could never read (a URI scheme can't start with a digit). Replace any hard-coded1password://URIs withonepassword://.
Before you start
You need two things:
Node.js 20 or newer
A 1Password Service Account with access to the vault(s) you want the AI to use
Create a service account (plain English)
Sign in to your 1Password account on the web.
Open Developer → Service Accounts (or follow 1Password’s guide).
Create a service account and grant it only the vaults you want automation to touch (for example an
AutomationorCIvault — not your personal banking vault).Copy the token once. Treat it like a master key.
Quick start
Claude Desktop / Cursor / VS Code / most IDEs
Add this to your MCP config (exact file depends on the app):
{
"mcpServers": {
"1password": {
"command": "npx",
"args": ["-y", "@takescake/1password-mcp"],
"env": {
"OP_SERVICE_ACCOUNT_TOKEN": "YOUR_SERVICE_ACCOUNT_TOKEN"
}
}
}
}Restart the app, then try: “List my 1Password vaults.”
macOS Keychain (no token in the config file)
Store the token in Keychain, then point the server at it:
{
"mcpServers": {
"1password": {
"command": "npx",
"args": ["-y", "@takescake/1password-mcp"],
"env": {
"OP_KEYCHAIN_SERVICE": "op-service-account-claude-automation",
"OP_KEYCHAIN_ACCOUNT": "your-macos-username"
}
}
}
}Token resolution order: CLI (--service-account-token / --token) → OP_SERVICE_ACCOUNT_TOKEN → macOS Keychain. OP_KEYCHAIN_ACCOUNT is optional when the service name alone is unique. Avoid the CLI flags: command-line arguments are visible to other local processes, and the server logs a warning at startup if you use them.
OpenAI Codex (TOML)
Option A — token in config:
[mcp_servers."1password"]
command = "npx"
args = ["-y", "@takescake/1password-mcp"]
[mcp_servers."1password".env]
OP_SERVICE_ACCOUNT_TOKEN = "YOUR_SERVICE_ACCOUNT_TOKEN"Option B (recommended) — config only names the env var:
[mcp_servers."1password"]
command = "npx"
args = ["-y", "@takescake/1password-mcp"]
env_vars = ["OP_SERVICE_ACCOUNT_TOKEN"]Set OP_SERVICE_ACCOUNT_TOKEN in your shell or CI. Note: codex mcp add ... --env OP_SERVICE_ACCOUNT_TOKEN=... writes the secret into Codex config; prefer env_vars when you can.
On macOS you can omit the token env and use OP_KEYCHAIN_SERVICE (+ optional OP_KEYCHAIN_ACCOUNT) instead.
Optional: restrict the server to certain vaults
By default the server can use any vault the service account can see. To allow-list vaults:
{
"env": {
"OP_SERVICE_ACCOUNT_TOKEN": "YOUR_SERVICE_ACCOUNT_TOKEN",
"OP_MCP_ALLOWED_VAULTS": "Automation, CI"
}
}Names or IDs work (case-insensitive). Same setting via --allowed-vaults. The allow-list applies server-wide, to every tool and resource that touches a vault, not only op_run / op_check_ref:
vault_listandonepassword://vaultsshow only allowed vaults.Tools that take a
vaultId, and theonepassword://vaults/{vaultId}/itemsresource, must be given the vault’s ID (not its name); vaults outside the list are rejected.op://references are checked both as written and by the vault they actually resolve to.When an allow-list is set, each guarded call makes one extra
vaults.listread (mind service-account rate limits), and the server fails closed if vaults can’t be listed.
Upgrading from 4.0.3 or earlier? If you set this expecting it to affect only
op_run/op_check_ref, it now restricts everything.
This is defense in depth: scope the service account’s own vault access in 1Password first.
For agents: how to handle secrets
Follow this order every time:
Discover with
vault_list→item_lookup/item_list(metadata only).Confirm a reference with
op_check_ref— neverrevealjust to see if a path exists.Use a secret in a command or API call with
op_runandop://vault/item/fieldinenv.Reveal with
password_read/item_get+reveal: trueonly when the human explicitly needs the value in chat.Rotate with
password_generate→password_update(keepreturnSecret: falseunless asked).Prefer
item_archiveoveritem_deleteunless permanent removal is required.
op_run sketch
{
"argv": ["curl", "-sS", "https://api.example.com/health"],
"env": {
"API_TOKEN": "op://Automation/Example API/credential"
},
"timeout_ms": 60000
}Prefer argv over a shell command string when you can — fewer quoting surprises.
Configuration reference
Environment variables
Variable | Required | Description |
| Usually yes | Service account token. Not required on macOS if Keychain vars are set. |
| No | macOS: Keychain service name for the token. |
| No | macOS: optional account to narrow the Keychain lookup. |
| No | Comma-separated vault names/IDs (case-insensitive) the server may use, enforced server-wide. Empty = unrestricted. |
| No | Name reported to the 1Password SDK (default: |
| No | Version reported to the SDK (default: package version). |
| No |
|
| No | If set, forces debug logging. |
CLI flags
--service-account-token <token> 1Password service account token (avoid: visible to other local processes)
--token <token> Alias for --service-account-token
--log-level <level> error | warn | info | debug (default: info)
--integration-name <name> Custom integration name for the 1Password SDK
--integration-version <version> Custom integration version
--allowed-vaults <list> Comma-separated vault allow-list (names or IDs), applied server-wideSecurity & privacy
Read this before pointing the server at a vault you care about.
LLM privacy — Anything revealed to the model may be sent to your AI provider and retained under their policies.
MCP is not end-to-end encrypted for secrets in flight — Values are plaintext inside the MCP workflow and toward the model. They are encrypted at rest in 1Password once stored.
Best fit — Automation credentials: CI tokens, bot accounts, disposable env secrets.
Avoid — Banking, primary personal logins, recovery codes, or anything you cannot afford to expose to a model provider.
Token = master key — Scope the service account tightly; rotate immediately if leaked; never commit tokens or MCP configs with secrets.
Prefer the env var or Keychain for the token —
--token/--service-account-tokenputs it in the process arguments, which other local processes can read (the server warns at startup). A same-user process can generally read the server’s environment too (for example/proc/<pid>/environon Linux), so on macOS Keychain is the strongest option: it keeps the token out of config files and the process environment.Prefer references —
op://…+op_runbeat pasting passwords into prompts or files.op_runruns arbitrary commands as your user — Keep your MCP client’s approval prompts on for it; don’t auto-approve it.Redaction is best effort —
op_runmasks resolved secrets in returned output, including common encodings (base64, JSON- and URL-encoded forms, multi-line values). That protects against accidental disclosure. It is not a sandbox: a command can deliberately transform or transmit a secret it was given.Notes are not concealed —
item_getreturns notes as-is (likeop item get). Don’t keep secrets in the notes of vaults an agent can read.Least privilege — Dedicated automation vaults beat sharing your whole account.
OP_MCP_ALLOWED_VAULTSis a second fence, not a substitute.Reporting vulnerabilities — Open a public issue; see SECURITY.md.
Protocol & compatibility
Piece | Detail |
Package |
|
Runtime | Node.js ≥ 20 |
Transport | stdio |
MCP SDK |
|
Protocol | Negotiates 2026-07-28; keeps legacy client compatibility |
Registry name |
|
Development
git clone https://github.com/CakeRepository/1Password-MCP.git
cd 1Password-MCP
npm ci
npm run build
npm test
npm run lintWatch mode: npm run dev.
Project layout
src/
index.ts # Entrypoint — MCP stdio + protocol negotiation
server.ts # buildServer() — registers tools, prompts, resources
config.ts # CLI / env / Keychain / allow-list
client.ts # 1Password SDK client
logger.ts # Structured logs on stderr (stdout is protocol)
secret-ref.ts # op:// parsing & reference checks
vault-access.ts # Server-wide vault allow-list enforcement
redaction.ts # op_run output redaction
utils.ts # Result helpers, password generation
tools/ # All 15 MCP tools
prompts/ # Interactive workflow prompts
resources/ # onepassword:// resources
tests/See CONTRIBUTING.md. Maintainers / agents: agents.md.
Changelog
See CHANGELOG.md for version history, including the 5.0.0 release (resource URIs moved from 1password:// to onepassword://, plus security hardening; read its Changed notes before upgrading), the 4.0.0 MCP v2 / 2026-07-28 migration, and the 3.0.0 op_run / reveal-opt-in security changes.
License
Available Tools
15 toolsitem_archiveA
Archive an item in a 1Password vault. The item is moved to the archive and hidden from regular views, rather than being permanently deleted.
Inputs: itemId (required), vaultId (required).
item_deleteA
Permanently delete an item from a 1Password vault. This action cannot be undone.
Inputs: itemId (required), vaultId (required).
item_editA
Edit an existing 1Password item. Update the title, notes (pass an empty string to clear notes), tags, website URL, upsert fields, or remove fields. Only referenced fields are changed; all others are preserved.
Inputs: itemId (required), vaultId (required), url, tags, +4 more.
item_getA
Retrieve a full 1Password item — title, category, tags, notes, and all fields (id, title, type, section). Secret-bearing field values (passwords and other concealed fields, SSH private keys, one-time-password seeds, card numbers) are hidden unless reveal is true; only known non-secret types (text, URL, email, phone, date, menu, card type, address, reference) are shown by default. Accepts a secret reference (op://vault/item/field) or vault ID + item ID. Revealing a secret puts it in the model context/transcript — to USE a secret in a command or API call, prefer op_run with op:// references instead.
Inputs: itemId, reveal, vaultId, secretReference.
item_listA
List all items in a 1Password vault, returning id, title, category, tags, and updatedAt for each. Never returns secret values.
Inputs: vaultId (required).
item_lookupA
Search for items within a 1Password vault by title substring. Returns item IDs, titles, categories, and vault IDs.
Inputs: vaultId (required), limit, query.
note_createA
Create a Secure Note item in a 1Password vault, with optional tags and custom fields.
Inputs: notes (required), title (required), vaultId (required), tags, +1 more.
op_check_refA
Validate an op://vault/item/field secret reference and return only non-secret metadata (vault name, item title, field label, field type) confirming it resolves — the field VALUE is never returned. Use this to check a reference is correct before using it with op_run; do not use password_read/item_get with reveal just to check a reference exists.
Inputs: secretReference (required).
op_runA
Run a local shell command with 1Password secrets injected as environment variables. Resolved values go only into the child process environment, are never logged by the server, and are redacted from stdout/stderr on a best-effort basis (including common encodings such as JSON, URL and base64) — a command that deliberately transforms or transmits a secret can still expose it. This is the preferred way to USE a secret in a command, API call, or script: prefer op_run with op://vault/item/field references in env over reading a secret with password_read/item_get and pasting it into a command yourself, which would put the plaintext in the model context and transcript.
Inputs: cwd, env, argv, shell, +3 more.
password_createB
Create a new password/login item in a 1Password vault with optional username, URL, tags, and notes.
Inputs: title (required), vaultId (required), password (required), url, +5 more.
password_generateB
Generate a cryptographically secure random password with configurable length and character types. Uses rejection sampling for unbiased randomness.
Inputs: length, includeNumbers, includeSymbols, includeUppercase.
password_generate_memorableA
Generate a memorable passphrase from random dictionary words with optional number and symbol suffixes. Uses a ~500-word curated list for good entropy.
Inputs: separator, wordCount, capitalize, includeNumber, +1 more.
password_readA
Retrieve a secret from 1Password using either a secret reference (op://vault/item/field) or vault ID + item ID. Supports field selection and optional value reveal (defaults to metadata-only). Revealing a secret puts it in the model context/transcript — to USE a secret in a command or API call, prefer op_run with op:// references instead.
Inputs: field, itemId, reveal, vaultId, +1 more.
password_updateA
Update (rotate) a password or concealed field on an existing 1Password item. If the target field does not exist, it will be created.
Inputs: itemId (required), vaultId (required), newPassword (required), field, +1 more.
vault_listA
List the 1Password vaults accessible to the service account (limited to the allow-listed vaults when OP_MCP_ALLOWED_VAULTS / --allowed-vaults is configured). Returns vault IDs, names, descriptions, and types.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Overlap among item_get, password_read, and op_check_ref: all accept secret references or vault+item inputs and return metadata or secret data, with only subtle distinctions (full item vs single secret vs validation). item_edit and password_update both modify fields, and the retrieval tools can be confused despite descriptions that attempt to steer usage.
Most tools follow a resource_action snake_case pattern (item_get, password_read, vault_list, note_create), which is readable and predictable. Minor deviations exist with op_run and op_check_ref using an op_ namespace and non-noun-verb phrasing, and password_generate_memorable extends the pattern.
15 tools is within the typical 3-15 range for a password manager integration, covering listing, reading, creating, editing, deleting, generating, and injecting secrets. It is slightly heavy due to overlapping retrieval tools, but each tool has a plausible role.
Core item lifecycle is well covered: list/search/get, create login and secure note, edit, update password, archive/delete, plus secret generation and op_run injection. Gaps remain in generic item creation for arbitrary 1Password categories and vault-level CRUD, but agents can work around most workflows.
Maintenance
Related MCP Connectors
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Every service you connect, one MCP endpoint for all your AI tools. Sign in once.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides secure access to 1Password secrets and item management through the 1Password CLI. It enables MCP clients like Claude and Cursor to read, create, edit, and delete password vault items with biometric authentication handled by the 1Password desktop app.MIT
- AlicenseCqualityCmaintenanceAn MCP server that integrates 1Password with AI agents, providing secure access to vaults and items with secrets redacted by default.1614 npm1MIT

Kova Mind MCP Serverofficial
AlicenseAqualityDmaintenanceEnables AI memory persistence and secure credential management via vault tools for MCP-compatible clients like Claude Desktop, Cursor, and VS Code.1213 npmMIT- FlicenseBqualityDmaintenanceEnables secure retrieval of credentials from 1Password vaults for use by AI agents, supporting integration with browser automation for automated login.1-