Skip to main content
Glama
jimbuck

Open Brewery DB MCP Server

by jimbuck
README.md
# Open Brewery DB MCP Server

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that provides access to the [Open Brewery DB](https://www.openbrewerydb.org/) API. This server enables AI assistants and other MCP clients to search for breweries, get detailed brewery information, and explore brewery data from around the world.

## Installation

### From npm (Recommended)

Install the package globally or as a dependency:

```bash
npm install -g @jimbuck/open-brewery-db-mcp
# or for local usage
npm install @jimbuck/open-brewery-db-mcp
```

## Quick Start

### Run with npx (no clone required)

```bash
npx open-brewery-db-mcp
```

### Or clone and run locally

```bash
git clone https://github.com/your-username/open-brewery-db-mcp.git
cd open-brewery-db-mcp
npm install
npm run dev
```

This will start the server with the **MCP Inspector** - a web-based interface for testing and exploring all the brewery tools interactively!

### As an MCP Server (for MCP clients)

The server communicates via stdio and follows the MCP protocol. To use it with an MCP client:

```bash
npm start
# or
node dist/index.js
```

### MCP Client Configuration Example

To connect this server to an MCP client like Claude Desktop, add the following configuration:

**macOS**: `~/Library/Application\ Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "open-brewery-db": {
      "command": "npx",
      "args": ["@jimbuck/open-brewery-db-mcp"]
    }
  }
}
```

Or, if installed locally or cloned:

```json
{
  "mcpServers": {
    "open-brewery-db": {
      "command": "node",
      "args": ["/path/to/open-brewery-db-mcp/dist/index.js"]
    }
  }
}
```

## About Open Brewery DB

[Open Brewery DB](https://www.openbrewerydb.org/) is a free and open-source API that provides comprehensive information about breweries worldwide. The database includes:

- **40,000+ breweries** from around the globe
- Detailed brewery information including names, types, locations, and contact details
- Regular updates from community contributions
- No authentication required for basic usage

### Brewery Types

The API categorizes breweries into several types:

- **micro** - Most craft breweries. For example, Samuel Adams is still considered a micro brewery
- **nano** - An extremely small brewery which typically only distributes locally
- **regional** - A regional location of an expanded brewery. Ex. Sierra Nevada Asheville
- **brewpub** - A beer-focused restaurant or restaurant/bar with a brewery on-premise
- **large** - (DEPRECATED) A very large brewery. Likely not for visitors. Ex. Miller-Coors
- **planning** - A brewery in planning or not yet opened to the public
- **bar** - (DEPRECATED) A bar. No brewery equipment on premise
- **contract** - A brewery that uses another brewery's equipment
- **proprietor** - Similar to contract brewing but refers to a brewery incubator
- **closed** - A location which has been closed

## Features

This MCP server provides the following tools:

### 🔍 `search_breweries`
Search for breweries with flexible filtering options:
- **by name** - Search by brewery name
- **by city** - Filter by city name
- **by state** - Filter by state (full name or abbreviation)
- **by type** - Filter by brewery type (see types above)
- **pagination** - Control results with `page` and `per_page` parameters

### 🏭 `get_brewery_by_id`
Get detailed information about a specific brewery using its unique ID.

### 🎲 `get_random_brewery`
Discover new breweries by getting random brewery information. You can specify how many random breweries to retrieve (1-10).

### 📋 `list_brewery_types`
Get a complete list of all available brewery types with descriptions.

## Usage

### Development

For development with the **MCP Inspector** (recommended):

```bash
npm run dev
```

This command starts the server with the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which provides:
- 🔍 **Interactive testing** of all MCP tools
- 📊 **Real-time debugging** of server responses  
- 🎯 **Visual tool exploration** with a web-based interface
- 🚀 **Instant feedback** without needing to configure a full MCP client

The inspector will automatically open in your browser, allowing you to test brewery searches, explore random breweries, and validate all functionality in real-time.

To watch for changes and rebuild (production mode):

```bash
npm run watch
```

## API Examples

### Search for breweries in Portland
```json
{
  "name": "search_breweries",
  "arguments": {
    "by_city": "Portland",
    "by_state": "Oregon",
    "per_page": 10
  }
}
```

### Get a specific brewery
```json
{
  "name": "get_brewery_by_id",
  "arguments": {
    "id": "11590"
  }
}
```

### Get 3 random breweries
```json
{
  "name": "get_random_brewery",
  "arguments": {
    "size": 3
  }
}
```

## Data Schema

Each brewery object includes the following information:

```typescript
{
  id: string;                    // Unique identifier
  name: string;                  // Brewery name
  brewery_type: BreweryType;     // Type of brewery
  address_1?: string;            // Street address
  address_2?: string;            // Additional address info
  address_3?: string;            // Additional address info
  city?: string;                 // City name
  state_province?: string;       // State or province
  postal_code?: string;          // Postal/ZIP code
  country?: string;              // Country
  longitude?: string;            // GPS longitude
  latitude?: string;             // GPS latitude
  phone?: string;                // Phone number
  website_url?: string;          // Website URL
  state?: string;                // US state code
  street?: string;               // Street address (alternative)
}
```

## Rate Limiting

Open Brewery DB has reasonable rate limits:
- No authentication required for basic usage
- Please be respectful with API calls
- For high-volume usage, consider caching responses

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

### Development Setup

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests: `npm test`
5. Commit your changes (`git commit -m 'feat: Add some amazing feature'`)
6. Push to the branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request

### Brewery Data Contributions

**Want to help improve the brewery data itself?**  
Contributions to the brewery listings and data are welcome! Check out the [Open Brewery DB GitHub repository](https://github.com/openbrewerydb/openbrewerydb) to suggest changes, add new breweries, or help maintain the dataset.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [Open Brewery DB](https://www.openbrewerydb.org/) for providing the excellent brewery API
- [Model Context Protocol](https://modelcontextprotocol.io) for the protocol specification
- All contributors to the brewery data

## Support

If you encounter any issues or have questions:

1. Check the [Open Brewery DB documentation](https://www.openbrewerydb.org/documentation)
2. Open an issue in this repository
3. Check existing issues for similar problems

---

**Note**: This is an unofficial MCP server for Open Brewery DB. It is not affiliated with or endorsed by Open Brewery DB.