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
- Go to Setup > Company > Enable Features
- Under Items & Inventory tab, enable:
- Inventory Management
- Multiple Locations
- Advanced Bin Management
- Demand Planning
1.2 Create SCM Integration
- Navigate to Setup > Integration > Manage Integrations
- 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
- Base URL:
https://{accountId}.suitetalk.api.netsuite.com
- Select endpoints:
- Inventory endpoints
- Purchase endpoints
- Fulfillment endpoints
- Planning endpoints
- Click Next
Step 6: MCP Server Configuration
- Name: "NetSuite SCM"
- Description: "Supply chain management"
- Configure production mode
- Click Next
Step 7: Configure Authentication
- Authentication Type: OAuth 2.0
- Configure OAuth URLs
- Enter credentials
- 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
Recommended Scope Combinations
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
-
Data Security:
- Encrypt sensitive data
- Secure API access
- Audit trails
- Access controls
-
Integration Security:
- OAuth 2.0 only
- IP whitelisting
- Rate limiting
- Token rotation
-
Compliance:
- Industry standards
- Data retention
- Privacy regulations
- Trade compliance
Troubleshooting
Common Issues
-
Inventory Discrepancies
- Verify transactions
- Check timing
- Review adjustments
- Audit movements
-
Integration Problems
- Validate mappings
- Check permissions
- Review workflows
- Test connections
-
Performance Issues
- Optimize queries
- Batch operations
- Use async processing
- Monitor limits
Getting Help
- Documentation: AI Gateway Docs
- Support: support@cequence.ai
- NetSuite Help: help.netsuite.com