# 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.