FilingCabinet's MCP integration
FilingCabinet is an MCP server for secrets, API tokens, and Terraform/OpenTofu state. An authenticated
Claude Code or Claude Desktop session can list, read, write, and roll back secrets and Terraform
state through it — instead of hardcoding credentials into .env files, or losing them
when a git worktree gets deleted. Nothing is ever hard-deleted: every write is a new version, and
any version can be rolled back to.
How to connect
- Sign in with Google, GitHub, LDAP, or a local account — see sign in.
- Open Connect an agent from the dashboard (or go straight to
/connect). - Pick a scope — a broad "read/write all my secrets" token, or one scoped to a single worktree.
- Copy the ready-to-run
claude mcp addcommand, or paste the Claude Desktop config block, into your agent.
This page only explains the integration — actually minting a token requires signing in first, since a token is tied to your account.
An agent that only has this instance's hostname can start at /.well-known/mcp.json or /llms.txt — both are public and point back here.
The MCP tool surface
| Tool | What it does |
|---|---|
list_secrets | List secrets visible to the calling token, optionally filtered by name prefix and/or by project (a Project slug). |
get_secret | Read a secret's value — latest version, or a specific older one. |
set_secret | Write a secret value, creating it if needed; a no-op if unchanged. Pass project (a Project slug) to assign a newly-created secret to that project. |
get_secret_history | List every version of a secret (metadata only, not values). |
rollback_secret | Roll a secret back to an older version by copying its ciphertext forward. |
report_leak | Flag a secret (optionally one version) as leaked, marking it for rotation. |
list_datastores | List Terraform/OpenTofu state datastores visible to the token, optionally filtered by project (a Project slug). |
get_datastore_info | Get lineage, current serial, version count, and lock status. |
rollback_datastore | Roll a datastore's state back to an older version. |
issue_scoped_token | Mint a new scoped token, e.g. one narrowly scoped to a single worktree. Requires token:admin. |
revoke_token | Revoke a previously issued token by id. Requires token:admin. |
A secret, datastore, or token can belong to a Project. When both the calling token and the resource being acted on belong to a project, they must match — a token scoped to one project cannot read or write a secret or datastore that belongs to a different one, whatever its scope strings say. A token or resource with no project set skips that check, so anything minted before Projects existed keeps working unchanged.
For agents reading this page
If you are an agent that has just connected to this MCP server, follow this etiquette:
- Never print, log, or paste a secret's plaintext value into a commit, PR description, chat transcript, or any file you write, unless the user explicitly asked to see that exact value in that exact place.
- Prefer calling
get_secretat the point of use over caching a value in a local.envfile or shell variable that outlives the current task. - If a secret's value is accidentally exposed — printed to a log, committed, pasted somewhere it shouldn't be — call
report_leakimmediately rather than silently continuing. The value stays usable but gets flagged for rotation. - Prefer the narrowest scope that gets the job done — a per-worktree token, not a shared admin one — and call
revoke_tokenon a token that's no longer needed rather than leaving it live. - Nothing here is ever permanently deleted:
rollback_secret/rollback_datastoreexist so a bad overwrite is always recoverable. Use them instead of trying to reconstruct a lost value by hand.