Skip to main content

NetSuite SCM MCP Server

Create a powerful Model Context Protocol (MCP) server for NetSuite Supply Chain Management (SCM) in minutes with our AI Gateway. This guide walks you through setting up seamless supply chain integration with inventory optimization and instant OAuth authentication.

About NetSuite SCM API

NetSuite SCM provides end-to-end supply chain visibility and control, from procurement to fulfillment. It includes inventory management, demand planning, warehouse management, and logistics capabilities fully integrated with NetSuite's ERP platform.

Key Capabilities

  • Inventory Management: Multi-location inventory control
  • Demand Planning: Forecast and planning tools
  • Warehouse Management: WMS capabilities
  • Procurement: Purchase order automation
  • Fulfillment: Order fulfillment optimization
  • Logistics: Shipping and receiving
  • Quality Management: Quality control processes
  • Supply Chain Analytics: Real-time visibility

API Features

  • Inventory API: Stock management
  • WMS API: Warehouse operations
  • Purchase API: Procurement processes
  • OAuth 2.0: Secure authentication
  • Fulfillment API: Order processing
  • Planning API: Demand forecasting
  • Real-time Sync: Live updates
  • Bulk Operations: Mass processing

What You Can Do with NetSuite SCM MCP Server

The MCP server transforms NetSuite SCM API into a natural language interface, enabling AI agents to:

Inventory Management

  • Stock Control

    • "Check inventory levels across locations"
    • "Transfer stock between warehouses"
    • "Adjust inventory counts"
    • "Set reorder points"
  • Lot/Serial Tracking

    • "Track serial numbers"
    • "Manage lot expiration"
    • "Trace product history"
    • "Handle recalls"
  • Cycle Counting

    • "Schedule cycle counts"
    • "Process count results"
    • "Analyze variances"
    • "Update quantities"

Demand Planning

  • Forecasting

    • "Generate demand forecast"
    • "Analyze seasonal trends"
    • "Calculate safety stock"
    • "Plan inventory levels"
  • Replenishment

    • "Calculate reorder quantities"
    • "Generate purchase suggestions"
    • "Optimize order timing"
    • "Balance stock levels"
  • MRP Planning

    • "Run material requirements"
    • "Generate planned orders"
    • "Check component availability"
    • "Schedule production"

Warehouse Management

  • Receiving

    • "Process receipts"
    • "Inspect incoming goods"
    • "Update putaway"
    • "Generate labels"
  • Picking & Packing

    • "Generate pick lists"
    • "Optimize pick routes"
    • "Process packing"
    • "Print shipping labels"
  • Bin Management

    • "Manage bin locations"
    • "Track bin capacity"
    • "Optimize placement"
    • "Monitor utilization"

Procurement

  • Purchase Orders

    • "Create purchase orders"
    • "Approve PO requests"
    • "Track order status"
    • "Manage blanket POs"
  • Vendor Management

    • "Evaluate vendor performance"
    • "Track delivery metrics"
    • "Manage vendor catalogs"
    • "Monitor compliance"
  • Cost Management

    • "Track purchase prices"
    • "Analyze price variance"
    • "Calculate landed costs"
    • "Monitor spend"

Fulfillment & Logistics

  • Order Processing

    • "Process sales orders"
    • "Allocate inventory"
    • "Manage backorders"
    • "Handle dropships"
  • Shipping

    • "Generate shipping documents"
    • "Calculate freight costs"
    • "Track shipments"
    • "Process returns"
  • 3PL Integration

    • "Send orders to 3PL"
    • "Receive status updates"
    • "Track inventory levels"
    • "Reconcile transactions"

Quality Management

  • Inspection

    • "Create inspection plans"
    • "Record test results"
    • "Track defects"
    • "Manage NCRs"
  • Compliance

    • "Track certifications"
    • "Manage documentation"
    • "Monitor expiration"
    • "Audit compliance"
  • Supplier Quality

    • "Rate vendor quality"
    • "Track defect rates"
    • "Manage CAPAs"
    • "Monitor improvements"

Supply Chain Analytics

  • Performance Metrics

    • "Calculate fill rates"
    • "Track on-time delivery"
    • "Monitor inventory turns"
    • "Analyze carrying costs"
  • Cost Analysis

    • "Total landed cost"
    • "Freight analysis"
    • "Storage costs"
    • "Supply chain TCO"
  • Optimization

    • "Identify bottlenecks"
    • "Optimize routes"
    • "Balance workload"
    • "Reduce lead times"

Global Trade

  • Import/Export

    • "Manage customs docs"
    • "Track duties/taxes"
    • "Handle compliance"
    • "Process declarations"
  • Multi-Currency

    • "Handle FX rates"
    • "Track currency impact"
    • "Manage hedging"
    • "Calculate margins"
  • Compliance

    • "Screen denied parties"
    • "Track licenses"
    • "Manage embargoes"
    • "Document control"

Prerequisites

  • Access to Cequence AI Gateway
  • NetSuite account with SCM modules
  • API access enabled
  • Supply chain permissions

Step 1: Configure NetSuite SCM Access

1.1 Enable SCM Features

  1. Go to Setup > Company > Enable Features
  2. Under Items & Inventory tab, enable:
    • Inventory Management
    • Multiple Locations
    • Advanced Bin Management
    • Demand Planning

1.2 Create SCM Integration

  1. Navigate to Setup > Integration > Manage Integrations
  2. Create new integration:
    • Name: "AI Gateway SCM Integration"
    • OAuth 2.0: Enabled
    • RESTlets: Enabled

1.3 Set Permissions

Required permissions:

  • Items: Full
  • Transactions: Full
  • Lists: Full
  • Reports: Full

1.4 Save Credentials

Record:

  • Client ID
  • Client Secret
  • Account ID

Step 2-4: Standard Setup

Follow standard steps to access AI Gateway, find NetSuite SCM API, and create MCP server.

Step 5: Configure API Endpoints

  1. Base URL: https://{accountId}.suitetalk.api.netsuite.com
  2. Select endpoints:
    • Inventory endpoints
    • Purchase endpoints
    • Fulfillment endpoints
    • Planning endpoints
  3. Click Next

Step 6: MCP Server Configuration

  1. Name: "NetSuite SCM"
  2. Description: "Supply chain management"
  3. Configure production mode
  4. Click Next

Step 7: Configure Authentication

  1. Authentication Type: OAuth 2.0
  2. Configure OAuth URLs
  3. Enter credentials
  4. Enable token refresh

Available NetSuite SCM API Scopes

Inventory Management

  • Inventory Control

    • Stock levels
    • Transfers
    • Adjustments
    • Counts
  • Warehouse Ops

    • Receiving
    • Picking
    • Packing
    • Shipping

Procurement

  • Purchasing

    • Purchase orders
    • Requisitions
    • Approvals
    • Receipts
  • Vendor Relations

    • Vendor records
    • Performance
    • Catalogs
    • Compliance

Planning & Analytics

  • Demand Planning

    • Forecasts
    • Requirements
    • Suggestions
    • Scenarios
  • Analytics

    • Metrics
    • Reports
    • Dashboards
    • Alerts

For Warehouse Managers:

Inventory (Full)
Fulfillment (Full)
Shipping (Full)
Reports (Read)

For Supply Chain Planners:

Inventory (Read)
Planning (Full)
Purchasing (Full)
Analytics (Full)

Step 8-10: Complete Setup

Configure security, choose deployment, and deploy.

Using Your NetSuite SCM MCP Server

With Claude Desktop

{
"servers": {
"netsuite-scm": {
"url": "your-mcp-server-url",
"auth": {
"type": "oauth2",
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"account_id": "your-account-id"
}
}
}
}

Natural Language Commands

  • "What's our current inventory level for SKU-12345?"
  • "Transfer 100 units from warehouse A to warehouse B"
  • "Generate purchase order for items below reorder point"
  • "Show me the pick list for today's orders"
  • "Calculate optimal reorder quantity for top products"

API Integration Example

// Initialize MCP client
const mcpClient = new MCPClient({
serverUrl: 'your-mcp-server-url',
auth: {
type: 'oauth2',
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
accountId: 'your-account-id'
}
});

// Inventory management
const inventoryStatus = await mcpClient.netsuite.scm.getInventoryStatus({
item: 'SKU-12345',
includeAllLocations: true,
includeInTransit: true
});

console.log(`\nInventory Status for SKU-12345:`);
console.log(`Total Available: ${inventoryStatus.totalAvailable}`);
console.log(`Total On Hand: ${inventoryStatus.totalOnHand}`);
console.log(`\nBy Location:`);
for (const location of inventoryStatus.locations) {
console.log(`${location.name}:`);
console.log(` On Hand: ${location.quantityOnHand}`);
console.log(` Available: ${location.quantityAvailable}`);
console.log(` Committed: ${location.quantityCommitted}`);
console.log(` In Transit: ${location.quantityInTransit}`);
}

// Demand planning
const demandForecast = await mcpClient.netsuite.scm.generateDemandForecast({
items: ['SKU-12345', 'SKU-67890'],
horizon: 90, // days
method: 'seasonal_trend',
includePromotions: true,
confidenceLevel: 0.95
});

console.log('\nDemand Forecast:');
for (const item of demandForecast.items) {
console.log(`\n${item.sku}:`);
console.log(` 90-Day Forecast: ${item.totalForecast} units`);
console.log(` Safety Stock: ${item.safetyStock} units`);
console.log(` Reorder Point: ${item.reorderPoint} units`);
console.log(` Economic Order Qty: ${item.eoq} units`);
}

// Create purchase order
const purchaseOrder = await mcpClient.netsuite.scm.createPurchaseOrder({
vendor: 'VENDOR-001',
shipTo: 'WAREHOUSE-A',
items: [
{
item: 'SKU-12345',
quantity: demandForecast.items[0].eoq,
rate: 25.50,
expectedDate: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000)
}
],
terms: 'Net 30',
shipMethod: 'Ground'
});

console.log(`\nCreated PO #${purchaseOrder.tranId}`);
console.log(`Total: $${purchaseOrder.total.toLocaleString()}`);

// Warehouse operations - receiving
const receipt = await mcpClient.netsuite.scm.processReceipt({
purchaseOrder: purchaseOrder.id,
receivedItems: [
{
item: 'SKU-12345',
quantity: 1000,
binLocation: 'A-1-1',
lotNumber: 'LOT-2025-001',
expirationDate: '2026-01-31'
}
],
inspectionNotes: 'All items passed QC inspection'
});

// Pick list generation
const pickList = await mcpClient.netsuite.scm.generatePickList({
orders: ['SO-10001', 'SO-10002', 'SO-10003'],
warehouse: 'WAREHOUSE-A',
strategy: 'batch_pick',
optimization: 'shortest_path'
});

console.log(`\nPick List ${pickList.id}:`);
console.log(`Total Orders: ${pickList.orderCount}`);
console.log(`Total Items: ${pickList.totalItems}`);
console.log(`Estimated Time: ${pickList.estimatedMinutes} minutes`);

console.log('\nOptimized Pick Route:');
for (const pick of pickList.picks) {
console.log(`${pick.sequence}. Bin ${pick.binLocation}`);
console.log(` Item: ${pick.item} (Qty: ${pick.quantity})`);
console.log(` For Orders: ${pick.orders.join(', ')}`);
}

// Inventory transfer
const transfer = await mcpClient.netsuite.scm.createInventoryTransfer({
fromLocation: 'WAREHOUSE-A',
toLocation: 'WAREHOUSE-B',
items: [
{
item: 'SKU-12345',
quantity: 200,
fromBin: 'A-1-1',
toBin: 'B-2-2'
}
],
reason: 'Stock balancing',
shipMethod: 'Internal Transfer',
expectedDate: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000)
});

// Quality management
const qualityInspection = await mcpClient.netsuite.scm.recordInspection({
receiptId: receipt.id,
inspectionPlan: 'INCOMING_RAW_MATERIAL',
results: [
{
test: 'Visual Inspection',
result: 'Pass',
notes: 'No visible defects'
},
{
test: 'Dimension Check',
result: 'Pass',
measurements: {
length: 10.05,
width: 5.02,
tolerance: 0.1
}
}
],
overallResult: 'Pass',
inspector: 'john.doe@company.com'
});

// Supply chain analytics
const supplyChainMetrics = await mcpClient.netsuite.scm.getSupplyChainMetrics({
period: 'last_quarter',
metrics: [
'fillRate',
'onTimeDelivery',
'inventoryTurnover',
'carryingCost',
'stockoutRate'
],
groupBy: ['location', 'category', 'vendor']
});

console.log('\nSupply Chain Performance:');
console.log(`Fill Rate: ${supplyChainMetrics.fillRate}%`);
console.log(`On-Time Delivery: ${supplyChainMetrics.onTimeDelivery}%`);
console.log(`Inventory Turnover: ${supplyChainMetrics.inventoryTurnover}x`);
console.log(`Carrying Cost: $${supplyChainMetrics.carryingCost.toLocaleString()}`);
console.log(`Stockout Rate: ${supplyChainMetrics.stockoutRate}%`);

// Vendor performance
const vendorPerformance = await mcpClient.netsuite.scm.analyzeVendorPerformance({
vendors: 'all',
period: 'ytd',
metrics: [
'onTimeDelivery',
'qualityScore',
'priceVariance',
'responseTime'
]
});

console.log('\nTop Performing Vendors:');
for (const vendor of vendorPerformance.topVendors.slice(0, 5)) {
console.log(`${vendor.name}:`);
console.log(` Score: ${vendor.overallScore}/100`);
console.log(` On-Time: ${vendor.onTimeDelivery}%`);
console.log(` Quality: ${vendor.qualityScore}/5`);
}

// Cost optimization
const costAnalysis = await mcpClient.netsuite.scm.analyzeCosts({
scope: 'total_landed_cost',
items: 'top_100_by_volume',
includeComponents: [
'productCost',
'freight',
'duties',
'handling',
'storage'
]
});

console.log('\nCost Optimization Opportunities:');
for (const opportunity of costAnalysis.opportunities) {
console.log(`${opportunity.description}`);
console.log(` Potential Savings: $${opportunity.annualSavings.toLocaleString()}`);
console.log(` Implementation: ${opportunity.difficulty}`);
console.log(` Impact: ${opportunity.impact}`);
}

// 3PL integration
const thirdPartyLogistics = await mcpClient.netsuite.scm.send3PLOrders({
orders: ['SO-10004', 'SO-10005'],
warehouse: '3PL-EAST',
priority: 'standard',
specialInstructions: 'Fragile items - handle with care'
});

// Track shipments
const shipmentTracking = await mcpClient.netsuite.scm.trackShipments({
dateRange: 'today',
carriers: ['FedEx', 'UPS', 'USPS'],
includeDelivered: false
});

console.log('\nActive Shipments:');
for (const shipment of shipmentTracking.shipments) {
console.log(`${shipment.trackingNumber} (${shipment.carrier})`);
console.log(` Status: ${shipment.status}`);
console.log(` Location: ${shipment.currentLocation}`);
console.log(` ETA: ${shipment.estimatedDelivery}`);
}

// Real-time monitoring
const scmMonitor = await mcpClient.netsuite.scm.startMonitoring({
events: [
'lowInventory',
'shipmentDelay',
'qualityIssue',
'vendorAlert'
],
thresholds: {
inventoryDays: 7,
delayHours: 4
}
});

scmMonitor.on('alert', async (alert) => {
console.log(`SCM Alert: ${alert.type}`);
console.log(`Details: ${alert.message}`);
console.log(`Impact: ${alert.impact}`);

if (alert.type === 'lowInventory' && alert.critical) {
await createEmergencyPO(alert.item);
}
});

Common Use Cases

Inventory Optimization

  • Multi-location management
  • Reorder point optimization
  • Safety stock calculation
  • ABC analysis

Warehouse Efficiency

  • Pick route optimization
  • Bin management
  • Cross-docking
  • Wave planning

Procurement Excellence

  • Vendor management
  • Purchase automation
  • Cost reduction
  • Lead time optimization

Supply Chain Visibility

  • Real-time tracking
  • Performance dashboards
  • Exception management
  • Predictive analytics

Security Best Practices

  1. Data Security:

    • Encrypt sensitive data
    • Secure API access
    • Audit trails
    • Access controls
  2. Integration Security:

    • OAuth 2.0 only
    • IP whitelisting
    • Rate limiting
    • Token rotation
  3. Compliance:

    • Industry standards
    • Data retention
    • Privacy regulations
    • Trade compliance

Troubleshooting

Common Issues

  1. Inventory Discrepancies

    • Verify transactions
    • Check timing
    • Review adjustments
    • Audit movements
  2. Integration Problems

    • Validate mappings
    • Check permissions
    • Review workflows
    • Test connections
  3. Performance Issues

    • Optimize queries
    • Batch operations
    • Use async processing
    • Monitor limits

Getting Help