Bar Assistant MCP Server
A high-performance cocktail search and recipe retrieval server that integrates with Bar Assistant instances to provide intelligent cocktail discovery through natural language queries.
๐ Smart Cocktail Search - Natural language queries with similarity matching for finding drinks by name, ingredient, base spirit, flavor profile, or ABV. Filter by ABV ranges, glassware types, preparation methods, alcohol strength preferences (light/medium/strong), and flavor profiles (bitter/sweet/sour/spicy/herbal). Returns complete recipes with auto-converted measurements, step-by-step instructions, and specifications.
๐ Recipe Retrieval - Single or batch lookup by name or database ID with flexible mixing of both. Retrieve up to 20 recipes simultaneously with parallel processing for 5-10x performance improvement. Includes detailed ingredients with precise measurements, instructions, ABV, glassware, garnishes, and direct database links. Optionally include similar cocktails and variations for exploration.
๐งช Ingredient Intelligence - Comprehensive ingredient research including descriptions, flavor profiles, tasting notes, substitution guidance with flavor impact analysis, and complete recipes featuring the ingredient.
โก Performance Features - Parallel API processing, intelligent caching system with 70%+ hit rate (<50ms for cached responses), error resilience where individual failures don't break batch operations, configurable limits (up to 50 search results, 20 recipes), and detailed performance metrics tracking.
Use Cases: "What cocktails can I make with gin and vermouth?", "Show me the recipe for a Manhattan", "Find bitter cocktails with ABV over 25%", "What is Campari and what can I make with it?", "Give me cocktails like a Negroni"
Enables natural language interactions with Bar Assistant cocktail databases, allowing queries for cocktail recipes, ingredient searches, and recommendations through AI assistants.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bar Assistant MCP Serverwhat cocktails can I make with rum and lime?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Create an
.envfile:Create a file named
.envin 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=1Get Your Bar Assistant API Token:
Log into your Bar Assistant instance
Navigate to Settings โ API
Generate a new API token
Copy the token and paste it into the
BAR_ASSISTANT_TOKENfield in your.envfile.
Build and start the container:
docker-compose up --build -dThe 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 /queryAuthentication: Secured with
MCP_SSE_TOKENpassed via thex-api-keyheader (or standard Authorization/query parameters).Format: Takes a JSON body
{"query": "your query"}and streams response chunks back intext/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 toolsget_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
| Name | Required | Description | Default |
|---|---|---|---|
| ingredient_name | Yes | The name of the ingredient to get information about |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| metadata | Yes | |
| ingredient | Yes | Ingredient name |
| description | No | Ingredient description |
| substitutions | No | Ingredient substitution suggestions |
| cocktail_usage | Yes | Cocktails using this ingredient |
| flavor_profiles | No | Common flavor characteristics |
TDQS
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.
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.
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.
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.
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.
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):
Single Recipe (Backwards Compatible):
cocktail_name: "Manhattan" โ One complete recipe
cocktail_id: 123 โ Recipe by database ID
Batch by Names (Most Common):
cocktail_names: ["Negroni", "Manhattan", "Martini"] โ Multiple complete recipes
Batch by IDs (When Available):
cocktail_ids: [1, 2, 3] โ Multiple recipes by database IDs
Mixed Batch (Maximum Flexibility):
cocktail_names: ["Aviation"] + cocktail_ids: [123, 456] โ Combined approach
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
| Name | Required | Description | Default |
|---|---|---|---|
| cocktail_id | No | ๐ Single cocktail database ID. Use for specific recipe lookup when ID is known. | |
| cocktail_name | No | ๐ธ Single cocktail name. Use for individual recipe requests (e.g., "Manhattan", "Negroni"). | |
| cocktail_ids | No | ๐ Array of cocktail IDs for batch processing. Enables parallel retrieval of multiple recipes by database ID. More efficient than multiple single requests. | |
| cocktail_names | No | ๐ 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_variations | No | ๐ Include similar/variation recipes in results. Adds related cocktails to expand exploration (default: false). | |
| limit | No | ๐๏ธ Maximum number of recipes to return. Controls batch size for optimal performance (default: 10, max: 20). Higher limits may impact response time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| recipes | No | |
| performance | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ๐ Natural language search query (e.g., "Negroni", "gin cocktails", "bitter drinks") | |
| similar_to | No | ๐ Find cocktails similar to this name (e.g., "Manhattan", "Negroni"). Triggers similarity batch processing. | |
| similar_to_id | No | ๐ Find cocktails similar to this ID. Use similar_to (by name) unless you have the specific ID. | |
| ingredient | No | ๐ฅ Primary ingredient filter (e.g., "gin", "whiskey", "campari"). Combines with other filters for batch processing. | |
| must_include | No | โ Required ingredients array. Batch processes cocktails containing ALL these ingredients. | |
| must_exclude | No | โ Excluded ingredients array. Filters out cocktails with ANY of these ingredients. | |
| preferred_flavors | No | ๐ฏ Flavor profile preferences: ["bitter", "sweet", "sour", "spicy", "herbal"]. Improves batch ranking. | |
| preferred_strength | No | ๐ช Alcohol strength preference. Filters batch results by ABV ranges. | |
| abv_min | No | ๐ Minimum ABV percentage. Lower bound for batch filtering. | |
| abv_max | No | ๐ Maximum ABV percentage. Upper bound for batch filtering. | |
| glass_type | No | ๐ฅ Required glassware (e.g., "coupe", "rocks", "martini"). Filters entire batch. | |
| preparation_method | No | ๐ง Required method (e.g., "shake", "stir", "build"). Filters batch by technique. | |
| limit | No | ๐๏ธ Maximum results to return (default: 20, max: 50). Controls batch size for optimal performance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cocktails | No | Complete cocktail recipes with full details |
| search_results | No | |
| search_metadata | No | |
| similar_cocktails | No | Additional similar cocktails (when using similarity search) |
| performance_metrics | No | Batch processing performance data |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Search your knowledge bases from any AI assistant using hybrid RAG.
Search, save, organize, cook, and share recipes with any AI assistant.
Search and compare attributed recipe records through a public read-only remote MCP endpoint.
Discover, preview, estimate, run, and retrieve reusable AI workflows.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables management of your home bar inventory and cocktail discovery through Bar Assistant. View shelf ingredients, find cocktails you can make, and add or remove items from your bar collection.6
- AlicenseCqualityDmaintenanceEnables searching for cocktail recipes by name or ingredients using the API Ninjas Cocktail API, supporting partial matches and ingredient-based filtering.1MIT
- FlicenseNot gradedqualityDmaintenanceProvides 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
- FlicenseAqualityDmaintenanceEnables 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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