Cezzis Cocktails
Search for cocktail recipes using the cezzis.com API.
Cezzis.com Cocktails MCP Server
Part of the broader Cezzis.com digital experience for discovering and sharing cocktail recipes with a broad community of cocktail enthusiasts and aficionados.
An MCP (Model Context Protocol) server that gives AI agents secure, firstβclass access to Cezzis.com cocktail data. It provides highβlevel tools for searching cocktails, retrieving detailed recipes and metadata, authenticating users, and submitting ratings. The server runs over HTTP only and exposes a streamable MCP endpoint.
π§© Cezzis.com Project Ecosystem
This server works alongside several sibling repositories:
- cocktails-mcp (this repo) β Model Context Protocol services that expose cocktail data to AI agents
- cocktails-api β ASP.NET Core backend and REST API consumed by the site and integrations
- cocktails-web β React SPA for the public experience
- cocktails-common β Shared libraries and utilities reused across frontends, APIs, and tooling
- cocktails-images (private) β Source of curated cocktail imagery and CDN assets
- cocktails-shared-infra β Terraform compositions specific to the cocktails platform
- shared-infrastructure β Global Terraform modules that underpin multiple Cezzis.com workloads
βοΈ Cloud-Native Footprint (Azure)
Infrastructure is provisioned with Terraform (/terraform
) and deployed into Azure using shared modules:
- Azure Container Apps β Hosts the MCP service (HTTP mode) with HTTPS ingress
- Azure API Management β Optional faΓ§ade when exposing HTTP endpoints; routes and policies managed via Terraform
- Azure Container Registry β Stores container images published from CI/CD
- Azure Key Vault β Holds secrets (Cezzis API subscription keys, telemetry keys)
- Azure Monitor / Application Insights β Telemetry collection (logs/traces)
- Shared Infrastructure Modules β Sourced from the reusable Terraform modules repo for consistency
π MCP Tools
The server exposes the following MCP tools:
cocktails_search
- Purpose: Search cocktails by natural language query
- Parameters:
freeText
(string, required): Search terms (name, ingredients, style)
- Returns: Array of cocktails with IDs, titles, images, and summaries
cocktails_get
- Purpose: Retrieve full details for a specific cocktail
- Parameters:
cocktailId
(string, required): ID from search results
- Returns: Full recipe with ingredients, instructions, images, ratings, and notes
auth_login
- Purpose: Initiate login using Auth0 Device Authorization flow
- Parameters: none
- Returns: Verification URL and user code to complete in your browser
auth_status
- Purpose: Check if youβre authenticated
- Parameters: none
- Returns: Text status
auth_logout
- Purpose: Log out and clear stored tokens
- Parameters: none
- Returns: Text confirmation
cocktail_rate
- Purpose: Rate a cocktail (requires authentication)
- Parameters:
cocktailId
(string, required)stars
(string, required, 1β5)
- Returns: Text confirmation of submitted rating
HTTP Endpoints
GET /healthz
β Health checkGET /version
β Version infoGET|POST /mcp
β Streamable MCP endpoint over HTTP
π οΈ Technology Stack
Core
- Language: Go 1.25+
- Protocol: Model Context Protocol over HTTP (streamable)
- Server: Lightweight MCP server with tool registry and health/version endpoints
- Logging: zerolog (structured JSON logs)
Integrations
- Cezzis.com Cocktails API: Upstream data source (requires subscription key)
- Azure AI Search: Powers semantic/lucene queries in the upstream API
- Application Insights: Optional telemetry via instrumentation key
Authentication & Security
- API Access:
COCKTAILS_API_XKEY
subscription key injected via env/Key Vault - Auth0 OAuth 2.1 / OIDC: Endβuser authentication for personalized features (e.g., ratings)
- Secrets: Managed via environment files locally and Azure Key Vault in cloud
- Transport: HTTP/HTTPS for MCP endpoint
ποΈ Project Structure
cocktails.mcp/
βββ src/
β βββ cmd/ # Application entry point
β βββ internal/
β β βββ api/ # Generated API client code
β β βββ config/ # Configuration management
β β βββ logging/ # Structured logging helpers
β β βββ middleware/ # HTTP middleware (HTTP mode)
β β βββ server/ # MCP server and protocol wiring
β β βββ testutils/ # Testing utilities
β β βββ tools/ # MCP tool implementations
β βββ .env # Environment configuration (local)
β βββ go.mod # Go module definition
βββ dist/ # Build outputs
βββ terraform/ # Azure resources (ACA, APIM, Key Vault, etc.)
π Development Setup
-
Prerequisites
- Go 1.25.1 or newer
- Make (build automation)
- Optional: Docker (container builds), Azure CLI / Terraform (infrastructure)
-
Install Dependencies
make tidy
-
Environment Setup Create a
.env
file in./cocktails.mcp/src/
:
# Required: Cezzis.com API Configuration
COCKTAILS_API_HOST=https://api.cezzis.com/prd/cocktails
COCKTAILS_API_XKEY=your_api_subscription_key_here
# Auth0 (required for user-authenticated features)
AUTH0_DOMAIN=your-tenant.us.auth0.com
AUTH0_CLIENT_ID=your_public_client_id
AUTH0_AUDIENCE=https://cezzis-cocktails-api
AUTH0_SCOPES="openid offline_access profile email read:owned-account write:owned-account"
# Optional: Application Insights (telemetry)
APPLICATIONINSIGHTS_INSTRUMENTATIONKEY=your_app_insights_key
# Optional: Logging
LOG_LEVEL=info
ENV=local
Supported environment files: .env
, .env.local
, .env.test
.
- Run locally (HTTP)
# Build binary
make compile
# Run HTTP server (choose a port)
./cocktails.mcp/dist/linux/cezzis-cocktails --http :8080
- Testing
Generates coverage artifacts (make test
coverage.out
,cobertura.xml
).
π OAuth and Authentication
This server uses Auth0 for endβuser authentication to enable personalized features (e.g., ratings).
Flow (HTTP): Device Authorization Grant
- The
auth_login
tool returns a verification URL and user code. - Visit the URL, enter the code, and complete login.
- The server polls Auth0 and stores tokens securely once available.
Token handling:
- Access and refresh tokens are stored encrypted under
~/.cezzis/.cezzis_tokens.enc
. - Tokens are automatically refreshed using the refresh token when near expiry.
- Logout clears stored tokens.
Required settings:
AUTH0_DOMAIN
β e.g.,your-tenant.us.auth0.com
AUTH0_CLIENT_ID
β public SPA/native client ID configured in Auth0- Optional:
AUTH0_AUDIENCE
if the API expects a specific audience - Optional:
AUTH0_SCOPES
(default:openid profile email offline_access
)
Auth tools available to MCP clients:
auth_login
β Initiates device code login and returns instructions.auth_status
β Returns whether youβre currently authenticated.auth_logout
β Clears stored tokens.
οΏ½π» MCP Client Setup
Claude Desktop
Configure ~/.config/Claude/claude_desktop_config.json
for HTTP MCP:
{
"mcpServers": {
"cezzis-cocktails": {
"url": "http://localhost:3001/mcp",
"type": "http"
}
}
}
Cursor
Configure ~/.cursor/mcp.json
or via Settings UI for HTTP MCP:
{
"mcpServers": {
"cezzis-cocktails": {
"url": "http://localhost:3001/mcp",
"type": "http"
}
}
}
GitHub Copilot (HTTP MCP)
Configure VS Code User/mcp.json
(Copilot MCP servers):
{
"servers": {
"cezzis-mcp": {
"url": "http://localhost:3001/mcp",
"type": "http"
}
},
"inputs": []
}
Start the server locally with --http :8080
and Copilot Chat can call its tools over HTTP.
π¦ Build & Deployment
- Build:
make compile
(outputs./cocktails.mcp/dist/linux/cezzis-cocktails
) - Container:
make docker-build
(builds image for ACA) - Infra: Terraform under
/terraform
for ACA, APIM, Key Vault, etc. - CI/CD: GitHub Workflows build, test, and publish artifacts/images
π Code Quality
golangci-lint
for static analysisgofmt
and imports tooling enforced via Make targets- Unit tests with coverage reports
π Security Features
- API subscription key required for upstream API access
- Secrets sourced from env files locally and Azure Key Vault in cloud
- HTTP/HTTPS transport for MCP endpoint
- Validated tool inputs and structured error handling
π Monitoring
- Optional Application Insights for logs/traces
- Health checks exposed in HTTP mode for probes
π€ What is MCP?
The Model Context Protocol (MCP) is an open standard that enables AI assistants to securely connect with external data sources and tools. Using MCP here allows agents to:
- Ask for cocktails in natural language
- Get contextual recommendations based on ingredients and styles
- Retrieve rich recipe data with measurements and techniques
- Integrate seamlessly across MCPβcompatible tools and IDEs
π Community & Support
- π€ Contributing Guide β see CONTRIBUTING.md
- π€ Code of Conduct β see CODE_OF_CONDUCT.md
- π Support Guide β see SUPPORT.md
- π Security Policy β see SECURITY.md
π License
This project is proprietary software. All rights reserved. See LICENSE for details.
Related Servers
Jina AI MCP Server
Access Jina AI's web services for web page reading, web search, and fact-checking. Requires a Jina AI API key.
Console MCP Server
Bridge external console processes with Copilot by searching through JSON log files.
12306-mcp
Search for train tickets on 12306, the official China Railway website.
People Data Labs
Access person, company, school, location, job title, and skill data using the People Data Labs API.
Scholarly
Search for academic articles from scholarly vendors.
Baidu Map
A Location-Based Service (LBS) providing geospatial APIs for geocoding, POI search, route planning, and more.
Minecraft Wiki MCP
A server for browsing and searching the official Minecraft Wiki.
Docs MCP Server
Creates a personal, always-current knowledge base for AI by indexing documentation from websites, GitHub, npm, PyPI, and local files.
Google Search by CData
An MCP server for Google Search provided by CData, which requires an external CData JDBC Driver.
Scientific Paper Harvester
Harvests scientific papers from arXiv and OpenAlex, providing real-time access to metadata and full text.