README.md•4.59 kB
# 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