MCP server · Windows first

Give the agent a handle,
not the key.

Takes your API key out of the conversation the moment it appears. The model never types it again.

Install
irm https://raw.githubusercontent.com/zallkyre/secrets-mcp/main/install.ps1 | iex
MITno accountpython 3.10+11 agents

It looks like this

One tool call at the paste. After that the key is gone from the model's reach.

you    here's my stripe key sk_live_4eC39Hq…
agent  stored as {{stripe}} — I won't repeat it.
agent  calling the API with {{stripe}}
       ↑ filled in locally, after the model stops writing

agent  200 OK  balance: $1,204.00

Three steps

The model only ever holds a name.

01 · stage

Paste

The agent spots a key and calls stage_secret with the text.

02 · swap

Handoff

You get the text back with {{stripe}}. The key goes to an encrypted vault.

03 · use

Call

request_with_secret fills the key in server-side. It never re-enters context.

Storage & limits

Encrypted on disk. Honest about what that does and doesn't buy you.

  • WindowsDPAPI — bound to your user, no master password
  • macOS / LinuxAES-GCM, key file at ~/.secrets-mcp/key
  • Vault%APPDATA%\secrets-mcp\vault.json
  • Never returneda raw secret, by any tool, ever

The part most tools hide

This cannot un-send a key. Once you paste it, it reached the model provider on that request.

What it closes: the key written into shell commands, curl, files, logs, or later prompts. That's where most leaks happen.

Blast-radius reduction, not a vault you can paste anything into.

Connects to

The installer detects what you actually have and offers only those.