MCP Inflow Ingredients
# MCP Inflow Ingredients
An MCP (Model Context Protocol) server that enables AI assistants to interact with Inflow Inventory API, allowing them to manage ingredients/products and inventory programmatically.
## Features
### Product/Ingredient Management
- **List Ingredients**: Search and filter products with smart search
- **Get Ingredient Details**: Retrieve full information about specific products
- **Get Inventory Summary**: View quantities (on hand, available, reserved, etc.)
- **Search Ingredients**: Full-text search across name, description, SKU, barcode
- **Create Ingredient**: Add new products to inventory
- **Update Ingredient**: Modify existing product information
### Inventory Management
- **Create Stock Adjustment**: Adjust inventory quantities for products
- **List Stock Adjustments**: View adjustment history
- **Get Stock Adjustment**: Retrieve details of specific adjustments
## Setup
### Prerequisites
- Node.js 18+ installed
- Inflow Inventory account with API access
- Inflow API key and Company ID
### Installation
1. Navigate to the project directory:
```bash
cd ~/mcp-inflow-ingredients
```
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables:
```bash
cp .env.example .env
# Edit .env with your Inflow API credentials
```
Required environment variables:
- `INFLOW_API_KEY`: Your Inflow API key
- `INFLOW_COMPANY_ID`: Your Inflow company ID
- `INFLOW_API_URL`: API base URL (default: https://cloudapi.inflowinventory.com)
- `INFLOW_API_VERSION`: API version (default: 2025-06-24)
### Test Connection
Verify your Inflow API connection:
```bash
npm run test:connection
```
This will test basic API connectivity and list products.
## MCP Server Usage
### Running the Server
Start the MCP server:
```bash
npm start
```
For development with auto-reload:
```bash
npm run dev
```
### Available Tools
#### Product/Ingredient Tools
**`list_ingredients`**
- List all products with optional filters
- Parameters: name, description, isActive, barcode, smart, include, limit
**`get_ingredient`**
- Get detailed information about a specific product
- Parameters: productId (required), include
**`get_inventory_summary`**
- Get inventory summary with quantities
- Parameters: productId (required)
**`search_ingredients`**
- Search products using full-text search
- Parameters: query (required), limit, include
**`create_ingredient`**
- Create a new product
- Parameters: productId (UUID, required), name (required), sku, description, isActive, additionalFields
**`update_ingredient`**
- Update an existing product
- Parameters: productId (required), name, sku, description, isActive, additionalFields
#### Inventory Tools
**`create_stock_adjustment`**
- Create a stock adjustment to modify inventory
- Parameters: stockAdjustmentId (UUID, required), locationId (required), lines (array, required), adjustmentReasonId, notes, adjustmentDate
**`list_stock_adjustments`**
- List stock adjustments
- Parameters: adjustmentNumber, include, limit
**`get_stock_adjustment`**
- Get details of a specific adjustment
- Parameters: stockAdjustmentId (required), include
## Project Structure
```
mcp-inflow-ingredients/
├── index.js # Main MCP server entry point
├── types.ts # TypeScript definitions for JSDoc
├── package.json # Node.js dependencies and scripts
├── .env # Environment variables (not in git)
├── .env.example # Environment template
├── .mcp.json # MCP server configuration
├── src/
│ ├── inflow-client.js # Inflow API client
│ └── handlers/
│ ├── product-handlers.js # Product operations
│ └── inventory-handlers.js # Inventory operations
├── tests/
│ └── test-connection.js # API connection test
└── docs/
└── swagger.json # Inflow API documentation
```
## Development
### Type Safety
This project uses JSDoc with TypeScript type definitions for type safety without a build step. Types are defined in `types.ts` and imported via JSDoc comments.
### Testing
Run the connection test:
```bash
npm run test:connection
```
### Scripts
- `npm start` - Start the MCP server
- `npm run dev` - Development mode with auto-reload
- `npm run test:connection` - Test Inflow API connection
## Inflow API Resources
- [Inflow API Documentation](https://cloudapi.inflowinventory.com/)
- [API Support](mailto:support@inflowinventory.com)
## License
MIT
TDQS
Scored across 9 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, create_ingredient, get_ingredient, update_ingredient, and list_ingredients each handle different CRUD operations for ingredients, while stock adjustment tools focus on inventory modifications. The separation between ingredient management and stock adjustments is well-defined, preventing misselection.
All tool names follow a consistent verb_noun pattern using snake_case, such as create_ingredient, get_inventory_summary, and list_stock_adjustments. This uniformity makes the tools predictable and easy to understand, with no deviations in naming conventions across the set.
With 9 tools, the count is well-scoped for inventory and ingredient management. Each tool serves a specific function, such as CRUD operations for ingredients and stock adjustments, without redundancy. This number is appropriate for the domain, providing comprehensive coverage without being overwhelming.
The tool set offers strong coverage for ingredient and inventory management, including create, read, update, list, and search operations, as well as stock adjustments. A minor gap exists in the lack of an update_stock_adjustment tool, which could limit flexibility in modifying adjustments, but agents can work around this by creating new adjustments.