Skip to main content
Glama
charliemday

Pretty Prompt MCP Server

by charliemday

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_library_prompts

List saved prompts from your library

get_library_prompt

Fetch one prompt by id (full text, folder, tags, notes)

save_to_library

Save a prompt to your library

update_library_prompt

Update title, text, favourite status, or notes

favorite_library_prompt

Favourite or unfavourite a prompt by id

delete_library_prompt

Permanently delete a prompt from your library

list_library_folders

List folders in your library

create_library_folder

Create a folder (optionally nested under a parent)

rename_library_folder

Rename an existing folder

delete_library_folder

Delete a folder (prompts move to root; optional strategies)

move_prompt_to_folder

Move a prompt into a folder (or to root)

list_library_tags

List all tags (UUID id, name, color)

get_library_tag

Fetch one tag by UUID

create_library_tag

Create a new tag

update_library_tag

Rename or recolor a tag by UUID

delete_library_tag

Delete a tag by UUID

add_tag_to_library_prompt

Apply a tag to a prompt by ids

remove_tag_from_library_prompt

Remove a tag from a prompt by ids

list_context_snippets

List saved context snippets (numeric ids for improve_prompt)

create_context_snippet

Create a context snippet (optional personal/work tag)

update_context_snippet

Update a context snippet's title, text, or global flag

delete_context_snippet

Permanently delete a context snippet by id

improve_prompt

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 build

3. 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

PRETTY_PROMPT_API_KEY

Yes

API key from settings (pp_mcp_...)

PRETTY_PROMPT_BACKEND_URL

No

https://production.pretty-prompt.com

FastAPI backend URL

PRETTY_PROMPT_SUPABASE_URL

No

https://api.pretty-prompt.com

Supabase project URL

PRETTY_PROMPT_SUPABASE_ANON_KEY

No

Production anon key

Supabase anon key

PRETTY_PROMPT_ANALYTICS

No

enabled

Set to false to disable PostHog analytics

PRETTY_PROMPT_POSTHOG_KEY

No

Production PostHog key

Override PostHog project key

Analytics

The MCP server sends PostHog events (fire-and-forget) for:

Event

When

mcp_server_started

Each time the server process starts and authenticates

mcp_first_connected

First successful connection for an API key on this machine

mcp_tool_called

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:54321

Ensure the backend has SUPABASE_JWT_SECRET set and the mcp_api_keys migration is applied.

Available Tools

5 tools
improve_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe prompt text to improve
categoryNoOptional category (General, Image, Video, Vibe Coding, Research, Agent, System Prompt)
providerNoOptional target provider (e.g. openai, perplexity, lovable)
save_to_libraryNoIf true, also save the improved prompt to the library
question_answersNoMap of follow-up question → selected answers for a refine pass
context_snippet_idsNoSpecific context snippet IDs to include
include_context_snippetsNoInclude the user's saved context snippets

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default: all)
offsetNoPagination offset
searchNoSearch in title, prompt text, or origin
favorites_onlyNoReturn only favourite prompts

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idNoDestination folder UUID, or null for root
prompt_idYesLibrary prompt ID (from list_library_prompts)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional display title
promptYesThe prompt text to save

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 5 tool updatesv0.3.0
    • First observedimprove_prompt
    • First observedlist_library_folders
    • First observedlist_library_prompts
    • First observedmove_prompt_to_folder
    • First observedsave_to_library

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    2
    195
    34
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Allows 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.
    20
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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