Skip to main content
Glama
zhdenny

Bar Assistant MCP Server

by zhdenny
README.md
# Bar Assistant MCP Server

A high-performance Model Context Protocol (MCP) server that provides intelligent cocktail search and recipe retrieval from [Bar Assistant](https://github.com/karlomikus/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

## 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:**

    ```bash
    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?"*

TDQS

A4/5.0

Scored across 3 tools

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

ActivityInactive
ResponsivenessNo issues