inFlow Inventory MCP Server

inFlow Inventory MCP Server

Enables AI assistants to manage inFlow Inventory, including products, sales orders, purchase orders, customers, vendors, inventory operations, serial numbers, and webhooks through natural language.

Category
访问服务器

README

inFlow Inventory MCP Server

A Model Context Protocol (MCP) server that provides comprehensive tools for interacting with the inFlow Inventory API. This enables AI assistants like Claude to manage your inventory, orders, customers, and more.

Current package version: 1.2.0

Features

  • Products: List, search, create, update products and check inventory levels
  • Sales Orders: Create customer orders and patch existing orders without dropping unmentioned lines or serial numbers
  • Purchase Orders: Create vendor purchase orders, receive stock, and reverse received stock
  • Customers & Vendors: Manage customer and vendor records
  • Inventory Operations: Stock adjustments, transfers, counts, and manufacturing orders
  • Manufacturing Orders: Create or patch work orders while preserving output/input lines and serial numbers
  • Serial Numbers: Query serial numbers from orders or product inventory lines
  • Reference Data: Locations, categories, pricing schemes, payment terms, currencies, tax codes
  • Webhooks: Subscribe to inFlow events

Prerequisites

  • Node.js 18 or higher
  • An active inFlow Inventory subscription with API add-on
  • inFlow API credentials (Company ID and API Key)

Installation

git clone https://github.com/bigl34/inflow-mcp-server.git
cd inflow-mcp-server

# Install dependencies
npm install

# Build the TypeScript
npm run build

Configuration

Getting Your API Credentials

  1. Log in to your inFlow Inventory account
  2. Go to Settings > Integrations
  3. Find your Company ID on the integrations page
  4. Click Add New API Key to generate a new key

Environment Variables

Set the following environment variables:

# Required
export INFLOW_COMPANY_ID="your-company-id"
export INFLOW_API_KEY="your-api-key"

# Optional
export INFLOW_BASE_URL="https://cloudapi.inflowinventory.com"  # Default
export INFLOW_API_VERSION="2025-06-24"  # Default API version
export INFLOW_RATE_LIMIT="60"  # Requests per minute (default: 60)
export INFLOW_REQUEST_TIMEOUT="30000"  # Request timeout in ms (default: 30000)
export INFLOW_MAX_RETRIES="3"  # Max retries on 5xx/429 errors (default: 3)
export INFLOW_RETRY_DELAY="1000"  # Initial retry delay in ms (default: 1000)
export INFLOW_DEBUG="true"  # Enable debug logging (default: false)

Claude Desktop Configuration

Add to your Claude Desktop configuration file:

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

{
  "mcpServers": {
    "inflow-inventory": {
      "command": "node",
      "args": ["/path/to/inflow-mcp-server/dist/index.js"],
      "env": {
        "INFLOW_COMPANY_ID": "your-company-id",
        "INFLOW_API_KEY": "your-api-key"
      }
    }
  }
}

Available Tools

Product Management

Tool Description
list_products Search and filter products
get_product Get product details by ID (use include=itemBoms for BOM)
upsert_product Create or update a product
get_inventory_summary Get stock levels across locations
get_inventory_summaries_batch Batch get stock levels (max 100)
get_bill_of_materials Get BOM components for a manufacturable product

Sales Orders

Tool Description
list_sales_orders Search and filter sales orders
get_sales_order Get order details by ID
upsert_sales_order Create an order or partially update an existing order. Updates preserve unmentioned header fields and lines, merge item patches by line ID or unambiguous product ID, and remove lines listed in deleteLineIds.

Purchase Orders

Tool Description
list_purchase_orders Search and filter purchase orders
get_purchase_order Get order details by ID
upsert_purchase_order Create or update a purchase order
receive_purchase_order Receive all remaining items or selected quantities onto a purchase order
unreceive_purchase_order Reverse received stock by receive-line ID, product quantity, or full unreceive

Customers

Tool Description
list_customers Search and filter customers
get_customer Get customer details by ID
upsert_customer Create or update a customer

Vendors

Tool Description
list_vendors Search and filter vendors
get_vendor Get vendor details by ID
upsert_vendor Create or update a vendor

Inventory Operations

Tool Description
list_stock_adjustments List stock adjustments
get_stock_adjustment Get adjustment details
upsert_stock_adjustment Create/update stock adjustment
list_stock_transfers List stock transfers
get_stock_transfer Get transfer details
upsert_stock_transfer Create/update stock transfer
list_stock_counts List inventory counts
get_stock_count Get count details
upsert_stock_count Create/update stock count
list_manufacturing_orders List work orders
get_manufacturing_order Get work order details
upsert_manufacturing_order Create a work order or partially update an existing one. Updates preserve unmentioned fields, patch output quantity/serials in place, merge input-line patches, and remove lines listed in deleteInputLineIds.

Serial Numbers

Tool Description
get_sales_order_serials Extract serial numbers assigned to sales order lines
get_purchase_order_serials Extract serial numbers assigned to purchase order lines
search_serial_number Search fulfilled sales orders for a serial number
list_serial_numbers Aggregate serial numbers from fulfilled sales orders
get_product_serials Get all serial numbers for a serialized product using product inventory lines
list_all_serials List serial numbers across products that track serials

Reference Data

Tool Description
list_locations List warehouse locations
get_location Get location details
get_suggested_sublocations Get bin/shelf suggestions
list_categories List product categories
list_pricing_schemes List pricing tiers
list_payment_terms List payment terms
list_taxing_schemes List tax schemes
upsert_taxing_scheme Create/update tax scheme
list_tax_codes List tax codes
list_currencies List currencies
list_adjustment_reasons List adjustment reasons
list_custom_field_definitions List custom fields
get_custom_field_dropdown_options Get dropdown options
list_team_members List inFlow users

Webhooks

Tool Description
list_webhooks List webhook subscriptions
upsert_webhook Create/update webhook
delete_webhook Delete webhook

Usage Examples

List Products

List all active products in the "Electronics" category

Create a Sales Order

Create a sales order for customer "Acme Corp" with:
- 5 units of product SKU-001 at $29.99 each
- 10 units of product SKU-002 at $15.00 each
Required by next Friday

Patch a Sales Order

Update sales order SO-1001:
- change the required date to next Monday
- update line abc123 to quantity 2 with serial numbers SN-001 and SN-002
- remove line def456

Receive a Purchase Order

Receive all remaining items on purchase order PO-1001 at the Main Warehouse

Reverse a Purchase Order Receipt

Unreceive 1 unit of product SKU-001 from purchase order PO-1001 as a dry run first

Check Inventory

What's the current stock level for product "Widget Pro" across all locations?

Look Up Serial Numbers

Show all in-stock serial numbers for product "Widget Pro"

Create Stock Transfer

Transfer 50 units of "Widget Pro" from "Main Warehouse" to "Retail Store"

API Features

Filtering

Most list operations support filtering. For example:

list_products with name="Widget" and isActive=true

Pagination

Large result sets are paginated. Use skip and count parameters:

  • count: Number of records to return (max 100)
  • skip: Number of records to skip

Note: The default page size is 20 records. Always specify count when you need all records.

Sorting

All list operations support sorting:

  • sort: Property name to sort by (e.g., "name", "modifiedDate", "orderDate")
  • sortDesc: Set to true for descending order
list_products with sort="modifiedDate" and sortDesc=true

Total Count

To get the total number of matching records (useful for pagination UI), use includeCount:

list_sales_orders with status="Open" and includeCount=true

Response includes:

{
  "data": [...],
  "totalCount": 42
}

Smart Search

Some endpoints support smart parameter for fuzzy searching across multiple fields:

list_customers with smart="acme"  // Searches name, email, phone
list_sales_orders with smart="SO-2025"  // Searches order fields

Includes

Use the include parameter to fetch related data:

get_sales_order with include=["customer", "lines", "lines.product"]
get_product with include=["inventoryLines"]

Partial Updates

upsert_sales_order and upsert_manufacturing_order support safe partial updates when id is provided:

  • Existing fields and lines that are not mentioned are preserved.
  • Line patches merge by explicit line ID, or by product ID when there is exactly one matching line.
  • Sales order lines listed in deleteLineIds are removed.
  • Manufacturing order input lines listed in deleteInputLineIds are removed.
  • Serial numbers can be patched without rebuilding the whole order manually.

Concurrency Control

When updating records, include the timestamp field from the original record to prevent conflicts.

Rate Limiting

The inFlow API has a rate limit of 60 requests per minute. This server implements:

  • Token bucket rate limiting: Automatically paces requests to stay within limits
  • Automatic retries: Retries on 5xx errors and rate limit (429) responses with exponential backoff
  • Configurable limits: Override via INFLOW_RATE_LIMIT environment variable

Error Handling

The server returns descriptive error messages from the inFlow API. Common errors include:

  • 401 Unauthorized: Invalid API key
  • 404 Not Found: Resource doesn't exist
  • 409 Conflict: Timestamp mismatch (record was modified)
  • 429 Too Many Requests: Rate limit exceeded (automatically retried)

Development

# Watch mode for development
npm run dev

# Build for production
npm run build

# Run the server
npm start

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

API Documentation

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选