Percolate

Search the Percolate specialty coffee database: 1,100+ coffees with brew recipes and pairings.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
96%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'compare_coffees' description lacks action verbin compare_coffees
  • LOWTool 'what_to_brew' description lacks action verbin what_to_brew

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,564Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.22% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "percolate": {
      "command": "npx",
      "args": [
        "percolate-mcp"
      ]
    }
  }
}

Runnable packages

npmpercolate-mcp1.0.2stdio

Remote endpoints

https://wmpiabzlcaqyrzxvfihi.supabase.co/functions/v1/mcpstreamable-http
https://mcp.percolateapp.com/?src=registrystreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_coffees(query, category, roast_level, brew_method, price_min, ...)

Search 1,100+ curated specialty coffees in the Percolate database. Filter by category (espresso, single_origin, blend, decaf, dark), roast level, brew method, and price (USD). Returns tasting profiles, brew methods, and where-to-buy links.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Free-text search: coffee or roaster name"
    },
    "category": {
      "type": "string",
      "enum": [
        "espresso",
        "single_origin",
        "blend",
        "decaf",
        "dark"
      ],
      "description": "Coffee category to filter by; omit to search all"
    },
    "roast_level": {
      "type": "string",
      "enum": [
        "light",
        "medium-light",
        "medium",
        "medium-dark",
        "dark"
      ],
      "description": "Roast level to filter by; omit to include all roasts"
    },
    "brew_method": {
      "type": "string",
      "maxLength": 120,
      "description": "e.g. 'espresso', 'pourover', 'french press', 'drip'"
    },
    "price_min": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum price in USD"
    },
    "price_max": {
      "type": "number",
      "minimum": 0,
      "description": "Maximum price in USD"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max results (default 10, max 10)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_coffee(id_or_name)

Detailed record for one coffee: roast level, body/acidity/sweetness profile, flavor notes, suited brew methods, food and brew pairings, price, and retailer links. Accepts a Percolate id or a name.

Input Schema

{
  "type": "object",
  "properties": {
    "id_or_name": {
      "type": "string",
      "maxLength": 120,
      "description": "Coffee id or a name like 'Bean Box Taste of New York City'"
    }
  },
  "required": [
    "id_or_name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_similar(coffee, limit)

Coffees with a similar profile to a given one, ranked by shared flavor notes and roast/body/acidity/sweetness proximity. Deterministic scoring over Percolate's structured tasting data.

Input Schema

{
  "type": "object",
  "properties": {
    "coffee": {
      "type": "string",
      "maxLength": 200,
      "description": "Coffee id or name"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max results (default 5)"
    }
  },
  "required": [
    "coffee"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_recommendations(preferences, budget, roast_level, brew_method, limit)

Personalized coffee picks from flavor preferences (e.g. 'chocolate', 'berry', 'caramel'), a budget in USD, roast preference, and the brew gear you own.

Input Schema

{
  "type": "object",
  "properties": {
    "preferences": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "Flavors the drinker enjoys, e.g. ['chocolate','caramel','nutty']"
    },
    "budget": {
      "type": "number",
      "minimum": 0,
      "description": "Max price in USD per bag"
    },
    "roast_level": {
      "type": "string",
      "enum": [
        "light",
        "medium-light",
        "medium",
        "medium-dark",
        "dark"
      ],
      "description": "Roast level to filter by; omit to include all roasts"
    },
    "brew_method": {
      "type": "string",
      "maxLength": 120,
      "description": "What you brew with, e.g. 'espresso', 'pourover'"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max results (default 5)"
    }
  },
  "required": [
    "preferences"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_coffees(coffee_a, coffee_b)

Side-by-side comparison: roast, body/acidity/sweetness, shared and distinct flavors, brew methods, and price difference.

Input Schema

{
  "type": "object",
  "properties": {
    "coffee_a": {
      "type": "string",
      "maxLength": 200,
      "description": "First coffee — id or name"
    },
    "coffee_b": {
      "type": "string",
      "maxLength": 200,
      "description": "Second coffee — id or name"
    }
  },
  "required": [
    "coffee_a",
    "coffee_b"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢trending_coffees(limit)

Coffees Percolate users are adding to their collections most over the last 30 days (falls back to catalog popularity when live activity data is unavailable). The method used is labeled in the response.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max results (default 10, max 10)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢dial_in_suggestion(coffee, brew_method)

Brew guidance for a specific coffee: curated recipes from the Percolate catalog (ratio, temperature, grind) when available, or a roast-based starting point. Optionally scoped to your brew method.

Input Schema

{
  "type": "object",
  "properties": {
    "coffee": {
      "type": "string",
      "maxLength": 200,
      "description": "Coffee id or name"
    },
    "brew_method": {
      "type": "string",
      "maxLength": 120,
      "description": "Your brewer, e.g. 'V60', 'espresso', 'french press'"
    }
  },
  "required": [
    "coffee"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢what_to_brew(time_of_day, mood, brew_method)

A coffee suggestion for right now, based on time of day (evening picks lean decaf), mood, and the brew method you're using — scored over Percolate's tasting profiles.

Input Schema

{
  "type": "object",
  "properties": {
    "time_of_day": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening"
      ],
      "description": "When the coffee will be drunk — shifts the pick toward lighter or lower-caffeine options later in the day"
    },
    "mood": {
      "type": "string",
      "maxLength": 120,
      "description": "e.g. 'need focus', 'lazy weekend', 'something comforting', 'adventurous'"
    },
    "brew_method": {
      "type": "string",
      "maxLength": 120,
      "description": "What you're brewing with"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools