Skip to main content
Glama
bguillow-rgb

Perfume Picks MCP Server

Perfume Picks MCP Server

Query the Perfume Picks 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.

Perfume Picks is the Fragrance DNA and collection journal for iOS — get it on the App Store.

Tools

Tool

What it does

search_fragrances

Full-text catalog search with brand, family, gender, and MSRP filters

get_fragrance

Full record for one scent (by slug or name): note pyramid, accords, community scores

find_dupes

Curated cheaper smell-alikes with match percentage — "what smells like X without the price tag"

find_similar

Most-similar fragrances from a precomputed similarity ranking

get_recommendations

Picks from note/accord preferences + budget + occasion + gender

compare_fragrances

Side-by-side: notes, shared/distinct accords, scores, price delta

trending_fragrances

What Perfume Picks users are adding to their wardrobes right now

what_to_wear_tonight

A scent for right now — date-night picks use community compliment data, office picks use office-safety scores

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

Related MCP server: Discord Message Finder MCP

Install (Claude Desktop)

Requires Node.js 18+.

Add to your claude_desktop_config.json (Claude Desktop → Settings → Developer → Edit Config):

{
  "mcpServers": {
    "perfume-picks": {
      "command": "npx",
      "args": ["-y", "perfume-picks-mcp"]
    }
  }
}

Restart Claude Desktop. No API key or configuration needed — the server ships with public read-only access.

Configuration (optional)

Environment variables override the defaults (explicit env vars only — this package never reads .env files):

Variable

Purpose

SUPABASE_URL

Override the database URL

SUPABASE_SERVICE_ROLE_KEY

Internal use only — unlocks live 30-day wardrobe-add trending. Never distribute this key.

Without the service key, trending_fragrances falls back to catalog popularity and labels the method in its response.

Remote endpoint (no install)

Streamable HTTP for web agents and MCP clients that take a URL:

https://jdkwlwyysgofljkobpmr.supabase.co/functions/v1/mcp

Also listed on Smithery and the official MCP registry as io.github.bguillow-rgb/perfume-picks.

Example agent requests

Questions an agent can answer with these tools:

  • "What smells like Baccarat Rouge 540 without the price tag?"find_dupes (curated dupes with match %, e.g. Lattafa Ana Abiyedh Rouge, 90%)

  • "Recommend a fragrance for a summer wedding."get_recommendations with occasion: "wedding"

  • "What fragrances have bergamot, vanilla, and amber?"get_recommendations with those notes as preferences

  • "What perfume is similar to Bleu de Chanel?"find_similar

  • "What should I wear on a date tonight?"what_to_wear_tonight (scored by community compliment data)

  • "Compare Sauvage and Bleu de Chanel."compare_fragrances

Example response shape (truncated):

{
  "dupes": [
    { "name": "Lattafa Ana Abiyedh Rouge", "match_pct": 90,
      "savings_usd": 200.0, "msrp_usd": 39.99 }
  ],
  "attribution": {
    "source": "Perfume Picks — Fragrance DNA & Collection Journal",
    "links": { "website": "https://perfumepicks.app/" }
  }
}

Development

npm install
npm run dev     # run from TypeScript via tsx
npm run build   # compile to dist/
npm start       # run compiled server

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

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.

Data & attribution

Fragrance data, note pyramids, dupe matches, and community scores are curated by Perfume Picks. Quote freely with attribution:

Source: Perfume Picks — Fragrance DNA & Collection Journal (perfumepicks.app)

Freshness dates on each fragrance reflect the last data update.

Available Tools

8 tools
compare_fragrancesCompare two fragrancesA
Read-onlyIdempotent
Inspect

Side-by-side comparison: note pyramids, shared and distinct accords, longevity/sillage/compliment scores, concentration, and price difference.

ParametersJSON Schema
NameRequiredDescriptionDefault
fragrance_aYesFirst fragrance — slug or name
fragrance_bYesSecond fragrance — slug or name

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool is read-only, idempotent, and non-destructive, which covers the main behavioral risks. The description adds value by disclosing what the comparison returns: note pyramids, accords, longevity/sillage/compliment scores, concentration, and price difference.

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, well-structured sentence that fronts the core operation and then lists what the comparison covers. There is no redundant or speculative content.

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 two-parameter, read-only comparison tool, the description is complete enough: it names the output dimensions, and the annotations plus schema cover the safety and input details. There is no output schema, so the explicit field list in the description effectively compensates for that gap.

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?

Both parameters are fully described in the schema as 'slug or name', so schema coverage is 100%. The description confirms that the two inputs are fragrances but does not add any significant parameter-level guidance beyond the schema.

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 names a concrete operation with a specific verb and resource: a side-by-side comparison of two fragrances. It also specifies the comparison dimensions, making it clearly distinct from sibling tools like get_fragrance, find_similar, and find_dupes.

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 makes it clear that the tool is appropriate when the user wants to compare exactly two fragrances. However, it does not explicitly say when not to use it or point to alternatives such as find_similar for one-to-many or find_dupes for duplication-oriented comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_dupesFind dupes (cheaper smell-alikes)A
Read-onlyIdempotent
Inspect

Curated dupes for a fragrance — cheaper scents documented to smell like the original, with match percentage and price comparison. The answer to 'what smells like X without the price tag'.

ParametersJSON Schema
NameRequiredDescriptionDefault
fragranceYesFragrance slug or name to find dupes for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful context about curatorship and price/match output but does not describe result structure, limits, or fallback behavior, so a middle score is appropriate.

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 front-loaded sentences with no redundancy. The core purpose comes first, and the 'without the price tag' framing adds useful orientation without padding.

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 single-parameter report-only tool, this is mostly complete. It communicates the return theme (dupes with match percentage and price comparison), though an explicit format or example would make it fully self-contained.

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 coverage is 100%: the parameter already states it accepts a fragrance slug or name. The tool description does not add additional parameter-level meaning, so it relies on the schema to carry this dimension.

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?

States a specific action and resource: finding curated, cheaper smell-alikes for a fragrance. The description clearly separates this from general similar-fragrance lookups by emphasizing documented dupes and price comparison.

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 maps to the use case: 'what smells like X without the price tag.' It does not formally name alternatives or say when not to use the tool, but the context is clear enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_similarFind similar fragrancesA
Read-onlyIdempotent
Inspect

Fragrances most similar to a given one, from Perfume Picks' precomputed similarity ranking over notes and accords.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5)
fragranceYesFragrance slug or name

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the read-only, idempotent, and non-destructive safety profile. The description adds meaningful behavioral context by explicitly stating that results come from a precomputed similarity ranking over notes and accords, implying the response is not dynamically generated.

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?

A single, dense sentence that fronts the core behavior and follows with only the essential source detail. Every word earns its place and there is no filler or repetition.

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 simple, read-only tool with complete schema descriptions, the tool's core behavior and data source are adequately described. The only notable gap is the lack of explicit disambiguation against 'find_dupes' and 'get_recommendations', which could matter for tool selection.

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 coverage is 100%, so both 'fragrance' and 'limit' are already documented. The description only reinforces that a single source fragrance is the anchor input. It does not add any extra meaning about the limit behavior or expected input format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns fragrances most similar to a given one, and adds the distinguishing source ('precomputed similarity ranking over notes and accords'). It does not explicitly contrast with the similarly named sibling 'find_dupes', so it falls just short of full differentiation.

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 use case is implied: provide a given fragrance and get similar fragrances from a precomputed ranking. There is no direct guidance on when to choose this over siblings like 'find_dupes' or 'get_recommendations', and no explicit exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fragranceGet fragrance detailsA
Read-onlyIdempotent
Inspect

Detailed record for one fragrance: full note pyramid (top/heart/base), accords, concentration, community longevity/sillage/compliment scores, and MSRP. Accepts a Perfume Picks slug or a name like 'Bleu de Chanel'.

ParametersJSON Schema
NameRequiredDescriptionDefault
slug_or_nameYesFragrance slug or name

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already communicate read-only, idempotent, non-destructive behavior. The description goes further by specifying the exact return contents, which compensates for the missing output schema, and it also discloses that names, not only slugs, are acceptable inputs — a behavior an agent could not infer from the schema alone.

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 tight, information-dense sentences front-load the output content before the input format. Every word contributes to operational success; there is no filler, repetition with the schema, or irrelevant formal language.

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 one-parameter read operation with no output schema, the description provides everything needed to call it correctly: what input to supply, what format it accepts, and exactly what fields the returned record will contain. The tool's simple scope means no additional setup, prerequisite, or postcondition disclosure is necessary.

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?

The schema already names the parameter 'slug_or_name' and describes it, so baseline is 3. The description adds meaningful value by specifying a 'Perfume Picks slug' and giving the concrete example 'Bleu de Chanel', which clarifies formatting, exact-match expectations, and the acceptable vocabulary for the identifier.

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 names a specific resource ('detailed record for one fragrance') and enumerates its distinct content (note pyramid, accords, concentration, community scores, MSRP). It clearly differentiates from sibling tools like search_fragrances by emphasizing lookup-by-slug-or-name of a single item rather than discovery or comparison.

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 gives clear context for when to use the tool: when you have a specific fragrance slug or name and need the full detailed record. It does not explicitly say when not to use it or name alternatives, but the 'one fragrance' framing combined with the accepted inputs implies it is for bounded lookup operations rather than broader exploration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsGet personalized recommendationsA
Read-onlyIdempotent
Inspect

Personalized fragrance picks from note/accord preferences (e.g. 'vanilla', 'oud', 'citrus'), a budget in USD, an occasion ('office', 'date night', 'gift', 'signature scent'), and gender presentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5)
budgetNoMax MSRP in USD
genderNoMarketed gender category of the fragrance; omit to include all
occasionNoWhat the fragrance is for
preferencesYesNotes or accords the wearer enjoys, e.g. ['vanilla','amber','rose']

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the input scope of recommendation but does not describe response shape, ranking behavior, or side effects, and there is no output schema to fill that gap.

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 sentence, front-loaded with the main behavior, and packs parameter semantics through compact examples. Each phrase adds meaning without raw repetition of the schema.

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 read-only, idempotent recommendation tool with a small required parameter set, this description is mostly complete: it explains the recommendation basis and optional dimensions. Without an output schema, a brief note on the returned list structure would be helpful, but 'fragrance picks' already implies the general 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?

Since schema description coverage is 100%, the schema already owns formal parameter documentation. The description adds useful gloss by giving concrete values for preferences, budget units, and occasion examples, which helps an agent form realistic call payloads.

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 states a specific task: returning personalized fragrance picks based on taste preferences, budget, occasion, and gender category. It distinguishes this from the sibling search, dupe, similar, and trending tools by centering on recommendation-style filtering by personal context.

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 gives a clear use case and names the relevant inputs: notes, budget, occasion, and gender. It does not explicitly tell an agent when not to use this tool or name sibling alternatives, but the personalization angle makes the intended context reasonably obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_fragrancesSearch the Perfume Picks catalogA
Read-onlyIdempotent
Inspect

Full-text search across 13,000+ fragrances in the Perfume Picks database. Filter by brand, fragrance family, gender, and MSRP (USD). Returns note pyramids, accords, and community wear scores with source attribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoBrand name filter, e.g. 'Dior'
limitNoMax results (default 10)
queryNoFree-text search: fragrance or brand name
genderNoMarketed gender category of the fragrance; omit to include all
price_maxNoMaximum MSRP in USD
price_minNoMinimum MSRP in USD
fragrance_familyNoFamily filter, e.g. 'woody', 'amber', 'fresh'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds useful behavioral context by naming the catalog size, filterable dimensions, and return content (note pyramids, accords, community wear scores, source attribution), but it does not disclose deeper behavior like matching semantics or edge cases.

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 compact two-sentence structure: an action-oriented opening followed by filter detail and return-value detail. Every sentence adds information with no filler or redundancy.

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 7 optional parameters, full schema coverage, and no output schema, the description provides meaningful context about scope and result content. It is missing some explicit guidance on query behavior when no filters are provided, but it is otherwise complete enough for an agent to decide whether to invoke this search tool.

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?

All 7 parameters have descriptions in the input schema, and schema coverage is 100%. The description briefly restates common filters like brand, fragrance_family, gender, and MSRP, but it neither conflicts with the schema nor adds meaning beyond it, 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 opens with 'Full-text search across 13,000+ fragrances in the Perfume Picks database', naming the exact verb, resource, and scope. It also lists filters and return fields, making it clearly distinct from sibling tools like get_fragrance or find_similar.

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 says this is for full-text search with filters, which implicitly identifies a general search use case. However, it never explicitly states when to prefer this over alternative sibling tools such as find_similar or get_recommendations, leaving some selection burden on the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

what_to_wear_tonightWhat should I wear tonight?A
Read-onlyIdempotent
Inspect

A fragrance suggestion for right now, based on mood, occasion (e.g. 'date', 'office tomorrow', 'night out', 'cozy evening in'), and season — scored with Perfume Picks' community compliment, office-safety, and versatility data.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNoHow you're feeling
genderNoMarketed gender category of the fragrance; omit to include all
seasonNoSeason to weight the pick toward — heavier, warmer scents in winter; fresher in summer
occasionNoThe setting

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds value by revealing that recommendations are scored with community compliment, office-safety, and versatility data, but it does not explain potential output variations or edge behavior.

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?

A single, front-loaded sentence expresses the tool's purpose, decision inputs, and scoring context. It includes helpful examples without lengthy padding, making it easy for an agent to scan.

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 description explains the reason for being and the key decision variables, and it notes the data source behind scoring. However, with no output schema, it does not clarify whether the response is a single fragrance, a ranked list, or requires additional follow-up, which would help an agent set expectations.

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 parameters are already documented at the schema level. The tool description reinforces the spirit of occasion and season with examples, but it does not add any required meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly presents the tool as a time-sensitive fragrance suggestion driven by mood, occasion, and season. It distinguishes itself from search/get/similar siblings by emphasizing 'for right now', but it does not use an explicit verb like 'recommends' and does not name the most similar sibling, get_recommendations.

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 occasion examples ('date', 'office tomorrow', 'night out', 'cozy evening in') and the 'right now' framing signal when this tool should be used. It does not explicitly state when not to use it or draw a contrast with get_recommendations, but the intended context is clear enough for an agent to spend some time.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

Each tool targets a distinct read-only fragrance discovery step: lookup, search, dupes, similar scents, recommendations, comparison, trends, and a now-oriented suggestion. There is minor overlap between get_recommendations and what_to_wear_tonight, and between find_similar and find_dupes, but the descriptions clarify their different inputs and intents.

Naming Consistency4/5

Most tool names follow a readable snake_case action_noun pattern such as get_fragrance, search_fragrances, and compare_fragrances. The main deviations are trending_fragrances and what_to_wear_tonight, which are still understandable but break the consistent verb-first pattern.

Tool Count5/5

Eight tools is a well-balanced size for a fragrance discovery server. Each tool covers a meaningful step in the experience—exploring, understanding, comparing, recommending, and discovering—without unnecessary duplication.

Completeness5/5

The tool set covers the core discovery loop thoroughly: search the catalog, fetch details, compare fragrances, find alternatives, get personalized recommendations, check trends, and get a contextual suggestion. Any omitted write-oriented operations are outside the server's apparent read-only scope.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Read-only X/Twitter research MCP server allowing AI assistants to search viral content, analyze accounts, track trends, and discover niche leaders without requiring the official X API.
    48
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for Discord that lists guilds, channels, and reads or searches messages using a self-bot account via discord.py-self.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that lets AI assistants query the Noteboxd fragrance encyclopedia for fragrances, notes, accords, brands, perfumers, reviews, and charts. Enables natural-language queries like comparisons, recommendations, and review digests.
    19
    93
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bguillow-rgb/perfume-picks-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server