MCP Prompts Server
This server stores, searches, and serves prompt templates and agent configurations to MCP clients, with tools for managing and applying prompts.
List prompts and filter by tags or search text.
Retrieve a prompt by ID.
Add new prompts and templates with tags, metadata, variables, and template flags.
Update existing prompts, incrementing their version.
Delete prompts by ID.
Apply templates by filling
{{variables}}and returning the resulting text.Get repository statistics: prompt/template counts, tags, and categories.
Use prompts for project orchestration via the included script and agent templates.
Access the same features through an HTTP JSON API for non-MCP clients.
Supports deployment using Docker and Docker Compose for containerized deployment
Built on Node.js with support for Node.js 18 or later
Provides integration with PostgreSQL databases for storing prompts, with export/import functionality and synchronization between file storage and database
Built using TypeScript, as indicated by the project structure and build process
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., "@MCP Prompts Servercreate a code review prompt for Python with variables for language and code"
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.
mcp-prompts
A Model Context Protocol server that stores, searches and serves prompt templates and agent configurations to any MCP client (Claude Desktop, Claude Code, Cursor and others), plus a script that uses those templates to orchestrate Claude CLI agents over a whole project.
Listed on Glama, MCP Market and AIBASE. A Rust reimplementation focused on memory efficiency and concurrency lives in mcp-prompts-rs.
What It Does
Stores prompts as JSON files in
data/prompts/Exposes MCP tools for querying and managing prompts
Provides agent templates for project orchestration
Works with Claude Desktop, Cursor, and other MCP clients
Related MCP server: PromptingBox MCP Server
Packages
GitHub Packages (preferred):
@sparesparrow/mcp-prompts, registryhttps://npm.pkg.github.comnpm:
@sparesparrow/mcp-prompts, no token needed
Both registries receive the same version from every v* tag (first together at 4.0.2); Docker images follow the same tag.
Docker:
ghcr.io/sparesparrow/mcp-prompts(Docker Hub:sparesparrow/mcp-prompts)
Quick Start
1. Install from GitHub Packages
GitHub Packages asks for a token even for public packages (without one the install fails with 401 Unauthorized). Create a personal access token with the read:packages scope (or, with the GitHub CLI, run gh auth refresh -h github.com -s read:packages), then add this to ~/.npmrc:
@sparesparrow:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_TOKENKeep the token out of any file you commit. Then install:
npm install -g @sparesparrow/mcp-prompts
mcp-prompts # starts the MCP server on stdio; stop it with Ctrl+CThe package ships the prompts in data/prompts, and the server finds them wherever an MCP client starts it from. Set PROMPTS_DIR to use your own directory instead.
To install from npm instead, skip the ~/.npmrc lines above and run npm install -g @sparesparrow/mcp-prompts. It is the same package, and npm needs no token.
2. Add the server to your MCP client
Claude Code, for every project:
claude mcp add -s user mcp-prompts -- mcp-promptsOr for one project, commit a .mcp.json at its root (no paths or tokens in it). Claude Code asks you to approve it the first time:
{
"mcpServers": {
"mcp-prompts": {
"command": "mcp-prompts",
"args": []
}
}
}Check it with claude mcp list. Use one of the two: registering the same name at both scopes gives you two servers.
Claude Desktop and other clients take the same command in their config (for Claude Desktop, claude_desktop_config.json), with the same mcpServers block as above. If the client does not find mcp-prompts on its PATH, use the full path from which mcp-prompts as the command.
Build from source
To run unreleased changes:
pnpm install
pnpm build
node dist/mcp-server-standalone.js # or: pnpm startand point your client at that file:
{
"mcpServers": {
"mcp-prompts": {
"command": "node",
"args": ["/absolute/path/to/mcp-prompts/dist/mcp-server-standalone.js"],
"env": { "PROMPTS_DIR": "/absolute/path/to/mcp-prompts/data/prompts" }
}
}
}3. Use in Claude
Ask Claude:
"List all prompts tagged with orchestration"
"Get the claudepy-esp32-android-bridge-workflow prompt"
"Apply the claudepy-esp32-android-bridge-workflow template with esp32_firmware_path set to ./firmware"
"Add a prompt for Python FastAPI best practices"
Prompts added or changed through add_prompt / update_prompt live in memory and are lost when the server restarts. A prompt that must last is a JSON file under data/prompts/ with a stable id, added by pull request.
HTTP Mode
The same prompts are also available as a JSON API, for clients that don't speak MCP:
pnpm build
PORT=3003 PROMPTS_DIR=$PWD/data/prompts pnpm start:http
# or: npx mcp-prompts-http, or the default Docker image (port 3003)Method and path | Does |
| Liveness, readiness, package version |
| List prompt summaries |
| Add a prompt (same fields as |
| Read, update or delete one prompt |
| Fill a template: |
| Same counts as |
| Call any MCP tool by name: |
curl -s -X POST localhost:3003/v1/prompts/claudepy-esp32-android-bridge-workflow/apply \
-H 'Content-Type: application/json' -d '{"variables":{"esp32_firmware_path":"./firmware"}}'Invalid input answers 400, unknown prompts 404. Set CORS_ORIGIN to allow browser clients.
Changes made over HTTP live in memory, like those made over MCP; the files in data/prompts are not rewritten.
Orchestrating Projects
Use the orchestrate script to analyze entire projects:
./scripts/orchestrate-project.sh ~/projects/mia analyze
./scripts/orchestrate-project.sh ~/projects/esp32-bpm-detector reviewThis automatically:
Detects project type
Loads appropriate main agent
Spawns specialized subagents
Runs comprehensive analysis
Returns structured results
MCP Tools
Tool | Description |
| List prompts, filtered by tags or a search term |
| Retrieve a prompt by ID |
| Add a new prompt or template |
| Modify existing prompt |
| Remove prompt |
| Fill a template prompt's |
| Repository statistics |
Prompts Organization
data/prompts/
├── main-agents/ # 9 project orchestration templates
│ ├── main_agent_python_backend.json
│ ├── main_agent_cpp_backend.json
│ ├── main_agent_android_app.json
│ ├── main_agent_embedded_iot.json
│ ├── main_agent_web_frontend.json
│ └── ... # also web backend, DevOps, multiplatform IoT, generic
│
├── subagents/ # architecture, security and test analysts
├── cognitive/ # 7 layers: perception, episodes, semantic, procedures,
│ # evaluation, meta, transfer
├── embedded/, cross-platform/, home-automation/, mia-car/, voice-intelligence/
│ # domain knowledge
├── claudepy-workflows/, openclaw/
│ # agent workflow and routing prompts
└── learned/ # prompts produced by the learning loopArchitecture
Two layers. The full server (src/mcp/mcp-server.ts) is hexagonal: the domain in src/core (entities,
events, services and the repository and event-bus ports) knows nothing about storage or transport, and
storage adapters plug in behind the ports — file and in-memory in src/adapters; the earlier DynamoDB,
S3 and SQS adapters, Lambda handlers and CDK stack are kept in archive/aws and cdk/. The standalone
server that pnpm start and the npm binary run is the small one below: it reads the JSON files in
PROMPTS_DIR directly and speaks MCP over stdio.
┌──────────────────────────────┐
│ MCP Server (stdio) │
│ ├── list_prompts │
│ ├── get_prompt │
│ ├── add_prompt │
│ └── ... │
├──────────────────────────────┤
│ File Storage │
│ └── data/prompts/*.json │
└──────────────────────────────┘
Orchestration:
orchestrate-project.sh
↓ loads prompts
↓ builds agent config
↓ calls claude CLI
Actual agent executionDevelopment
pnpm install # Install dependencies
pnpm build # Build TypeScript
pnpm dev # Watch mode
pnpm test # Run tests
pnpm orchestrate # Test orchestrationEnterprise Deployment
For enterprise features (AWS, multi-tenant, payments), see archive/aws/README.md.
Most users don't need this - the local MCP server is sufficient.
License
MIT
Available Tools
7 toolsadd_promptB
Add a new prompt. Set isTemplate and variables to make it a template that apply_template can fill.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tags | No | ||
| content | Yes | ||
| metadata | No | ||
| variables | No | ||
| isTemplate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. For a creation/mutation tool it discloses nothing about uniqueness constraints on name, error behavior, or persistence side effects, only the template flag's effect.
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?
Two short sentences with zero filler, and the primary action is front-loaded ahead of the template hint.
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?
A 6-parameter creation tool with a nested variables structure, no annotations, and no output schema needs far more disclosure about required inputs and mutation behavior than this two-sentence description provides.
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?
Schema description coverage is 0% across 6 parameters, so the description must compensate. It only explains 2 of them (isTemplate, variables) and says nothing about name, content, tags, or the nested metadata object, leaving required fields and variable object shape undocumented.
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?
States a specific verb and resource ("Add a new prompt") and clarifies the template-creation mode by naming the sibling consumer, apply_template. This distinguishes it from read/list siblings, though it does not explicitly contrast with update_prompt.
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?
Implies when to use the template path ("Set isTemplate and variables... that apply_template can fill"), but gives no explicit when-to-use vs update_prompt guidance, and no mention of duplicate-name behavior or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_templateB
Fill a template prompt's {{variables}} and return the resulting text.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of a template prompt | |
| variables | Yes | Values for the template variables, by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and only partially discharges it: 'return the resulting text' hints at a non-mutating render, but nothing states whether this is read-only, how missing or extra variable names are handled (error vs. leftover placeholders), or whether the template must already exist. These are the key behavioral questions for a template-rendering tool.
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?
A single sentence with zero filler, front-loading the action and ending with the return value. Nothing is wasted or buried.
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?
Two fully documented parameters and no output schema mean the description needn't explain return values, and it does state that rendered text comes back. However, for a nested-object input with no annotations, the silence on variable-mismatch behavior leaves a real gap for correct invocation.
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?
Schema coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds a small amount of meaning by tying the 'variables' object to the {{placeholder}} syntax, but supplies no format, naming, or completeness rules beyond that.
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?
States a specific verb+resource combination ('Fill a template prompt's {{variables}}') and discloses the outcome ('return the resulting text'), which cleanly separates it from the CRUD siblings like get_prompt, add_prompt, and update_prompt. It doesn't explicitly name a sibling it is not, so it stops short of a 5.
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 never says when to reach for this versus get_prompt, which presumably returns the raw unrendered template. An agent must infer that distinction from the verb alone. No prerequisites, exclusions, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_promptC
Delete a prompt by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Prompt ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a destructive operation, and it says nothing about irreversibility, whether deletion is soft or permanent, required permissions, or what happens if the ID doesn't exist. A single clause on permanence would materially change agent behavior here.
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?
One sentence, front-loaded with the verb, zero padding. Its brevity is appropriate in form but leaves no room for the behavioral context this destructive tool needs.
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 destructive mutation with no annotations and no output schema, the description omits everything an agent would want before invoking it: permanence, error semantics, and post-delete state. Sibling tools in the same family (update_prompt, get_prompt) suggest a lifecycle the definition never acknowledges.
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?
Schema coverage is 100% with a single required 'id' string described as "Prompt ID," so the schema already does the work. The description's "by its ID" restates rather than extends that, and adds no format or sourcing detail (e.g., where IDs come from).
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?
Specific verb plus resource ("Delete a prompt") with the identifier-based selection made explicit, which cleanly separates it from add_prompt, get_prompt, and update_prompt. It stops short of stating any scope or side effects, so it is clear but not maximally distinctive.
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?
There is no guidance on when to use this versus update_prompt or how to recover a deleted prompt, and no prerequisites or confirmation requirements are stated. The agent must infer everything about the call context from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promptC
Get a prompt by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Prompt ID, as returned by list_prompts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It implies a read but never confirms it, and says nothing about permissions, behavior for a missing or deleted ID, or what the response contains.
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?
One short sentence with the identifier constraint front-loaded and zero padding. It is efficient, though the brevity edges toward under-specification rather than deliberate concision.
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 one-parameter lookup tool with full schema coverage and no output schema, the description is minimally viable. It still leaves the return shape and not-found behavior unstated, which an agent must discover by calling it.
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?
With a single parameter at 100% schema coverage, the schema already defines the ID and its provenance. The description's 'by its ID' adds no format, validation, or sourcing detail beyond that, so the baseline 3 applies.
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?
States a specific verb and resource ('Get a prompt') plus the lookup key ('by its ID'), which is enough to separate it from list_prompts. It does not explicitly name the siblings it is not (update_prompt, delete_prompt), so it stops short of a 5.
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 gives no when-to-use guidance, no prerequisites, and no alternatives. The only workflow hint ('as returned by list_prompts') lives in the schema, not the description, so an agent reading the description alone gets no routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsB
Counts of prompts and templates, with the tags and categories in use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose that the response is aggregate counts plus the tags/categories currently in use — useful since no output schema exists. However, it says nothing about scope (all users vs. current user/workspace), permissions, or freshness/rate limits. For a low-risk read tool the omission is tolerable but not thorough.
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?
A single compact clause with no filler, front-loaded on what is counted. It is a noun phrase rather than a full sentence, which slightly reduces clarity about the action, but nothing is wasted.
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?
With no annotations and no output schema, the description is the only source of information about the response, yet it only gestures at 'counts, tags, categories' without shape, naming, or scope. Given the tool's whole value is the data it returns, this is thin; a sentence on the structure and scope of the stats would be needed to be complete.
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 takes zero parameters, so there is nothing for the description to explain and the baseline is 4. No parameter-related confusion is possible 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 names a specific resource (counts of prompts and templates) and even the dimensions it aggregates (tags, categories in use), so an agent knows this is an aggregate-stats endpoint rather than a record fetch. It does not explicitly contrast itself with siblings like list_prompts, though the name makes the distinction fairly obvious. Clear verb-of-sorts plus resource, no real sibling differentiation text.
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?
There is no when-to-use guidance, no mention of alternatives, and no exclusions. The agent must infer from the name that this is the aggregate-counts call and that list_prompts should be used for actual records. No conditional or routing information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promptsA
List prompts, optionally filtered by tags (any match) or a search term.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Return prompts carrying any of these tags | |
| search | No | Text to look for in the name, description or content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. 'List' implies a non-destructive read, and '(any match)' clarifies OR-semantics for tags, which is genuinely useful. However, it says nothing about ordering, pagination, truncation, or permissions for a tool that could return an unbounded collection.
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?
A single sentence with zero waste, front-loading the verb and resource before the optional qualifiers. Nothing could be removed without losing meaning.
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 two-optional-parameter read tool with no output schema, the description covers invocation adequately. The remaining gap is the return shape: it never says what a listed prompt contains or whether the full set is returned at once.
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?
Schema coverage is 100% and the schema already documents both parameters in near-identical wording ('any of these tags', 'name, description or content'). The description's '(any match)' reinforces the OR semantics but adds no syntax, format, or edge-case detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb (List) and resource (prompts), plus the two optional filter modes. It is distinguishable from get_prompt (single fetch) by the verb, though it never names or contrasts any sibling explicitly.
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?
Usage is only implied: the word 'optionally' signals that calling with no arguments lists everything and filters are additive. There is no explicit when-to-use guidance, no statement of when to prefer get_prompt for a specific prompt, and no mention of result limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_promptC
Update fields of an existing prompt; its version is incremented.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Prompt ID | |
| updates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds one useful fact—that the prompt's version is incremented—but omits critical mutation details such as whether updates are partial or full, what permissions are required, whether changes are reversible, and what the response contains.
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 efficient sentence with the key operation and versioning behavior front-loaded. It is concise, though arguably too terse given the nested updates object and mutation semantics.
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 mutation tool with a nested updates object, no annotations, no output schema, and only 50% schema description coverage, the description is incomplete. It does not explain partial-update behavior, versioning implications, or field-level semantics that an agent would need to call it correctly.
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?
Schema description coverage is only 50%, with the entire nested 'updates' object lacking property descriptions. The description says only 'Update fields' and does not enumerate or clarify the meaning of name, tags, content, metadata, variables, or isTemplate, leaving the agent to infer semantics from the raw 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 states a specific verb ('Update') and resource ('existing prompt'), making the operation immediately identifiable. It does not explicitly contrast with siblings like add_prompt or get_prompt, but the verb and resource are distinct enough that an agent can differentiate it without opening the schema.
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?
There is no explicit guidance on when to use this tool versus alternatives such as add_prompt, get_prompt, or apply_template. The implied usage is updating an existing prompt, but no conditions, prerequisites, or exclusions are stated.
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.
6 tool updates
v4.0.2- Changed
add_prompt3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / metadata / propertyNamesAdded value: +{ + "type": "string" +} - changed
Input schema / properties / variables / items / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "additionalProperties": false, - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "required": { - "default": true, - "type": "boolean" - }, - "type": { - "default": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - } -]New value: +[ + { + "type": "string" + }, + { + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "required": { + "default": true, + "type": "boolean" + }, + "type": { + "default": "string", + "enum": [ + "string", + "number", + "boolean" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } +]
- Changed
apply_template2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / variables / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
delete_prompt1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_prompt1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_prompts1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
update_prompt6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / updates / additionalPropertiesRemoved value: -false - removed
Input schema / properties / updates / properties / isTemplate / defaultRemoved value: -false - added
Input schema / properties / updates / properties / metadata / propertyNamesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / updates / properties / tags / defaultRemoved value: -[] - changed
Input schema / properties / updates / properties / variables / items / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "additionalProperties": false, - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "required": { - "default": true, - "type": "boolean" - }, - "type": { - "default": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - } -]New value: +[ + { + "type": "string" + }, + { + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "required": { + "default": true, + "type": "boolean" + }, + "type": { + "default": "string", + "enum": [ + "string", + "number", + "boolean" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } +]
7 tool updates
v4.0.0- First observed
add_prompt - First observed
apply_template - First observed
delete_prompt - First observed
get_prompt - First observed
get_stats - First observed
list_prompts - First observed
update_prompt
TDQS
Scored across 7 tools
Each tool targets a distinct action on the prompt resource: add, get, list, update, delete, apply_template, and get_stats. The only potential confusion is between get_prompt and apply_template, but the descriptions make the distinction between retrieving raw vs. rendered text clear.
All tools follow a consistent verb_noun pattern (delete_prompt, add_prompt, get_prompt, list_prompts, update_prompt, apply_template, get_stats), with only a trivial pluralization difference in list_prompts. Conventions are predictable and readable.
Seven tools is a well-scoped set for a prompt management server, covering exactly the CRUD lifecycle plus templating and stats. Every tool earns its place with no redundancy.
Full CRUD is present (add, get, list, update, delete), plus templating via apply_template and aggregate info via get_stats, and search/filter is folded into list_prompts. This covers the domain's lifecycle with no obvious dead ends.
Maintenance
Related MCP Connectors
Manage, version, and publish LLM prompts with blocks, variables, and evaluations.
Your prompt library in any MCP client: list, fetch, save and version prompt templates.
Your prompt library inside your AI: 1,000+ pro templates, frameworks, vocab & pipelines.
A prompt engineer you talk to. It writes prompts, sharpens yours, and keeps them on your shelf.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables storage and reuse of prompt templates with variable substitution for LLMs. Supports creating, searching, and retrieving prompt templates to avoid repeating complex instructions across conversations.414 npm4MIT
- AlicenseAqualityDmaintenanceAllows users to save, organize, and manage AI prompts, folders, and tags directly within MCP-compatible tools like Claude and Cursor. It supports version history tracking, prompt searching, and the ability to save public templates to a personal collection.203 npmMIT
- 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
- AlicenseBqualityDmaintenanceEnables AI models like Claude to manage local prompt files with CRUD operations, fuzzy search, categorization, templates, version control, and favorites.325MIT