# Punk MCP

> Punk lets your AI client access the full BrewDog beer catalog data through a single API connection. You can search by specific ingredients like hops or malts, filter results using technical specs such as ABV range or IBU levels, and get instant food pairing suggestions for recipes or cuisines. This is essential for homebrewers and chefs who need precise brewing data.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** craft-beer, brewdog, beer-recipes, food-pairing, brewing-data

## Description

**Punk lets your AI client access the full BrewDog beer catalog data through three precise tools: `list_beers`, `get_beer`, and `get_random_beer`.**

When you run a search, you can list multiple beers across the entire database using `list_beers` by applying any combination of technical criteria or flavor profiles. You don't just get a simple list; your agent uses that tool to cross-reference specs like ABV range, IBU level, and EBC color metrics simultaneously.

Need to narrow down thousands of options? You can filter the entire catalog using precise numerical ranges for Alcohol by Volume (ABV), International Bitterness Units (IBU), or Evenness Color Scale (EBC) values. Specify a minimum ABV if you're looking for something strong, or set an EBC range if your recipe calls for a specific color profile—it handles the math instantly.

If you're planning a meal, `list_beers` recommends specific brews designed to complement any cuisine type or dish you name. You can search by food pairings to find beers that hit the right notes with whatever you've got on the menu. You don't have to guess; the tool finds the matches for things like Italian dinners or spicy Thai curries.

Flavor analysis is just as simple. Use `list_beers` to query the database by filtering specifically for particular hops, malts, or yeast strains. Want a beer that uses Chinook hops? You ask for it, and the tool pulls every match. Need a specific malt like crystal or caramel? The agent filters out everything else.

Once you've narrowed down your search results using `list_beers`, you can drill down into any single brew using the `get_beer` tool. Just give it that unique ID, and the tool pulls every bit of data available for that one beer. You get all the technical measurements, detailed recipe notes, and brewing tips—everything a homebrewer needs to know before they start boiling water.

If you've run through every single listing and just need some inspiration, `get_random_beer` fetches an unexpected brew from the whole catalog. It’s perfect for when you’re stuck and need a totally new idea to throw into your next project. You don't have to dig; it hands you something random but solid.

This server lets you use your AI client like a professional brewer’s reference guide, handling complex data requests that would take hours otherwise. You can combine technical specifications with ingredient requirements or food pairings in one shot. It’s built for chefs and brewers who need absolute accuracy when they're working.

## Tools

### get_beer
Retrieves the full details for a single beer when you provide its unique ID.

### list_beers
Searches and filters multiple beers using criteria like ABV, IBU, ingredients, or food pairings across the whole database.

### get_random_beer
Fetches an unexpected, random brew from the entire catalog to give you new ideas.

## Prompt Examples

**Prompt:** 
```
List some beers that go well with spicy curry.
```

**Response:** 
```
I've searched the BrewDog catalog for you. Based on your request for spicy curry, I recommend 'Punk IPA' (ID: 192) and 'Jack Hammer' (ID: 37). Both have the bitterness and hop profile to balance the heat. Would you like the full details for one of these?
```

**Prompt:** 
```
Show me the details for beer with ID 192.
```

**Response:** 
```
Fetching details for ID 192... This is 'Punk IPA', a Post Modern Classic with 5.6% ABV. It features Chinook, Ahtanum, and Nelson Sauvin hops. It pairs perfectly with spicy meat pizza or burger. Would you like the brewing method details?
```

**Prompt:** 
```
Give me a random beer recommendation with an ABV higher than 6%.
```

**Response:** 
```
I'll find a strong random brew for you... I've selected 'Hardcore IPA' (ID: 15). It has a powerful 9.2% ABV and 125 IBU. It's an explicit imperial ale with a massive hop hit. Does this sound like what you're looking for?
```

## Capabilities

### Filter by Technical Range
The agent searches the catalog using precise numerical ranges for ABV, IBU, or EBC values.

### Get Food Pairings
It recommends specific brews designed to complement a given dish or type of cuisine.

### Analyze Ingredients
You can query the database by filtering for specific hops, malts, or yeast strains used in brewing.

### Retrieve Single Beer Details
It pulls all available recipes and technical data for a single beer when you provide its unique ID.

### Browse the Full Catalog
The agent lists multiple beers, allowing you to apply any combination of filters (ingredients, pairings, specs) at once.

## Use Cases

### Creating a Menu Pairing Guide
A chef is building a new menu. They tell their agent: "Find me three beers that pair with spicy meat pizza." The agent runs `list_beers`, filters by cuisine, and returns specific recommendations (like 'Punk IPA') complete with details.

### Cross-Referencing Malt Bills
A homebrewer is designing a new recipe. They ask the agent to list all beers using 'Chinook' hops that have an ABV under 6%. The agent executes `list_beers`, filters by ingredient and range, solving the research problem in seconds.

### Quick Recipe Check
A developer needs to verify a beer spec for a client. They know the ID (192). Instead of searching, they use `get_beer` with the ID and get all specs instantly: 'Punk IPA,' 5.6% ABV.

### Finding a Strong Draft Beer
A user wants an unexpectedly powerful beer to sample. They ask for a random brew with high metrics. The agent calls `get_random_beer` and returns 'Hardcore IPA' (ID: 15), showing it has 9.2% ABV and 125 IBU.

## Benefits

- Targeted brewing data: Instead of sifting through PDFs, you use `list_beers` to filter by precise metrics—like needing a beer between 5.5% and 6.0% ABV.
- Instant meal pairing: Need to know what brews go with spicy curry? Ask the agent; it runs the query and suggests specific IDs like 'Punk IPA' (ID: 192).
- Deep ingredient research: Homebrewers can use `list_beers` to search only for beers that contain a specific hop, skipping all irrelevant results.
- Quick lookup of specs: If you know the ID, use `get_beer` to immediately pull up full recipes and technical measurements without running complex searches.
- Creative inspiration: Stuck in a rut? Just call `get_random_beer` to let the agent throw out a suggestion that might inspire your next project.

## How It Works

The bottom line is: You talk naturally to your AI client, and it translates that into a precise database query using Punk.

1. Subscribe to the server and enter 'OPEN' in the token field. This confirms your client connection.
2. Your AI agent sends a structured query (e.g., "List beers that pair with spicy curry.") using one of the available tools.
3. The MCP Server executes the search against the BrewDog API and returns the filtered data, which your agent then presents to you.

## Frequently Asked Questions

**How do I use `list_beers` to find beers for a specific meal?**
`list_beers` handles this by accepting food pairing criteria. You just need to tell the agent what cuisine or dish you're planning, and it filters the entire catalog accordingly.

**Should I use `get_beer` or `list_beers` if I know an ID?**
If you only want details on that single beer (like its full recipe), use `get_beer`. If you need to check if other beers share similar specs, use `list_beers` with filters.

**What is the difference between `get_random_beer` and filtering?**
`get_random_beer` gives you a single suggestion with no constraints. Filtering requires you to define specific criteria (like ABV > 7%) so the result meets your needs.

**Can I use Punk MCP Server for brewing recipes?**
Yes, it provides full recipe details and technical measurements via `get_beer`. It's built around retrieving structured data from the BrewDog catalog.

**What token do I need to use when calling `list_beers`?**
Since this is a public API, you simply enter 'OPEN' in the token field. You don't need complex authentication keys or OAuth credentials for basic access to filter the catalog.

**Does `list_beers` support specific numeric ranges for metrics like ABV?**
Yes, you can pass precise numerical boundaries when listing beers. If you want a range—say, 5% to 6% ABV—the API accepts both minimum and maximum values in your query parameters.

**If I use `get_beer` with an ID that doesn't exist, what happens?**
The system returns a standard 404 Not Found status code. This is helpful because your agent can reliably catch the error and prompt you to check your input ID.

**Is there a rate limit I should worry about when calling `get_random_beer`?**
The API handles moderate traffic fine, but if you run through many requests in quick succession, you might hit standard rate limits. For high-volume use, check the full documentation for specific quota details.

**How can I find beers that pair well with a specific food like 'steak'?**
You can use the `list_beers` tool and provide the `food` parameter with your dish name. The agent will return a list of beers from the BrewDog catalog specifically recommended for that pairing.

**Can I filter beers by their alcohol percentage (ABV)?**
Yes! Use the `list_beers` tool with `abv_gt` (greater than) or `abv_lt` (less than) parameters to find beers within your preferred strength range.

**How do I get the full recipe and details for a specific beer ID?**
Use the `get_beer` tool and provide the unique integer `id`. The agent will retrieve the complete profile, including ingredients, brewing methods, and technical specifications.