Pretty Prompt MCP Server
# 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) |
## Setup
### 1. Generate an API key
Go to [pretty-prompt.com/settings/mcp](https://pretty-prompt.com/settings/mcp)
and create an API key.
### 2. Build
```bash
npm install
npm run build
```
### 3. Configure Cursor
Add to your Cursor MCP config (`~/.cursor/mcp.json` or project
`.cursor/mcp.json`):
```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:
```json
"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:
```bash
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.
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.