Filtering by tag is only useful if you know which tags are real, and a model guessing at one gets an empty result that reads as 'no such prompts'. Enumerating them turns the filter into a choice. Separate books with an active one is the other structural decision worth having — it means a personal scratch collection and a team's curated set can coexist without merging, and copy_prompt is the bridge when something in the first deserves to be in the second.
A prompt library manager with two layers: prompt books as configurable databases you activate and switch between, and the prompts inside them with tags, types and search.
- Books are first-class — create a database, add or remove a configuration, rename one, list them, and set which is active.
- copy_prompt moves a prompt between books, which is how a personal experiment graduates into a shared collection.
- Prompts found three ways: by title search, by tag, or by type — and list_all_tags and list_all_types enumerate what actually exists so a filter matches something.
- read_prompt returns the content, with add_prompt and update_prompt covering the write side.
Nothing to supply — the books are databases it manages.
One command — npx -y @piccollage/prompt-book-mcp-server
