Pretty Prompt MCP Server
This server allows you to manage and improve prompts using the Pretty Prompt library and prompt improver.
List, save, and manage prompts in your personal library.
Organize your prompts into folders.
Improve and refine prompts using Pretty Prompt's AI capabilities, consuming your prompt credits.
Integrate with MCP clients like Cursor and Claude Desktop.
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., "@Pretty Prompt MCP Serverlist my saved prompts"
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.
Pretty Prompt MCP Server
MCP server that exposes your Pretty Prompt library and prompt improver to Cursor, Claude Desktop, and other MCP clients.
Tools
Tool | Description |
| List saved prompts from your library |
| Fetch one prompt by id (full text, folder, tags, notes) |
| Save a prompt to your library |
| Update title, text, favourite status, or notes |
| Favourite or unfavourite a prompt by id |
| Permanently delete a prompt from your library |
| List folders in your library |
| Create a folder (optionally nested under a parent) |
| Rename an existing folder |
| Delete a folder (prompts move to root; optional strategies) |
| Move a prompt into a folder (or to root) |
| List all tags (UUID id, name, color) |
| Fetch one tag by UUID |
| Create a new tag |
| Rename or recolor a tag by UUID |
| Delete a tag by UUID |
| Apply a tag to a prompt by ids |
| Remove a tag from a prompt by ids |
| List saved context snippets (numeric ids for improve_prompt) |
| Create a context snippet (optional personal/work tag) |
| Update a context snippet's title, text, or global flag |
| Permanently delete a context snippet by id |
| Improve/refine a prompt (uses your Pretty Prompt credits) |
Related MCP server: PromptingBox MCP Server
Setup
1. Generate an API key
Go to pretty-prompt.com/settings/mcp and create an API key.
2. Build
npm install
npm run build3. Configure Cursor
Add to your Cursor MCP config (~/.cursor/mcp.json or project
.cursor/mcp.json):
{
"mcpServers": {
"pretty-prompt": {
"command": "npx",
"args": ["-y", "@pretty-prompt/mcp@latest"],
"env": {
"PRETTY_PROMPT_API_KEY": "pp_mcp_..."
}
}
}
}For local development, override the production defaults:
"env": {
"PRETTY_PROMPT_API_KEY": "pp_mcp_...",
"PRETTY_PROMPT_BACKEND_URL": "http://0.0.0.0:8000",
"PRETTY_PROMPT_SUPABASE_URL": "http://127.0.0.1:54321",
"PRETTY_PROMPT_SUPABASE_ANON_KEY": "your-local-anon-key"
}Environment variables
Variable | Required | Default | Description |
| Yes | — | API key from settings ( |
| No |
| FastAPI backend URL |
| No |
| Supabase project URL |
| No | Production anon key | Supabase anon key |
| No | enabled | Set to |
| No | Production PostHog key | Override PostHog project key |
Analytics
The MCP server sends PostHog events (fire-and-forget) for:
Event | When |
| Each time the server process starts and authenticates |
| First successful connection for an API key on this machine |
| Each tool invocation (name, success, duration, sanitized params) |
Events are attributed to the user's email from the MCP access token. Prompt text is never sent — only lengths and flags.
Disable locally with PRETTY_PROMPT_ANALYTICS=false.
Override env vars to point at local services:
PRETTY_PROMPT_BACKEND_URL=http://0.0.0.0:8000
PRETTY_PROMPT_SUPABASE_URL=http://127.0.0.1:54321Ensure the backend has SUPABASE_JWT_SECRET set and the mcp_api_keys
migration is applied.
Available Tools
5 toolsimprove_promptA
Improve and refine a prompt using Pretty Prompt. Returns a polished prompt (flattened text plus structured sections), an explanation, and optional follow-up questions. Uses the user's prompt credits. To refine further, call again with question_answers from the follow_up_questions.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The prompt text to improve | |
| category | No | Optional category (General, Image, Video, Vibe Coding, Research, Agent, System Prompt) | |
| provider | No | Optional target provider (e.g. openai, perplexity, lovable) | |
| save_to_library | No | If true, also save the improved prompt to the library | |
| question_answers | No | Map of follow-up question → selected answers for a refine pass | |
| context_snippet_ids | No | Specific context snippet IDs to include | |
| include_context_snippets | No | Include the user's saved context snippets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the side effect of consuming prompt credits, and describes the return value (polished prompt, explanation, optional follow-up questions). It does not mention any destructive or irreversible behaviors, which is appropriate for this non-destructive operation. The description adds meaningful behavioral context beyond the schema, though it could elaborate on the credit mechanics or the structured output format.
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 sentences, front-loaded with the core purpose and return value. The second sentence provides crucial iterative guidance without wasted words. Every clause earns its place, and the structure makes it easy for an agent to quickly parse the tool's function, cost, and refinement workflow.
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 tool with 7 parameters and no output schema, the description adequately covers the return shape (polished prompt, explanation, follow-up questions), the side effect (credit usage), and the iterative refinement flow. It does not need to restate parameter details since the schema is fully covered. Minor gaps exist around how category/provider options affect behavior, but the description is complete enough for an agent to select and invoke the tool correctly on the first pass.
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 input schema has 100% description coverage for all 7 parameters, so the baseline is 3 per the rubric. The description adds a bit of context by explaining how question_answers relates to follow-up questions from a previous call ('To refine further, call again with question_answers from the follow_up_questions'), but this is only incremental and does not significantly compensate for the lack of deeper semantics in the schema descriptions.
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 purpose: 'Improve and refine a prompt using Pretty Prompt.' It specifies the resource (prompt) and action (improve/refine), and the mention of returning a polished prompt distinguishes it from library-management siblings like list_library_prompts and save_to_library.
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 provides clear usage context, including that the tool uses the user's prompt credits and that it returns follow-up questions. It also gives an explicit iterative instruction: 'To refine further, call again with question_answers from the follow_up_questions.' However, it does not explicitly state when not to use the tool or name alternative tools beyond the implicit distinction from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_library_foldersA
List folders in the user's Pretty Prompt library. Use this before move_prompt_to_folder to get folder UUIDs. Folders are a flat list; parent_id indicates nesting (null = root).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description supplies the behavioral context. It discloses that 'Folders are a flat list; parent_id indicates nesting (null = root),' which is a key structural detail that affects how callers interpret results. The read-only nature is implied by 'List,' though not explicitly stated.
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 deliver purpose, usage guidance, and a structural note without extraneous words. The description is front-loaded with the primary action.
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?
Given the zero-parameter input and no output schema, the description covers purpose, usage context, and a key data attribute. It is sufficiently complete for a simple folder-listing operation, though it could mention pagination or return shape.
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?
There are zero parameters in the schema, so the baseline score of 4 applies. The description adds no parameter details, which is appropriate since none exist.
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 'List folders in the user's Pretty Prompt library' with a specific verb and resource. It distinguishes itself from sibling tools by focusing on folders, and specifically mentions its role before move_prompt_to_folder.
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 instructs 'Use this before move_prompt_to_folder to get folder UUIDs,' providing a clear when-to-use scenario. It does not mention alternatives or exclusion cases, but the folder-specific scope is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_library_promptsB
List saved prompts from the user's Pretty Prompt library.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default: all) | |
| offset | No | Pagination offset | |
| search | No | Search in title, prompt text, or origin | |
| favorites_only | No | Return only favourite prompts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It does not mention that this is a read-only operation, nor does it disclose pagination behavior or that all prompts are returned by default. The scope is limited to the user's library, but important behavioral traits are absent.
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, clear sentence without wasted words. It is front-loaded with the action and resource. However, it is minimal and could add more context without becoming verbose.
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?
Given the moderate complexity and complete schema documentation, the description is adequately functional but lacks an output schema or behavioral notes. It does not explain return format or mention optional filters, though the schema covers parameters. It is sufficient for a simple list tool but not complete for richer use.
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 100%, so the baseline is 3 even without parameter details in the description. The description adds no additional meaning beyond what the schema already provides, but it does not need to compensate for gaps.
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 saved prompts from the user's Pretty Prompt library, using a specific verb and resource. It distinguishes itself from sibling tools like list_library_folders, which targets folders, and save_to_library, which is for saving.
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 provides no guidance on when to use this tool versus alternatives. It does not mention criteria like filtering or when to prefer list_library_folders or improve_prompt. There is no context about exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_prompt_to_folderA
Move a library prompt into a folder, or to the library root. Call list_library_folders first to resolve folder UUIDs. Pass folder_id=null to remove the prompt from its folder.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | Destination folder UUID, or null for root | |
| prompt_id | Yes | Library prompt ID (from list_library_prompts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses the state-changing behavior: moving a prompt to a folder or root, and removing it from a folder with folder_id=null. This is transparent about the operation's effect, though it doesn't detail error cases or side effects beyond the move.
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 concise sentences with the primary action front-loaded. Every clause adds value: the move action, the prerequisite, and the special null behavior. No wasted words and no repetition of schema details.
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 two-parameter tool with no annotations and no output schema, the description covers the essential behavior, the key edge case (null), and the necessary precursor step. It is complete enough for an agent to select and invoke the tool correctly without further documentation.
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 both parameters described, giving a baseline of 3. The description adds value by clarifying the null semantics for folder_id ('remove the prompt from its folder') and the prerequisite to call list_library_folders, which enriches the meaning beyond the schema's field descriptions.
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 action: 'Move a library prompt into a folder, or to the library root.' It uses a specific verb ('Move') and resource ('library prompt'), and distinguishes itself from siblings like list_library_prompts and save_to_library by focusing on organization rather than creation or listing.
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?
Provides explicit prerequisite guidance: 'Call list_library_folders first to resolve folder UUIDs.' It also explains when to use folder_id=null. While it doesn't explicitly mention when not to use this tool versus alternatives, the context is clear that this is for moving existing prompts, not for saving new ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_to_libraryA
Save a prompt to the user's Pretty Prompt library.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional display title | |
| prompt | Yes | The prompt text to save |
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 only states the action (save) and destination (library), but does not mention side effects (e.g., overwrites or duplicates), authentication requirements, return values, or error behavior. This is a significant gap for a write operation.
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 concise sentence with no redundant information. It is front-loaded with the action and resource, making it 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?
The tool is simple, and the schema fully documents parameters, but the description lacks context about what happens after saving (e.g., return value or confirmation) and does not reference sibling tools for follow-up actions (e.g., viewing via list_library_prompts). This leaves some gaps for practical use.
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 input schema already describes both parameters (title and prompt) with 100% coverage. The description does not add any additional meaning or context to the parameters, so the baseline score of 3 is appropriate.
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 'Save a prompt to the user's Pretty Prompt library' uses a clear verb (save) and resource (prompt to library), and distinguishes this tool from siblings like list_library_prompts (listing) and move_prompt_to_folder (moving). It is specific and 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?
The description does not explicitly state when to use this tool versus alternatives, such as 'use for creating new prompts, not for moving existing ones.' However, the verb 'save' implies it is for adding new prompts, and the sibling names provide some context. This is implied rather than explicit.
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.
5 tool updates
v0.3.0- First observed
improve_prompt - First observed
list_library_folders - First observed
list_library_prompts - First observed
move_prompt_to_folder - First observed
save_to_library
TDQS
Scored across 5 tools
Each tool targets a distinct resource and action: listing prompts, saving prompts, listing folders, moving prompts, and improving prompts. There is no overlap or ambiguity between them.
Most tools follow a clear verb_noun or verb_preposition_noun pattern (list_library_prompts, save_to_library, move_prompt_to_folder), but the mix of styles (list_*, save_to_*, move_*_to_*, improve_*) is slightly inconsistent. Still, names are readable and predictable.
With 5 tools, the server is well-scoped for a library management and prompt improvement service. Each tool has a clear purpose and none are redundant.
The set covers listing, saving, organizing, and improving prompts. Missing delete/update operations for prompts or folders are minor gaps that agents can work around, but the core workflow is complete.
Maintenance
Related MCP Connectors
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Your prompt library inside your AI: 1,000+ pro templates, frameworks, vocab & pipelines.
Self-hosted AI prompt library: prompts, collections, tags, teams, chains. 29 MCP tools for agents.
- PromptOTOAuthcom.promptot
Manage, version, and publish LLM prompts with blocks, variables, and evaluations.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to thousands of AI prompts from prompts.chat, enabling users to search, browse, and use community-curated prompts with variable substitution directly in their AI coding assistant.219534ISC
- 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.208MIT
- 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