Skip to main content
Glama
zhdenny

Bar Assistant MCP Server

by zhdenny

Bar Assistant MCP Server

A high-performance Model Context Protocol (MCP) server that provides intelligent cocktail search and recipe retrieval from Bar Assistant instances.

Features

  • ๐Ÿ” Smart Cocktail Search - Natural language queries with similarity matching

  • ๐Ÿ“– Complete Recipes - Detailed ingredients, instructions, and specifications

  • ๐ŸŽฏ Similarity Engine - Discover cocktails similar to your favorites

  • ๐Ÿงช Ingredient Analysis - Find cocktails by ingredients, flavors, and characteristics

  • โšก Batch Processing - Retrieve multiple recipes simultaneously (5-10x faster)

  • ๐Ÿ’พ Smart Caching - Intelligent caching with 70%+ hit rate

  • ๐Ÿ”ง Advanced Filtering - ABV ranges, glassware, preparation methods, and more

Related MCP server: Cocktail By Api Ninjas

Prerequisites

  • Docker and Docker Compose

  • Access to a Bar Assistant instance

  • Bar Assistant API token

Running with Docker

The only supported method for running the server is with Docker Compose.

  1. Create an .env file:

    Create a file named .env in the root of the project and add the following, replacing the placeholder values with your actual Bar Assistant configuration:

    BAR_ASSISTANT_URL=https://your-instance.com
    BAR_ASSISTANT_TOKEN=your-api-token
    BAR_ASSISTANT_BAR_ID=1
  2. Get Your Bar Assistant API Token:

    1. Log into your Bar Assistant instance

    2. Navigate to Settings โ†’ API

    3. Generate a new API token

    4. Copy the token and paste it into the BAR_ASSISTANT_TOKEN field in your .env file.

  3. Build and start the container:

    docker-compose up --build -d

    The server will be available at http://localhost:3001.

PourOver API Gateway

This server includes an integrated API Gateway to support the PourOver mobile application, providing natural language query streaming using Google Antigravity CLI (agy).

  • Endpoint: POST /query

  • Authentication: Secured with MCP_SSE_TOKEN passed via the x-api-key header (or standard Authorization/query parameters).

  • Format: Takes a JSON body {"query": "your query"} and streams response chunks back in text/plain.

Usage

Once configured, you can interact with the server through your MCP client. Here are some example queries:

  • "What cocktails can I make with gin and vermouth?"

  • "Show me the recipe for a Manhattan"

  • "Give me recommendations on cocktails like a Negroni"

  • "What ingredients do I need to buy to make these 5 cocktails?"

Available Tools

3 tools
get_ingredient_infoA

Get comprehensive information about cocktail ingredients and their usage.

Use Cases:

  • Ingredient research: "what is Aperol?", "tell me about gin"

  • Substitution guidance: finding alternatives for unavailable ingredients

  • Usage exploration: see how ingredients are used across different cocktails

  • Flavor profile understanding: learn about ingredient characteristics

Response Format: Returns detailed ingredient information including:

  • Ingredient description and characteristics

  • List of cocktails using this ingredient (with complete recipes)

  • Suggested substitutions with flavor impact notes

  • Common flavor profiles and tasting notes

  • Direct links to featured cocktails

Examples:

  • {ingredient_name: "Campari"} โ†’ Campari info + Negroni, Boulevardier recipes

  • {ingredient_name: "rye whiskey"} โ†’ Usage in Manhattan, Sazerac, etc.

  • {ingredient_name: "elderflower liqueur"} โ†’ Aviation, Paper Plane recipes

ParametersJSON Schema
NameRequiredDescriptionDefault
ingredient_nameYesThe name of the ingredient to get information about

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
metadataYes
ingredientYesIngredient name
descriptionNoIngredient description
substitutionsNoIngredient substitution suggestions
cocktail_usageYesCocktails using this ingredient
flavor_profilesNoCommon flavor characteristics

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by specifying the comprehensive nature of the response format (detailed information, complete recipes, substitution notes, etc.), which goes beyond basic parameter documentation. However, it doesn't address potential limitations like rate limits, authentication needs, or what happens with invalid ingredient names, leaving some behavioral aspects unclear.

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 well-structured with clear sections (Use Cases, Response Format, Examples) that make it easy to scan. Every sentence adds value without redundancy. The examples provide concrete illustrations of tool usage. The formatting with bold headers enhances readability while maintaining brevity.

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 the tool has an output schema (context signals indicate 'Has output schema: true'), the description doesn't need to explain return values in detail. The 'Response Format' section provides a helpful overview of what information will be returned, which complements the output schema well. The examples further clarify expected behavior. For a single-parameter lookup tool with good output schema support, this description provides adequate context.

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?

The input schema has 100% description coverage, with the single parameter 'ingredient_name' clearly documented in the schema. The description doesn't add any additional parameter semantics beyond what the schema provides (e.g., format examples, validation rules, or edge cases). According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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's purpose as 'Get comprehensive information about cocktail ingredients and their usage,' which is a specific verb+resource combination. It distinguishes from sibling tools like 'get_recipe' (which focuses on specific cocktail recipes) and 'smart_search_cocktails' (which searches for cocktails) by emphasizing ingredient-centric information. However, it doesn't explicitly contrast with these siblings in the description text itself.

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 'Use Cases' section provides clear context for when to use this tool, including ingredient research, substitution guidance, usage exploration, and flavor profile understanding. This gives practical guidance on appropriate scenarios. However, it doesn't explicitly state when NOT to use this tool or mention alternatives like the sibling tools for recipe-specific or cocktail-search tasks.

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

get_recipeA

๐Ÿธ Advanced recipe retrieval with powerful batch processing for multiple cocktails.

๐Ÿš€ BATCH PROCESSING SYSTEM:

  • High Performance: 5-10x faster than sequential requests

  • Parallel Processing: Simultaneous API calls with error isolation

  • Smart Caching: 70%+ cache hit rate for repeated requests

  • Flexible Input: Mix cocktail names and IDs in single request

  • Error Resilience: Individual failures don't break entire batch

๐Ÿ“‹ LLM Usage Patterns:

  • Single Recipe: When user asks for "how to make [cocktail]"

  • Recipe Comparison: When user wants to compare multiple cocktails

  • Menu Planning: Batch retrieve recipes for event planning

  • Variation Exploration: Get base recipe + similar cocktails

  • Research Mode: Efficient lookup of multiple specific recipes

๐ŸŽฏ Input Methods (Choose Based on Use Case):

  1. Single Recipe (Backwards Compatible):

    • cocktail_name: "Manhattan" โ†’ One complete recipe

    • cocktail_id: 123 โ†’ Recipe by database ID

  2. Batch by Names (Most Common):

    • cocktail_names: ["Negroni", "Manhattan", "Martini"] โ†’ Multiple complete recipes

  3. Batch by IDs (When Available):

    • cocktail_ids: [1, 2, 3] โ†’ Multiple recipes by database IDs

  4. Mixed Batch (Maximum Flexibility):

    • cocktail_names: ["Aviation"] + cocktail_ids: [123, 456] โ†’ Combined approach

  5. With Variations (Exploration):

    • Any above + include_variations: true โ†’ Base recipes + similar cocktails

๐Ÿ“Š Response Format: Structured output with complete recipe data:

  • Precise ingredient measurements (auto-converted to oz)

  • Step-by-step preparation instructions

  • Cocktail specifications (ABV, glassware, method, garnish)

  • Direct database links for each recipe

  • Performance metrics (timing, cache usage)

  • Similar recipes when requested

  • Rich formatting with emojis and clear sections

โšก Performance Examples:

  • Single recipe: ~150-300ms (cached responses faster)

  • Batch (3 cocktails): ~250-400ms (vs 900ms+ sequential)

  • Mixed batch (5 cocktails): ~300-500ms with parallel processing

  • Cache hit: <50ms instant response

๐ŸŽ›๏ธ Batch Control Parameters:

  • limit: 1-20 recipes (default: 10) - controls batch size

  • include_variations: Boolean - adds similar cocktails to results

ParametersJSON Schema
NameRequiredDescriptionDefault
cocktail_idNo๐Ÿ†” Single cocktail database ID. Use for specific recipe lookup when ID is known.
cocktail_nameNo๐Ÿธ Single cocktail name. Use for individual recipe requests (e.g., "Manhattan", "Negroni").
cocktail_idsNo๐Ÿš€ Array of cocktail IDs for batch processing. Enables parallel retrieval of multiple recipes by database ID. More efficient than multiple single requests.
cocktail_namesNo๐Ÿš€ Array of cocktail names for batch processing. Enables parallel retrieval of multiple recipes by name (e.g., ["Manhattan", "Negroni", "Martini"]). Triggers name resolution + batch fetching.
include_variationsNo๐Ÿ”„ Include similar/variation recipes in results. Adds related cocktails to expand exploration (default: false).
limitNo๐ŸŽ›๏ธ Maximum number of recipes to return. Controls batch size for optimal performance (default: 10, max: 20). Higher limits may impact response time.

Output Schema

ParametersJSON Schema
NameRequiredDescription
recipesNo
performanceNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes performance characteristics (e.g., '5-10x faster than sequential requests', '70%+ cache hit rate'), error handling ('individual failures don't break entire batch'), and response format details. However, it doesn't explicitly mention whether this is a read-only operation or if it requires authentication, leaving some behavioral aspects implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (e.g., 'Batch Processing System', 'LLM Usage Patterns'), but it's quite lengthy with multiple subsections and performance examples. While all content is relevant, it could be more front-loaded; the core purpose appears in the first sentence, but detailed usage patterns come later. Some redundancy exists between the description and schema descriptions.

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?

Given the tool's complexity (6 parameters, batch processing capabilities) and the presence of an output schema (implied by 'Has output schema: true'), the description is highly complete. It covers purpose, usage guidelines, behavioral traits, parameter interactions, performance characteristics, and response format details. The output schema likely handles return values, so the description appropriately focuses on other contextual aspects.

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 the schema already documents all six parameters thoroughly. The description adds value by organizing parameters into usage patterns ('Input Methods') and explaining how they interact (e.g., 'Mixed Batch' combining names and IDs), but doesn't provide significant semantic information beyond what's in the schema descriptions. This meets the baseline for high schema coverage.

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 clearly states the tool's purpose: 'Advanced recipe retrieval with powerful batch processing for multiple cocktails.' It specifies the verb ('retrieval') and resource ('recipes'), and distinguishes from siblings like 'get_ingredient_info' and 'smart_search_cocktails' by focusing on recipe retrieval rather than ingredient information or search functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool through the 'LLM Usage Patterns' section, listing scenarios like single recipe requests, recipe comparison, menu planning, variation exploration, and research mode. It also offers detailed 'Input Methods' with specific use cases for each parameter combination, helping the agent choose appropriate inputs based on context.

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

smart_search_cocktailsA

๐Ÿš€ PREFERRED TOOL: Advanced cocktail search with intelligent batch processing and complete recipes.

๐ŸŽฏ BATCH PROCESSING SYSTEM:

  • High Performance: Parallel processing with 5-10x speed improvement

  • Smart Caching: Automatic caching for 70%+ faster repeated searches

  • Error Resilience: Individual failures don't break entire batch operations

  • Flexible Limits: Configure result count (default: 20, max: 50)

๐Ÿ“‹ Use Cases:

  • General searches: "gin cocktails", "winter drinks", "classic cocktails"

  • Similarity queries: "cocktails like Manhattan", "similar to Negroni"

  • Ingredient-based: "cocktails with bourbon", "drinks using Campari"

  • Flavor profiles: "bitter cocktails", "sweet drinks", "herbal spirits"

  • Complex filtering: combine ingredients, ABV ranges, glass types, methods

  • Batch comparisons: Multiple ingredient searches simultaneously

๐Ÿ”„ Batch Processing Examples:

  • Single search: {query: "Manhattan"} โ†’ Complete recipe + similar cocktails

  • Multi-ingredient: {ingredient: "gin", must_include: ["vermouth", "bitters"]}

  • Similarity batch: {similar_to: "Negroni", limit: 10} โ†’ 10 similar cocktails

  • Complex filter: {preferred_flavors: ["bitter"], abv_min: 25, limit: 15}

๐Ÿ“Š Response Format: Returns structured data with complete recipes including:

  • Ingredients with precise measurements in oz (auto-converted from ml)

  • Step-by-step preparation instructions

  • Cocktail specifications (ABV, glass, method, garnish)

  • Direct links to cocktail database pages

  • Performance metrics (processing time, cache hits)

  • Similar cocktail recommendations with full recipes

โšก Performance Features:

  • Parallel API processing for multiple results

  • Intelligent caching system with TTL management

  • Batch fetching of complete recipe details

  • Error isolation and fallback handling

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo๐Ÿ” Natural language search query (e.g., "Negroni", "gin cocktails", "bitter drinks")
similar_toNo๐Ÿ”„ Find cocktails similar to this name (e.g., "Manhattan", "Negroni"). Triggers similarity batch processing.
similar_to_idNo๐Ÿ†” Find cocktails similar to this ID. Use similar_to (by name) unless you have the specific ID.
ingredientNo๐Ÿฅƒ Primary ingredient filter (e.g., "gin", "whiskey", "campari"). Combines with other filters for batch processing.
must_includeNoโœ… Required ingredients array. Batch processes cocktails containing ALL these ingredients.
must_excludeNoโŒ Excluded ingredients array. Filters out cocktails with ANY of these ingredients.
preferred_flavorsNo๐ŸŽฏ Flavor profile preferences: ["bitter", "sweet", "sour", "spicy", "herbal"]. Improves batch ranking.
preferred_strengthNo๐Ÿ’ช Alcohol strength preference. Filters batch results by ABV ranges.
abv_minNo๐Ÿ“Š Minimum ABV percentage. Lower bound for batch filtering.
abv_maxNo๐Ÿ“Š Maximum ABV percentage. Upper bound for batch filtering.
glass_typeNo๐Ÿฅ‚ Required glassware (e.g., "coupe", "rocks", "martini"). Filters entire batch.
preparation_methodNo๐Ÿ”ง Required method (e.g., "shake", "stir", "build"). Filters batch by technique.
limitNo๐ŸŽ›๏ธ Maximum results to return (default: 20, max: 50). Controls batch size for optimal performance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cocktailsNoComplete cocktail recipes with full details
search_resultsNo
search_metadataNo
similar_cocktailsNoAdditional similar cocktails (when using similarity search)
performance_metricsNoBatch processing performance data

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does an excellent job describing performance characteristics (parallel processing, 5-10x speed improvement, caching system, error resilience), operational limits (default: 20, max: 50), and response format details. However, it doesn't mention authentication requirements, rate limits, or potential costs, which would be helpful for a production tool.

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?

The description is well-structured with clear sections (Batch Processing System, Use Cases, Examples, Response Format, Performance Features) and uses emojis for visual organization. While comprehensive, it's somewhat lengthy; some details about caching TTL management and error isolation could be condensed. Every section adds value, but the front-loaded 'PREFERRED TOOL' designation could be more prominent.

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?

Given the tool's complexity (13 parameters, batch processing capabilities) and the presence of an output schema (which handles return value documentation), the description provides excellent contextual completeness. It covers purpose, usage scenarios, behavioral characteristics, performance features, and response format details, making it fully adequate for an agent to understand when and how to use this tool effectively.

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 the schema already documents all 13 parameters thoroughly. The description adds some context about batch processing implications (e.g., 'Triggers similarity batch processing' for similar_to, 'Combines with other filters for batch processing' for ingredient) but doesn't provide significant additional parameter semantics beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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 clearly states this is an 'Advanced cocktail search with intelligent batch processing and complete recipes,' specifying the verb (search), resource (cocktails), and key capabilities (batch processing, complete recipes). It distinguishes from sibling tools get_ingredient_info and get_recipe by emphasizing search functionality with batch processing rather than single-item retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance with a dedicated 'Use Cases' section listing six specific scenarios (general searches, similarity queries, ingredient-based, flavor profiles, complex filtering, batch comparisons). It also includes batch processing examples showing how to structure different types of queries, giving clear when-to-use examples.

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

The three tools have distinct primary purposes: get_ingredient_info focuses on ingredient details and substitutions, get_recipe retrieves specific cocktail recipes, and smart_search_cocktails searches for cocktails based on various criteria. However, there is some functional overlap between get_recipe and smart_search_cocktails, as both can return complete recipes, which could cause minor confusion for an agent deciding which to use for recipe retrieval.

Naming Consistency4/5

The tool names follow a consistent verb_noun pattern (get_ingredient_info, get_recipe, smart_search_cocktails), which is clear and predictable. The only minor deviation is that smart_search_cocktails uses an adjective (smart) before the verb_noun structure, but this is still readable and maintains overall consistency.

Tool Count5/5

With three tools, this server is well-scoped for a bar assistant domain, covering key areas like ingredient information, recipe retrieval, and cocktail search. Each tool serves a distinct and valuable function, and the count is neither too sparse nor overwhelming, making it easy for an agent to navigate and use effectively.

Completeness3/5

The toolset covers core functionalities for a bar assistant, such as ingredient lookup, recipe fetching, and cocktail search. However, there are notable gaps in the lifecycle coverage; for example, there are no tools for creating, updating, or managing cocktails or ingredients (e.g., add_recipe, update_ingredient), which limits the server's utility for more interactive or creative tasks beyond retrieval and search.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides cocktail recommendations using a Retrieval-Augmented Generation (RAG) pipeline powered by LangChain, FAISS, and Groq. It enables users to search for cocktail recipes and receive personalized drink suggestions through natural language.
    1
  • F
    license
    A
    quality
    D
    maintenance
    Enables natural language search for cocktail recipes and ingredient information through TheCocktailDB API. Supports searching by cocktail name, ingredient, category, or alcohol content to discover recipes and recommendations.
    5

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/zhdenny/bar-assistant-mcp-server'

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