<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 10ML</title>
    <description>The latest articles on DEV Community by 10ML (@10mlcom).</description>
    <link>https://dev.to/10mlcom</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4195031%2Fd408dfae-7dc6-41c8-a8ab-9e7d1d5b1fb4.png</url>
      <title>DEV Community: 10ML</title>
      <link>https://dev.to/10mlcom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/10mlcom"/>
    <language>en</language>
    <item>
      <title>Perfume MCP servers compared: a 40-question benchmark</title>
      <dc:creator>10ML</dc:creator>
      <pubDate>Wed, 21 Oct 2026 04:55:00 +0000</pubDate>
      <link>https://dev.to/10mlcom/perfume-mcp-servers-compared-a-40-question-benchmark-2hok</link>
      <guid>https://dev.to/10mlcom/perfume-mcp-servers-compared-a-40-question-benchmark-2hok</guid>
      <description>&lt;p&gt;If you search for a perfume MCP server you find a handful of options and very little data on how they behave. So on 20 October 2026 we ran the same 40 questions against five perfume MCP servers that answer without an API key or sign-in, and wrote down what happened.&lt;/p&gt;

&lt;p&gt;One disclosure before the numbers: we built one of the servers in the test, 10ML Perfume Finder. That is an obvious conflict of interest, which is why the method, rubric, the 40 questions and the summary data are published and the limits are listed below. The full write-up is on &lt;a href="https://10ml.com/perfume-mcp-servers-compared" rel="noopener noreferrer"&gt;10ml.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we measured
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date and place:&lt;/strong&gt; Tuesday 20 October 2026, 06:24 to 06:32 UTC, from one machine on a home connection in Southeast Asia. Latency includes the trip to each server's nearest edge, so it is one vantage point, not a global figure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client:&lt;/strong&gt; Node 25.9 with plain &lt;code&gt;fetch&lt;/code&gt;, MCP Streamable HTTP (protocol 2025-06-18), one connection per server, no caching, no retries (one exception, see limits). No language model in the loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Politeness:&lt;/strong&gt; at most one request per second to any server, ours included. Per server: one &lt;code&gt;initialize&lt;/code&gt;, one &lt;code&gt;tools/list&lt;/code&gt;, one unscored warm-up question, then the 40 questions once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Questions:&lt;/strong&gt; 40 fixed questions written before the run and not tuned to any index: 20 well-known perfumes, 10 niche or Middle-Eastern perfumes, 3 note questions, 2 similar-scent questions, 2 house questions and 3 questions in German, French and Spanish, passed to the tools as written. 10ML was also given its documented locale argument for those three.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoring:&lt;/strong&gt; a lookup counts as correct when the answer contains the perfume name, the house and at least two of its headline notes. A note question is correct with at least 4 entries mentioning the note or 2 well-known perfumes from a fixed list; similar-scent and house questions need 1 or 3 perfumes from fixed lists. The rules were written before the run and applied the same way to every server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calls:&lt;/strong&gt; each server was driven the way an agent would use its own tools: one detail call where the server accepts names, a search then a detail call where it needs an id. Where a server has no tool for a question type, its search tool was used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server&lt;/th&gt;
&lt;th&gt;Correct /40&lt;/th&gt;
&lt;th&gt;Median latency&lt;/th&gt;
&lt;th&gt;p95&lt;/th&gt;
&lt;th&gt;Calls per question&lt;/th&gt;
&lt;th&gt;Tools&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10ML Perfume Finder (10ML Fragrance Index 2.3.0)&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;232 ms&lt;/td&gt;
&lt;td&gt;691 ms&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ScentVerdict 2.0.0&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;698 ms&lt;/td&gt;
&lt;td&gt;899 ms&lt;/td&gt;
&lt;td&gt;1.85&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parfum Bible 1.0.0&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;3,150 ms&lt;/td&gt;
&lt;td&gt;5,342 ms&lt;/td&gt;
&lt;td&gt;2.60&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perfume Picks 1.0.5, called at 1 request/s&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;1,237 ms&lt;/td&gt;
&lt;td&gt;2,832 ms&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perfume Picks 1.0.5, rate limit respected&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;not comparable&lt;/td&gt;
&lt;td&gt;not comparable&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parfica 1.0&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;1,099 ms&lt;/td&gt;
&lt;td&gt;2,632 ms&lt;/td&gt;
&lt;td&gt;1.88&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two notes on the table. Perfume Picks' 1/s latency includes the 19 instant refusals. Perfume Picks has a documented limit of 60 calls a minute, but at one request per second it began refusing at question 22 (19 refusals), so we re-ran the 19 unanswered questions four seconds apart after a 60-second pause and report both. Parfica returned note names in Ukrainian; with an agent translating them it would reach 34 of 40, but our scripted client does not translate.&lt;/p&gt;

&lt;p&gt;ScentRev, Noteboxd, Fragella and Fraganty need a key or sign-in, so they could not be scored.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the servers differ
&lt;/h2&gt;

&lt;p&gt;The scores tell part of the story. Measured on the responses and on each server's &lt;code&gt;tools/list&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Output schemas:&lt;/strong&gt; 10ML Perfume Finder declares them on all 15 tools and ScentVerdict on all 6; Parfum Bible, Perfume Picks and Parfica declare none.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Note pyramids:&lt;/strong&gt; a full top, heart and base pyramid came back in 29 of 30 lookup answers for 10ML, and in 30 of 30 for Parfum Bible, Perfume Picks (21 in the 1/s run) and Parfica (in Ukrainian). ScentVerdict returns flat key notes from its lookup tool; a separate scent-profile tool returns the pyramid, but we did not call it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool-list weight:&lt;/strong&gt; 10ML's &lt;code&gt;tools/list&lt;/code&gt; is the heaviest at 60.5 KB, against 39.2 KB for ScentVerdict's six tools and 6.6 KB for Perfume Picks' eight. If you care about context budget, that is a real cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where we lose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Breadth.&lt;/strong&gt; Perfume counts are each server's own figure and were not independently counted: ScentVerdict says 31,000+, Perfume Picks 13,000+, against 5,406 in the 10ML Fragrance Index. The questions were chosen to be answerable by a mainstream index, so the benchmark says nothing about perfumes beyond those 5,406. On a set of obscure perfumes, larger indexes would pull ahead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile depth.&lt;/strong&gt; 4,925 of the 5,406 entries are core profiles without longevity, projection or perfumers; 481 are full editorial profiles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One miss.&lt;/strong&gt; "Similar to Hermès Terre d'Hermès" returned plausible shared-note neighbours that were not on our fixed list. The similar-scent rubric is the weakest part of the benchmark: n is 2, and lists cannot hold every sound answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extras.&lt;/strong&gt; ScentVerdict adds a written verdict per perfume. Perfume Picks adds community wear scores and curated alternatives. Parfum Bible adds US retailer offers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits of the test
&lt;/h2&gt;

&lt;p&gt;One run, from one place. With n = 40, a one-question gap is within noise. The set leans mainstream by design. Two scoring faults were found after the initial pass (escaped accents in JSON, and note questions initially scored against a fixed perfume list alone); we fixed them for every server and rescored all saved responses. Initial-pass scores were 10ML 37, ScentVerdict 32, Parfum Bible 33, Perfume Picks 18 and Parfica 2. Parfica was run twice, the second time with a name-only retry, and that run is reported.&lt;/p&gt;

&lt;p&gt;Also, every server was driven by a plain script. A model that retries or translates would lift Parfica and Perfume Picks and shrink the single-call advantage we measured. We plan to re-run the test monthly. The summary data is CC BY 4.0 as CSV and JSON on the benchmark page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The MCP endpoint is one URL, free, with no API key and no account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://mcp.10ml.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http perfume-finder https://mcp.10ml.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Cursor, &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"perfume-finder"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.10ml.com/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setup for Claude, ChatGPT, VS Code, Gemini CLI, Windsurf, Cline, Goose and Zed is on the &lt;a href="https://10ml.com/perfume-mcp-server" rel="noopener noreferrer"&gt;perfume MCP server page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you would rather call it from your own code, the same answers are available as plain GET requests (open CORS, JSON back):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mcp.10ml.com/api/v1/perfumes/Baccarat%20Rouge%20540?format=detailed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;perfume&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;perfume&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;perfume&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pyramid&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Curl and Python examples, the other endpoints and an OpenAPI 3.1 description are on the &lt;a href="https://10ml.com/perfume-api" rel="noopener noreferrer"&gt;perfume API page&lt;/a&gt;. It is read-only; fair-use rate limiting may apply, so keep bulk jobs polite and cache what you fetch.&lt;/p&gt;

&lt;p&gt;If you run a perfume server and want it in the next round, or you think a question type is missing from the set, tell us in the comments. The questions and rubric are on the benchmark page so you can rerun the questions yourself.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>api</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Give Claude, Cursor or VS Code expert perfume knowledge with one MCP URL</title>
      <dc:creator>10ML</dc:creator>
      <pubDate>Mon, 19 Oct 2026 23:11:19 +0000</pubDate>
      <link>https://dev.to/10mlcom/give-claude-cursor-or-vs-code-expert-perfume-knowledge-with-one-mcp-url-13ba</link>
      <guid>https://dev.to/10mlcom/give-claude-cursor-or-vs-code-expert-perfume-knowledge-with-one-mcp-url-13ba</guid>
      <description>&lt;p&gt;Ask a general-purpose assistant what a perfume smells like and you usually get a confident paragraph that mixes up flankers, invents notes, or recommends something that was discontinued years ago. Fragrance is a niche where structured, curated data makes a big difference.&lt;/p&gt;

&lt;p&gt;So we put the &lt;strong&gt;10ML Fragrance Index&lt;/strong&gt; behind a public MCP server. It is free, read-only and needs no account or API key. You add one URL and your assistant can answer perfume questions with real note pyramids, accords, families and editor-written context.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://mcp.10ml.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Transport is Streamable HTTP, authentication is none.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is in the index
&lt;/h2&gt;

&lt;p&gt;The index is curated by the fragrance editors at &lt;a href="https://10ml.com" rel="noopener noreferrer"&gt;10ML&lt;/a&gt;, a European perfume decant shop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;about 480 profiled designer, niche and Middle-Eastern perfumes with full note pyramids&lt;/li&gt;
&lt;li&gt;285 notes explained (what they smell like, what they pair with)&lt;/li&gt;
&lt;li&gt;180+ perfume houses&lt;/li&gt;
&lt;li&gt;editorial alternatives to famous perfumes from other houses, with why each is close&lt;/li&gt;
&lt;li&gt;layering ideas and 160 guides in ten languages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connect it in under a minute
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude (web and desktop):&lt;/strong&gt; Settings, Connectors, Add custom connector, paste &lt;code&gt;https://mcp.10ml.com/mcp&lt;/code&gt;. It is also listed in the Claude connectors directory as "10ML Perfume Finder".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http perfume-finder https://mcp.10ml.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; (&lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"perfume-finder"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.10ml.com/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;VS Code&lt;/strong&gt; (&lt;code&gt;.vscode/mcp.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"perfume-finder"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.10ml.com/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Clients that only speak stdio&lt;/strong&gt; can use the thin wrappers, which forward to the same endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @10ml/perfume-finder-mcp
&lt;span class="c"&gt;# or&lt;/span&gt;
uvx perfume-finder-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Things to ask
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"What does Baccarat Rouge 540 smell like, and what is a fresher option?"&lt;/li&gt;
&lt;li&gt;"Which perfumes are similar to Creed Aventus?"&lt;/li&gt;
&lt;li&gt;"What does oud smell like and which perfumes are built around it?"&lt;/li&gt;
&lt;li&gt;"How do I layer vanilla and citrus?"&lt;/li&gt;
&lt;li&gt;"Compare Dior Sauvage and Tom Ford Ombre Leather."&lt;/li&gt;
&lt;li&gt;"A gift for a woman who loves Delina."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Behind those questions the assistant picks from 16 read-only tools: search, full perfume profiles, side-by-side comparison, similar perfumes (with a "fresher / sweeter / darker" steer), editorial alternatives, notes, houses, a perfume glossary, layering, occasion picks, gift ideas and guide search. Every tool takes a &lt;code&gt;locale&lt;/code&gt; (en, de, fr, es, it, ro, el, hu, cs, pl) and returns structured content plus a short text summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  No MCP? Use the REST API
&lt;/h2&gt;

&lt;p&gt;The same answers are available over plain HTTP, described by an &lt;a href="https://mcp.10ml.com/openapi.json" rel="noopener noreferrer"&gt;OpenAPI 3.1 file&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://mcp.10ml.com/api/v1/notes/bergamot"&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://mcp.10ml.com/api/v1/similar?perfume=Baccarat+Rouge+540&amp;amp;steer=fresher"&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://mcp.10ml.com/api/v1/houses/amouage"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A note lookup returns what the note smells like, its family and mood, what it pairs with, similar notes and famous perfumes that feature it, so it drops straight into a tool call, a chatbot or a recommendation widget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Endpoint and docs: &lt;a href="https://mcp.10ml.com" rel="noopener noreferrer"&gt;mcp.10ml.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source and README: &lt;a href="https://github.com/10ml-com/perfume-finder-mcp" rel="noopener noreferrer"&gt;github.com/10ml-com/perfume-finder-mcp&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@10ml/perfume-finder-mcp" rel="noopener noreferrer"&gt;@10ml/perfume-finder-mcp&lt;/a&gt;, PyPI: &lt;a href="https://pypi.org/project/perfume-finder-mcp/" rel="noopener noreferrer"&gt;perfume-finder-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official MCP Registry name: &lt;code&gt;com.10ml/perfume-finder&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questions or ideas for new tools are welcome in the GitHub issues.&lt;/p&gt;

&lt;p&gt;10ML Team&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>claude</category>
      <category>api</category>
    </item>
  </channel>
</rss>
