Skip to main content
Glama
charliemday

Pretty Prompt MCP Server

by charliemday
README.md
# 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

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