passwords-mcp
Click on "Install 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., "@passwords-mcpfind my GitHub password"
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.
passwords-mcp
A Model Context Protocol server for the Nextcloud Passwords app. It lets Claude and other MCP-compatible clients read and manage entries in your Nextcloud password vault — listing/searching by metadata, revealing a single secret on request, and creating, updating, and (reversibly) deleting passwords and folders.
⚠️ This project is 100% AI-written. All source code, tests, CI configuration, and this documentation were written by AI (Claude). Review it yourself before pointing it at a real password vault. It is provided as-is, with no warranty (see LICENSE).
🔓 Requires client-side encryption (CSE) to be OFF. This server only works with accounts where the Passwords app's client-side (end-to-end) encryption is disabled. See Encryption requirement below.
Security model
This is a password-manager bridge, so it is built defensively even though it can now write:
Reads never bulk-expose secrets.
list_passwordsandsearch_passwordsreturn metadata only (label, username, URL, folder, timestamps). The plaintext secret, notes, and custom fields are stripped at a single choke point (toPasswordMeta). Onlyget_password, called with one specific id, ever returns a secret.Search ignores secrets. Searching matches on label / username / URL only — never on the password, notes, or custom fields.
Deletes are soft and reversible.
delete_password/delete_foldermove items to the trash. They first fetch the item and refuse if it is already trashed, so this server can never permanently delete anything — empty the trash from the Passwords app if you really mean it.Updates never blank data.
update_passwordfetches the current entry, merges only the fields you passed, and sends the currentrevision— so an edit can't silently wipe fields, and the server rejects the write if the entry changed underneath it.Optional read-only mode. Set
PASSWORDS_READONLY=trueto drop all six write tools from the tool list and refuse them at dispatch (defence in depth).HTTPS enforced. Plaintext
http://is refused unless you explicitly setALLOW_INSECURE_HTTP=true(intended for localhost testing only).App-password auth. Authenticates with a revocable Nextcloud app-password over HTTP Basic — never your real account password.
Secrets never logged. Debug logging (
DEBUG=1) writes only method + path to stderr. Credentials, session tokens, and secret fields are never logged, cached, or written to disk.Minimal dependencies. Only the official MCP SDK and
zod. Networking uses Node's built-infetch; requests carry a 30s timeout.
None of this removes the underlying risk: an app-password that can read and write the vault gives any connected client the same power — reading every secret and modifying entries. Scope and rotate the app-password accordingly, and use PASSWORDS_READONLY=true if you only need lookups.
Related MCP server: nextcloud-mcp
Encryption requirement
The Nextcloud Passwords app supports two encryption modes:
Server-side encryption (SSE) — encrypted at rest; the server holds the keys and returns plaintext to any authenticated session. Supported.
Client-side encryption (CSE) — end-to-end encryption gated by a master password the server never sees. Not supported.
This server implements none of the CSE (E2E) cryptography. On startup of each session it asks the server whether a challenge is required (session/request); if CSE is enabled it refuses to run with a clear error rather than returning ciphertext. To use this server, disable client-side encryption in the Passwords app settings.
Tools exposed (12; 6 in read-only mode)
Read (always available):
Tool | Returns | Secret? |
| Connectivity check + item counts; confirms CSE is off | No |
| All entries as metadata (optionally filtered by folder) | No |
| Metadata for entries matching a label/username/URL substring | No |
| A single entry incl. plaintext password, notes, custom fields | Yes |
| All folders | No |
| A single folder | No |
Write (hidden when PASSWORDS_READONLY=true):
Tool | Does |
| Create an entry (label + password required; username/url/notes/folder/favorite optional) |
| Change specific fields of an entry by id (merge; others preserved) |
| Move an entry to the trash (reversible; refuses if already trashed) |
| Create a folder (label required; optional parent) |
| Rename / re-parent a folder by id |
| Move a folder and its contents to the trash (reversible; refuses if already trashed) |
Install
Build a tarball and install it globally:
pnpm install
pnpm pack:tarball # produces passwords-mcp-<version>.tgz
npm install -g ./passwords-mcp-0.2.0.tgzThis installs the passwords-mcp command.
Configuration
Add to your MCP client config (Claude Code shown):
{
"mcpServers": {
"passwords": {
"command": "passwords-mcp",
"args": [],
"env": {
"NEXTCLOUD_URL": "https://your-nextcloud.example.com",
"NEXTCLOUD_USER": "your-username",
"NEXTCLOUD_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx-xxxx"
}
}
}
}Generate the app-password in Nextcloud under Settings → Security → Devices & sessions → "Create new app password". The server only needs an app-password, never your real account password — and you can revoke it at any time without affecting your main login.
Environment variables
Variable | Required | Description |
| yes | Instance base URL (no trailing slash). Must be |
| yes | Nextcloud username. |
| yes | A dedicated app-password. |
| no | Set to |
| no | Set to any value to log method + path to stderr (never secrets). |
| no | Set to |
Development
pnpm install
pnpm dev # stdio MCP server; point the MCP inspector at it
pnpm test # unit tests (config validation + secret-stripping guarantees)
pnpm lint # eslint
pnpm typecheck # tsc --noEmit
pnpm build # tsc -> dist/The unit tests are pure and need no server. They assert the config validation rules, the write-payload builders (hash computation and the merge that preserves untouched fields), the read-only gating, and — most importantly — that metadata projection and search never expose secret fields.
License
MIT — see LICENSE.
Related
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Nextcloud Collectives that exposes collectives, pages, tags, attachments, page history, and trash to Claude and MCP-compatible clients via OCS API and WebDAV.41MIT
- FlicenseBqualityDmaintenanceMCP server integrating Nextcloud services (tasks, calendar, notes, email, files, Deck) for AI assistant interaction.201
- Alicense-qualityCmaintenanceMCP server for sovereign AES-256-GCM backup encryption and decryption. Enables encrypting, decrypting, verifying, and scoring passphrases with zero network calls.MIT
- Alicense-qualityAmaintenanceLocal, encrypted password vault with AES-256-GCM and PBKDF2, exposing MCP tools for secure credential management, password generation, and search.MIT
Related MCP Connectors
MCP (Model Context Protocol) server for Appwrite
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/megamaced/nc_passwords-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server