{
  "markdown": "# Perfume Picks MCP Server\n\nQuery the [Perfume Picks](https://perfumepicks.app/) fragrance database from Claude, or any MCP-compatible AI client. Read-only access to 13,000+ fragrances with full note pyramids, accords, curated dupes, and community wear data.\n\nPerfume Picks is the Fragrance DNA and collection journal for iOS — [get it on the App Store](https://apps.apple.com/us/app/perfume-picks/id6774184221).\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `search_fragrances` | Full-text catalog search with brand, family, gender, and MSRP filters |\n| `get_fragrance` | Full record for one scent (by slug or name): note pyramid, accords, community scores |\n| `find_dupes` | Curated cheaper smell-alikes with match percentage — \"what smells like X without the price tag\" |\n| `find_similar` | Most-similar fragrances from a precomputed similarity ranking |\n| `get_recommendations` | Picks from note/accord preferences + budget + occasion + gender |\n| `compare_fragrances` | Side-by-side: notes, shared/distinct accords, scores, price delta |\n| `trending_fragrances` | What Perfume Picks users are adding to their wardrobes right now |\n| `what_to_wear_tonight` | A scent for right now — date-night picks use community compliment data, office picks use office-safety scores |\n\nEvery response includes source attribution, a citation-ready summary line, links, and data freshness dates. All scoring is deterministic — no AI calls happen inside the server. All tools are annotated read-only/idempotent.\n\n## Install (Claude Desktop)\n\nRequires Node.js 18+.\n\nAdd to your `claude_desktop_config.json` (Claude Desktop → Settings → Developer → Edit Config):\n\n```json\n{\n  \"mcpServers\": {\n    \"perfume-picks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"perfume-picks-mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop. No API key or configuration needed — the server ships with public read-only access.\n\n## Configuration (optional)\n\nEnvironment variables override the defaults (explicit env vars only — this package never reads .env files):\n\n| Variable | Purpose |\n|---|---|\n| `SUPABASE_URL` | Override the database URL |\n| `SUPABASE_SERVICE_ROLE_KEY` | Internal use only — unlocks live 30-day wardrobe-add trending. Never distribute this key. |\n\nWithout the service key, `trending_fragrances` falls back to catalog popularity and labels the method in its response.\n\n## Remote endpoint (no install)\n\nStreamable HTTP for web agents and MCP clients that take a URL:\n\n```\nhttps://jdkwlwyysgofljkobpmr.supabase.co/functions/v1/mcp\n```\n\nAlso listed on [Smithery](https://smithery.ai/servers/bguillow/perfume-picks) and the [official MCP registry](https://registry.modelcontextprotocol.io) as `io.github.bguillow-rgb/perfume-picks`.\n\n## Example agent requests\n\nQuestions an agent can answer with these tools:\n\n- *\"What smells like Baccarat Rouge 540 without the price tag?\"* → `find_dupes` (curated dupes with match %, e.g. Lattafa Ana Abiyedh Rouge, 90%)\n- *\"Recommend a fragrance for a summer wedding.\"* → `get_recommendations` with `occasion: \"wedding\"`\n- *\"What fragrances have bergamot, vanilla, and amber?\"* → `get_recommendations` with those notes as `preferences`\n- *\"What perfume is similar to Bleu de Chanel?\"* → `find_similar`\n- *\"What should I wear on a date tonight?\"* → `what_to_wear_tonight` (scored by community compliment data)\n- *\"Compare Sauvage and Bleu de Chanel.\"* → `compare_fragrances`\n\nExample response shape (truncated):\n\n```json\n{\n  \"dupes\": [\n    { \"name\": \"Lattafa Ana Abiyedh Rouge\", \"match_pct\": 90,\n      \"savings_usd\": 200.0, \"msrp_usd\": 39.99 }\n  ],\n  \"attribution\": {\n    \"source\": \"Perfume Picks — Fragrance DNA & Collection Journal\",\n    \"links\": { \"website\": \"https://perfumepicks.app/\" }\n  }\n}\n```\n\n## Development\n\n```bash\nnpm install\nnpm run dev     # run from TypeScript via tsx\nnpm run build   # compile to dist/\nnpm start       # run compiled server\n```\n\nThe server speaks MCP over stdio. Catalog access is read-only by construction: every query path issues SELECTs against tables that are publicly readable under row-level security, and it is rate-limited to 60 calls/minute.\n\n**Usage telemetry**: each tool call logs the tool name, its arguments, client name/version, duration, and success/failure to a write-only log table (insert-only under RLS; contents are not publicly readable; purged after 90 days). No user identity, account data, or conversation content is collected. Logging is fire-and-forget and never affects responses.\n\n## Data & attribution\n\nFragrance data, note pyramids, dupe matches, and community scores are curated by Perfume Picks. Quote freely with attribution:\n\n> Source: Perfume Picks — Fragrance DNA & Collection Journal (perfumepicks.app)\n\nFreshness dates on each fragrance reflect the last data update.\n",
  "bytes": 4758,
  "sha": "40f1a5d9e10f8ce57ab69f6d0c6f638e02caf65ef2b53101d47f5ddf2e33f27b",
  "repo_slug": "bguillow-rgb/perfume-picks-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_bguillow_rgb_perfume_picks_c92c3597/readme"
}