skuvault-mcp-server

dbankscard/skuvault-mcp-server

3.2

If you are the rightful owner of skuvault-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The SkuVault MCP Server is a robust Model Context Protocol server designed for seamless integration with the SkuVault inventory management system API, offering enterprise-grade features for production use.

Tools
5
Resources
0
Prompts
0

SkuVault MCP Server

A Model Context Protocol (MCP) server that provides seamless integration with the SkuVault inventory management system API. Built for production use with enterprise-grade features.

๐Ÿš€ Features

Core Functionality

  • Product Management: Create, read, update products individually or in batches
  • Inventory Control: Add, remove, and set inventory quantities across warehouses
  • Warehouse Operations: List warehouses and manage inventory by location
  • Smart Analytics: Active/inactive products, low stock alerts, inventory summaries

Production-Ready

  • โœ… Rate Limiting: Dynamic rate limit learning with exponential backoff
  • โœ… Caching: Intelligent response caching to minimize API calls
  • โœ… Safety: Confirmation requirements for all mutating operations
  • โœ… Validation: Comprehensive input validation for all operations
  • โœ… Performance: Connection pooling and request queuing

๐Ÿ“ฆ Installation

  1. Clone the repository:
git clone https://github.com/dbankscard/skuvault-mcp-server.git
cd skuvault-mcp-server
  1. Install dependencies:
pip install -e .
  1. Set up authentication:
cp .env.example .env
# Edit .env and add your SkuVault credentials

๐Ÿ”ง Configuration

For Claude Desktop

Add to your Claude Desktop config file:

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

{
  "mcpServers": {
    "skuvault": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/skuvault-mcp-server",
      "env": {
        "SKUVAULT_TENANT_TOKEN": "your_tenant_token",
        "SKUVAULT_USER_TOKEN": "your_user_token"
      }
    }
  }
}

Troubleshooting: PYTHONPATH Configuration

If you encounter import errors when running the server, you may need to set the PYTHONPATH environment variable. This is necessary because:

  1. Module Structure: The server uses absolute imports (e.g., from src.auth import SkuVaultAuth) which require Python to know where to find the src module.
  2. MCP Integration: When Claude Desktop launches the server, it may not automatically include the project root in Python's module search path.

To fix this, add PYTHONPATH to your configuration:

{
  "mcpServers": {
    "skuvault": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/skuvault-mcp-server",
      "env": {
        "PYTHONPATH": "/path/to/skuvault-mcp-server",
        "SKUVAULT_TENANT_TOKEN": "your_tenant_token",
        "SKUVAULT_USER_TOKEN": "your_user_token"
      }
    }
  }
}

Note: The PYTHONPATH should point to the root directory of the project (where the src folder is located), not to the src folder itself.

๐Ÿ› ๏ธ Available Tools

Product Operations

  • get_product(sku) - Get product details
  • get_products(page_number, page_size, skus, get_all, active_only) - List products
  • create_product(...) - Create new product
  • update_product(...) - Update product
  • batch_update_products(updates) - Update multiple products efficiently

Inventory Management

  • get_inventory_by_location(...) - Get inventory with filtering
  • add_inventory(...) - Add inventory
  • remove_inventory(...) - Remove inventory
  • set_item_quantity(...) - Set exact quantity

Analytics

  • get_all_active_products() - All active products with pagination
  • get_all_inactive_products() - All inactive products
  • get_low_stock_products(threshold) - Products at/below reorder point
  • get_product_summary_report() - Comprehensive statistics

System Tools

  • get_cache_stats() - Cache performance metrics
  • clear_cache(pattern) - Clear cached data
  • get_rate_limits() - View current rate limits
  • call_api_endpoint(endpoint, **params) - Access any SkuVault API endpoint

๐Ÿ“š Documentation

  • - Detailed workflows and usage patterns
  • - Complete API specification

๐Ÿ’ก Example Questions You Can Ask

๐Ÿ“ฆ Product Management

  • "Show me details for SKU ABC123"
  • "Get all active products"
  • "Find all inactive products"
  • "List products with SKUs ABC123, DEF456, and GHI789"
  • "Show me all products from brand XYZ"
  • "Create a new product with SKU NEW001, description 'Test Product', cost $10"
  • "Update the price of SKU ABC123 to $29.99"
  • "Update the cost to $15 for SKUs ABC123, DEF456, and GHI789"
  • "Change the description of SKU XYZ789 to 'Updated Product Name'"

๐Ÿ“Š Inventory Analysis

  • "What's my current inventory for SKU ABC123?"
  • "Show inventory by location for warehouse 1"
  • "Get inventory for location A1 in warehouse 2"
  • "Show me all products that are low on stock"
  • "Which products are at or below their reorder point?"
  • "Show me inventory summary for all warehouses"
  • "What products have zero quantity?"
  • "List all inventory in warehouse 1, location B2"

๐Ÿ“ˆ Analytics & Reports

  • "Give me a product summary report"
  • "Show product breakdown by brand"
  • "How many active vs inactive products do I have?"
  • "Show me inventory value by warehouse"
  • "Which locations have the most inventory?"
  • "Get product statistics including total value"
  • "Show me products that need reordering"

โž• Add Inventory

  • "Add 50 units of SKU ABC123 to warehouse 1, location A1"
  • "Receive 100 units of SKU XYZ789 into warehouse 2"
  • "Add inventory for SKU DEF456 with a note about the shipment"

โž– Remove Inventory

  • "Remove 10 units of SKU ABC123 from warehouse 1, location A1"
  • "Remove 5 units of SKU XYZ789 for order fulfillment"
  • "Deduct inventory for damaged items"

๐Ÿ”ง Set Exact Quantities

  • "Set the quantity of SKU ABC123 to exactly 100 units in warehouse 1"
  • "Update SKU XYZ789 to have 0 units in location B2"
  • "Correct the inventory count for SKU DEF456 to 75 units"

๐Ÿญ Warehouse Operations

  • "List all warehouses"
  • "Show me warehouse details"
  • "Which warehouses do we have?"

๐Ÿ” Advanced Queries

  • "Get the first 10 products"
  • "Show me products on page 3 with 50 items per page"
  • "Find all products and get complete details"
  • "Check inventory across all locations for SKU ABC123"

๐Ÿ’ป System Operations

  • "Show cache statistics"
  • "Clear the product cache"
  • "Show current rate limits"
  • "Clear all cached data"
  • "Show queue statistics"

๐ŸŒ Generic API Access

  • "Call the getSuppliers endpoint"
  • "Use the getBrands API endpoint"
  • "Call getSales endpoint with date range parameters"

๐Ÿ“ Natural Language Understanding

The MCP server understands natural variations of these questions:

  • "What's in stock for ABC123?" โ†’ Gets inventory
  • "I need to update prices for multiple products" โ†’ Batch update
  • "Show me what needs to be reordered" โ†’ Low stock report
  • "Fix the quantity for this SKU" โ†’ Set item quantity

๐Ÿ”’ Safety Features

All operations that modify data require explicit confirmation:

  • Clear summary of what will be changed
  • Visual warnings for destructive operations
  • Explicit "yes" or "confirm" required to proceed

To bypass for automation, set confirm=True parameter.

๐Ÿ—๏ธ Architecture

skuvault-mcp-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ server.py          # Main MCP server
โ”‚   โ”œโ”€โ”€ api_client.py      # SkuVault API client
โ”‚   โ”œโ”€โ”€ models/            # Pydantic models
โ”‚   โ”œโ”€โ”€ tools/             # Analytics tools
โ”‚   โ””โ”€โ”€ utils/             # Utilities (cache, rate limiter, validators)
โ”œโ”€โ”€ api_schema_complete.json  # Complete API specification
โ”œโ”€โ”€ pyproject.toml         # Package configuration
โ””โ”€โ”€ README.md              # This file

๐Ÿงช Testing

Run the test suite:

python test_server.py

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿค Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ”— Resources

โšก Quick Start

  1. Clone โ†’ 2. Install โ†’ 3. Configure โ†’ 4. Add to Claude Desktop โ†’ 5. Start using!
# Clone and install
git clone https://github.com/dbankscard/skuvault-mcp-server.git
cd skuvault-mcp-server
pip install -e .

# Configure
cp .env.example .env
# Add your tokens to .env

# Test
python test_server.py

# Add to Claude Desktop and start using!