keepmyprompts-mcp
This MCP server provides read-only access to your saved prompts from Keep My Prompts, allowing you to fetch prompts directly within MCP clients (e.g., Claude Desktop, Cursor, VS Code) without copy-pasting. It runs locally and communicates with the Keep My Prompts API over HTTPS, sending your API key as a bearer token (the key is never stored). You can:
List saved prompts (
list_prompts): Retrieve titles, categories, and shortened notes for all prompts, with optional category filtering.Read a specific prompt (
get_prompt): Fetch the full text and full notes of a prompt by its ID.List categories (
list_categories): View all your prompt categories with the count of prompts in each.
Note: This server is read-only; it cannot create, edit, or delete prompts.
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., "@keepmyprompts-mcpuse my follow-up email prompt"
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.
Keep My Prompts — MCP server
Read your saved Keep My Prompts 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
Related MCP server: Prompt Registry MCP
Install
claude mcp add keepmyprompts -e KMP_API_KEY=kmp_live_... -- npx -y github:simopet/keepmyprompts-mcp#v0.2.0Always 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:
{
"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 scriptThen use "command": "node" with "args": ["/absolute/path/to/keepmyprompts-mcp/dist/index.js"].
Configuration
Variable | Required | Default | Notes |
| yes | — | Your key, starting |
| no |
| Keep the |
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 |
|
| 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 |
|
| Full text and full notes of one prompt. |
| — | 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 |
| The client started the server without the variable. Check the |
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) |
|
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 |
Installation problems are worth reporting even when you work around them: open an issue.
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.
Available Tools
3 toolsget_promptRead a saved promptARead-only
Retrieve the full text of one saved prompt by its id, including any notes. Call this after list_prompts, once you know which prompt you need.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The prompt id, as returned by list_prompts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only (readOnlyHint: true) and open-world (openWorldHint: true). The description adds that notes are included and that it is a retrieve operation, but does not disclose error handling or other behavioral details. Given the simple read nature, this is acceptable but adds only limited extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first clearly states the action and content, the second gives usage direction. It is front-loaded and every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with strong annotations and sibling context, this description covers the purpose, usage sequence (after list_prompts), and what is returned (full text plus notes). No output schema exists, but the return value is adequately described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the only parameter, id, with description 'The prompt id, as returned by list_prompts.' The tool description adds little beyond reinforcing 'by its id', so it does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full text of one saved prompt by its id, including notes. It distinguishes from siblings by specifying it is for a single prompt and recommends calling it after list_prompts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use this tool: 'Call this after list_prompts, once you know which prompt you need.' This provides clear sequencing and context, though it does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList prompt categoriesARead-only
List the user's prompt categories with how many prompts each contains. Useful for narrowing list_prompts on a large library.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds that the tool returns counts of prompts per category, which is useful context about the output. However, it does not describe any edge cases, pagination, or further behavioral details, which would be nice given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core function and appends a practical use case. Every word earns its place; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately conveys what it returns (categories with prompt counts) and why it's useful. It doesn't specify the exact data structure, but for a category listing that is acceptable. The sibling context is also implicitly covered through the use-case note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty with 100% coverage. Per the rubric, a baseline of 4 applies for 0 params, and the description doesn't need to add parameter details. Nothing is missing here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('List') and resource ('the user's prompt categories'), plus the key detail that it includes counts of prompts per category. This distinguishes it from sibling tools list_prompts and get_prompt, which deal with prompts directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions a use case: narrowing list_prompts on a large library. This gives clear context for when to use the tool, though it does not explicitly state when not to use it or directly name alternatives. Still, the tie to list_prompts implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promptsList saved promptsARead-only
List the titles of the user's saved prompts in Keep My Prompts, with their category. Call this when the user refers to a prompt of theirs, asks what is in their library, or asks you to reuse or adapt something they saved. Returns titles only — call get_prompt for the text of the one you need.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Only list prompts in this category. Omit to list every prompt. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds important behavioral context: it returns titles only, not the full text, and includes category information. This goes beyond the annotations and helps set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, usage, and a limitation with an alternative. No redundant phrasing or filler, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is complete. It covers what is returned, when to use it, and what to use for full text. The sibling tool context is also clear, so an agent can select this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single 'category' parameter with 100% coverage, so the description need not repeat it. The description adds marginal value by mentioning 'with their category' in the output, but the parameter semantics are adequately handled by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists titles of saved prompts with their category, using a specific verb ('List') and resource. It distinguishes itself from get_prompt (which returns full text) and implicitly from list_categories (which likely lists categories), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is provided: when the user refers to their prompts, asks about their library, or wants to reuse/adapt something. It also gives an alternative instruction ('call get_prompt for the text'), clarifying when not to rely on this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_prompt - First observed
list_categories - First observed
list_prompts
TDQS
Scored across 3 tools
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.
All tool names follow a consistent verb_noun pattern using snake_case (list_prompts, get_prompt, list_categories). The naming is predictable and readable.
Three tools is well-scoped for a read-only prompt retrieval server. Each tool covers a distinct need without redundancy or bloat.
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
Related MCP Connectors
Professional prompt library over remote MCP: 13 verticals, free discovery scope.
Self-hosted AI prompt library: prompts, collections, tags, teams, chains. 29 MCP tools for agents.
Read-only MCP server exposing a user ORANO library to their own AI agent.
Generate contextual prompts and reusable agent skills, evaluate prompts with the 16-dimension Prompt Score, and manage saved work in PromptDrive. Twelve MCP tools also provide authorized access to private Memory for source-grounded answers. Connect over Streamable HTTP using OAuth 2.1 and PKCE. Generation consumes account quota and automatically saves successful results; Memory access follows account permissions and plan limits.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to search, browse, and retrieve AI prompts from the Tripleshot public API. Provides access to community prompts, trending content, and template rendering capabilities through a durable MCP server interface.-
- AlicenseNot gradedqualityCmaintenanceA lightweight, file-based server for managing and serving personal prompt templates with variable substitution support via the Model Context Protocol. It allows users to store, update, and organize prompts in a local directory through integrated MCP tools and CLI assistants.6 npm7MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to organize, search, and manage a shared library of prompts across AI tools via the Model Context Protocol. It supports hierarchical folder organization, tagging, and template variable substitution for dynamic prompt generation.MIT
- AlicenseAqualityDmaintenanceEnables storage, versioning, and retrieval of prompts with rich metadata via MCP tools, supporting stdio and SSE transports.37 npm3ISC