Skip to main content
Glama
simopet

keepmyprompts-mcp

by simopet
README.md
# Keep My Prompts — MCP server

Read your saved [Keep My Prompts](https://www.keepmyprompts.com) library from
Claude Code, Claude Desktop, Cursor, or any other MCP client. Ask for a prompt by
name and the model fetches it; no copy-pasting from a browser tab.

Read-only: this server can list and read your prompts. It cannot create, edit or
delete anything.

## Requirements

- **Node.js 20 or newer** (`node --version`)
- A Keep My Prompts account on a plan that includes MCP access: **Pro**,
  **Ultimate**, or any **Team** plan
- An API key from Keep My Prompts → **Settings → MCP**

## Install

```
claude mcp add keepmyprompts -e KMP_API_KEY=kmp_live_... -- npx -y github:simopet/keepmyprompts-mcp#v0.2.0
```

Always install from a **version tag** (`#v0.2.0`), never from the bare repo name.
Without a tag your client silently picks up whatever landed on the default branch
since you installed, with no way to go back.

For Claude Desktop or Cursor, add this to the MCP servers section of the client's
config file instead:

```json
{
  "mcpServers": {
    "keepmyprompts": {
      "command": "npx",
      "args": ["-y", "github:simopet/keepmyprompts-mcp#v0.2.0"],
      "env": { "KMP_API_KEY": "kmp_live_..." }
    }
  }
}
```

### Other MCP clients

Any client that can run **local (stdio) MCP servers** works: VS Code with GitHub
Copilot, Windsurf, Zed, Cline, Continue, Gemini CLI, Codex CLI, and others. The
configuration is the same three values everywhere — `command: "npx"`, the `args`
above, and `KMP_API_KEY` in the environment; only the name and location of the
config file differ, so check your client's MCP documentation.

What does **not** work: browser-only hosts, such as claude.ai on the web or
ChatGPT on the web, connect only to *remote* MCP servers. This server is local
by design — it runs on your machine and nowhere else.

### Install from a local clone

`npx` re-resolves the package each time your client starts a session. If you'd
rather pay that cost once, clone and point the client at the built file:

```
git clone https://github.com/simopet/keepmyprompts-mcp.git
cd keepmyprompts-mcp
npm install          # also builds, via the prepare script
```

Then use `"command": "node"` with `"args": ["/absolute/path/to/keepmyprompts-mcp/dist/index.js"]`.

## Configuration

| Variable | Required | Default | Notes |
|---|---|---|---|
| `KMP_API_KEY` | yes | — | Your key, starting `kmp_live_`. The server exits immediately without it. |
| `KMP_API_URL` | no | `https://www.keepmyprompts.com` | Keep the `www.`; the bare domain redirects and the request is refused rather than silently followed. |

The key is read from the environment and sent as a bearer token over HTTPS. It is
never written to disk or logged.

## Tools

| Tool | Arguments | What it does |
|---|---|---|
| `list_prompts` | `category` (optional) | Titles, categories and your own notes for each saved prompt. Not the prompt text — that keeps the list cheap, and the notes are what let the model tell two similar prompts apart. Long notes are shortened here and shown in full by `get_prompt`. |
| `get_prompt` | `id` | Full text and full notes of one prompt. |
| `list_categories` | — | Your categories with a count each, for narrowing a large library. |

**Write useful notes.** The notes field is what the model reads when deciding which of
your prompts fits the task. "For cold outreach to agencies, keep it under 120 words"
earns its keep; an empty notes field leaves the model guessing from the title alone.

Ask in plain language — "use my follow-up email prompt", "what prompts do I have
for code review" — and the model picks the tool.

## Troubleshooting

| What you see | What it means |
|---|---|
| `KMP_API_KEY is not set` | The client started the server without the variable. Check the `env` block in your MCP config. |
| *API key is missing, invalid or revoked* | The key was deleted or regenerated. Create a new one in Settings. |
| *plan does not include MCP access* | The account is on Free, or a paid plan lapsed. MCP is on Pro, Ultimate and Team. |
| *Too many requests* | More than 60 calls in a minute from one key. It clears within the minute. |
| *redirected the request (HTTP 301)* | `KMP_API_URL` is missing the `www.`. |
| *bot-protection challenge* | Our problem, not yours — please open an issue. |
| The tools never appear in the client | Node is older than 20, or the client cached a failed start. Check `node --version`, then fully restart the client. |

Installation problems are worth reporting even when you work around them:
[open an issue](https://github.com/simopet/keepmyprompts-mcp/issues).

## How it works

Your prompts are encrypted at rest. This server never holds the encryption key —
it makes authenticated HTTPS requests to `/api/mcp/v1/*`, and the Keep My Prompts
API decrypts server-side exactly as it does for the web app. The server runs
locally on your machine over stdio and talks to nothing except the API.

## Licence

MIT — see [LICENSE](LICENSE).

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing titles, fetching full text, and listing categories. There is no overlap in functionality, and the descriptions explicitly guide when to use each.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (list_prompts, get_prompt, list_categories). The naming is predictable and readable.

Tool Count5/5

Three tools is well-scoped for a read-only prompt retrieval server. Each tool covers a distinct need without redundancy or bloat.

Completeness4/5

The server fully covers retrieval and organization of saved prompts, but lacks write operations like create or delete. Given the focus on accessing existing prompts, this is a minor gap that doesn't hinder the core workflow.

Maintenance

ActivitySlowing
ResponsivenessNo issues