# Perfume MCP server setup: Claude, ChatGPT, Cursor, VS Code

> Connect the keyless Scento perfume MCP server at https://www.scento.com/mcp to Claude, ChatGPT developer mode, Cursor, VS Code, Windsurf and Claude Code, with the 12 tools and a curl test.

Source of truth: https://www.scento.com/developers


The Scento Perfume API is also a remote Model Context Protocol server. It exposes the same twelve read-only answers as tools, so an assistant can look up a perfume's notes, find similar perfumes or explain a material instead of guessing.

```text
https://www.scento.com/mcp
```

- Transport: streamable HTTP, remote.
- Authentication: none, in every client. No key, no account, no OAuth screen.
- Tools: twelve, all read-only.
- Server name: `scento-perfume-api`.

## Connect your client

### Claude (web and desktop)

1. Open Customize, then Connectors.
2. Choose Add, then Add custom connector, and give it a name.
3. Paste `https://www.scento.com/mcp`, choose No sign in, then Add.

### Claude Code

```sh
claude mcp add --transport http scento-perfume-api https://www.scento.com/mcp
```

### ChatGPT

Custom MCP servers need developer mode.

1. Open Settings, then Apps, then Advanced settings, and turn on developer mode.
2. In Apps, choose Create.
3. Paste `https://www.scento.com/mcp` and set authentication to None.

### Cursor

Add this to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "scento-perfume-api": {
      "url": "https://www.scento.com/mcp"
    }
  }
}
```

### VS Code (GitHub Copilot agent mode)

Add this to `.vscode/mcp.json`. VS Code uses `servers`, not `mcpServers`:

```json
{
  "servers": {
    "scento-perfume-api": {
      "type": "http",
      "url": "https://www.scento.com/mcp"
    }
  }
}
```

### Windsurf and other MCP clients

Any client that speaks MCP over streamable HTTP takes the same URL. If it asks for a config block:

```json
{
  "mcpServers": {
    "scento-perfume-api": {
      "type": "http",
      "url": "https://www.scento.com/mcp"
    }
  }
}
```

### Clients that only run local servers

Two small stdio bridges relay to the same endpoint: `npx -y scento-perfume-api` (Node 18+) and `uvx scento-perfume-api` (Python 3.9+). See [Integrations](integrations.md#stdio-bridges).

## Test it from curl

This calls the `perfume-search` tool on the live server. Any MCP client sends the same JSON-RPC message.

```sh
curl -X POST https://www.scento.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"perfume-search","arguments":{"q":"layton"}}}'
```

The result carries a text version in `content` and the same folio as the REST API in `structuredContent`. Pass `tools/list` as the method to list the tools with their schemas.

## The twelve tools

Each tool matches one REST route, so the [Endpoints](endpoints.md) page documents its arguments.

| Tool | What it does | REST route |
|---|---|---|
| `perfume-search` | Finds perfumes, houses and notes by name, note or mood. Call it first when a name is uncertain. | [`/search`](endpoints.md#get-search) |
| `perfume-portrait` | Notes pyramid, family, character and wear of one perfume. | [`/perfumes/{perfume}`](endpoints.md#get-perfumes-perfume) |
| `scent-neighbours` | Perfumes that share notes and structure with one you name. | [`/perfumes/{perfume}/neighbours`](endpoints.md#get-perfumes-perfume-neighbours) |
| `perfume-contrast` | Two to four perfumes side by side. | [`/contrast`](endpoints.md#get-contrast) |
| `note-portrait` | What a note or raw material is and smells like. | [`/materials/{material}`](endpoints.md#get-materials-material) |
| `material-match` | Perfumes that contain every note you list, optionally by pyramid tier. | [`/materials/match`](endpoints.md#get-materials-match) |
| `house-portrait` | Country, founding year, style and signature perfumes of a house. | [`/houses/{house}`](endpoints.md#get-houses-house) |
| `family-map` | Scento's scent-family tree, or one family in detail. | [`/families`](endpoints.md#get-families) and [`/families/{family}`](endpoints.md#get-families-family) |
| `occasion-edit` | An edit of perfumes for one occasion. | [`/edits/{occasion}`](endpoints.md#get-edits-occasion) |
| `wardrobe-composer` | A small wardrobe built around perfumes or notes someone loves. | [`/wardrobe`](endpoints.md#get-wardrobe) |
| `perfumery-lexicon` | Plain-language meaning of a perfumery term. | [`/lexicon/{term}`](endpoints.md#get-lexicon-term) |
| `journal-search` | Scento journal articles on a perfume, note or topic. | [`/journal`](endpoints.md#get-journal) |

The server describes each tool to the client, including when to use it and when to pick a neighbouring one, so an assistant normally chooses well without extra prompting.

## Things to ask

- "Give me the portrait of Tom Ford Oud Wood: notes, family and when to wear it."
- "Compare Byredo Mojave Ghost and Byredo Gypsy Water side by side."
- "Which perfumes are built on tobacco and vanilla in the base?"
- "What does ambroxan smell like, and which perfumes show it best?"
- "Which perfumes share the structure of Parfums de Marly Layton?"

## Scope

The server covers perfumes, raw materials, houses, scent families and the Scento journal. It is not a shop: it has no prices, stock or reviews.

More: [the MCP page on scento.com](https://www.scento.com/developers/perfume-mcp-server) and the [server card](https://www.scento.com/.well-known/mcp.json).
