Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Jewellery

FreeNot checked

MCP server for cross-brand jewellery retail customer data, exposing read-only tools to search customers, view purchase histories, identify cross-brand opportuni

GitHubEmbed

About

MCP server for cross-brand jewellery retail customer data, exposing read-only tools to search customers, view purchase histories, identify cross-brand opportunities, and recommend products for occasions across Austen and Blake, Diamonds Factory, and SACET.

README

Cross-brand customer/purchase database for three independent jewellery retail brands — Austen and Blake, Diamonds Factory, and SACET — each with its own stores and customers across international geographies. No global customer ID exists across brands in real life, so each brand's customers are kept independent; a separate customer_identities / customer_identity_links pair pre-resolves the same real person's records across brands (matched on full name + phone and/or full name + date of birth).

Ships the database layer (schema, seed data, db.py connection helper) plus an MCP server (src/jewellery_mcp/server.py) exposing 10 read-only tools for working real customer cases:

Tool Purpose
search_customers Find a customer across all brands by name/phone/DOB — the entry point
get_customer_identity Full resolved cross-brand profile for an identity
get_customer_purchase_history What they bought, where, for what occasion
get_customer_occasion_calendar Their recurring personal dates, soonest first
find_cross_brand_opportunities Occasions bought at one brand but never another (single customer or portfolio-wide)
find_upcoming_occasion_opportunities Who has a birthday/anniversary coming up and hasn't bought for it yet
get_customer_lifetime_value Cross-brand spend normalized to one currency via fx_rates
list_top_cross_brand_customers Rank cross-brand identities by normalized total spend
get_occasion_coverage_by_brand Portfolio view: % of a brand's customers who've ever bought for each occasion
recommend_products_for_occasion Turn an identified opportunity into concrete products to pitch

Schema

See sql/001_schema.sql: brands, stores, products, occasions, customers, purchases, customer_occasion_dates, customer_identities, customer_identity_links.

Setup

  1. Start local Postgres (runs on localhost:5434; schema + seed data load automatically on first start):

    docker compose up -d
    
  2. Create a virtualenv and install:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -e .
    
  3. Copy the env file (defaults already match the docker-compose Postgres):

    cp .env.example .env
    

Connecting a client (Claude Code / Claude Desktop)

Add to your MCP client config (e.g. .mcp.json for Claude Code — already present in this repo):

{
  "mcpServers": {
    "jewellery-mcp": {
      "command": "/Users/rahuldeshmukh/Claudecode/JewelleryBrandsMCP/.venv/bin/jewellery-mcp",
      "env": {
        "DATABASE_URL": "postgresql://jewellery_admin:jewellery_admin_pw@localhost:5434/jewellery_db"
      }
    }
  }
}

Opportunity / gap analysis

Because occasions is a normalized reference table and customer_identities pre-resolves people across brands, "which occasion has this customer bought for elsewhere but never at brand X" is a plain SQL query, exposed as the find_cross_brand_opportunities tool:

SELECT DISTINCT i.id AS identity_id, o.name AS occasion, b.name AS opportunity_brand
FROM customer_identities i
CROSS JOIN occasions o
JOIN customer_identity_links l ON l.identity_id = i.id
JOIN brands b ON b.id = l.brand_id
WHERE NOT EXISTS ( -- hasn't bought this occasion at a brand where they're a customer
    SELECT 1 FROM purchases p WHERE p.customer_id = l.customer_id AND p.occasion_id = o.id
)
AND EXISTS ( -- but has bought it at another brand they also shop at
    SELECT 1 FROM purchases p
    JOIN customer_identity_links l2 ON l2.customer_id = p.customer_id
    WHERE l2.identity_id = i.id AND p.occasion_id = o.id
);

Against the seed data this returns 124 distinct (identity, occasion, brand) opportunity rows.

from github.com/rahdes/NJ_MCP

Install Jewellery in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install jewellery-mcp

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add jewellery-mcp -- uvx --from git+https://github.com/rahdes/NJ_MCP jewellery-mcp

Step-by-step: how to install Jewellery

FAQ

Is Jewellery MCP free?

Yes, Jewellery MCP is free — one-click install via Unyly at no cost.

Does Jewellery need an API key?

No, Jewellery runs without API keys or environment variables.

Is Jewellery hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Jewellery in Claude Desktop, Claude Code or Cursor?

Open Jewellery on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Jewellery with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs