oracle-unshipped-orders-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Oracle Unshipped Orders MCP Server
MCP (Model Context Protocol) server for retrieving unshipped orders from Oracle/Red Prairie Blue Yonder WMS database.
๐ Security Features
Environment Variables: All credentials stored in
.env(git-ignored)Connection Pooling: Efficient database connection management
No Hardcoded Credentials: Zero credentials in source code
Oracle Best Practices: Uses oracledb official driver with secure connection handling
Related MCP server: FastMCP Orders Server
๐ Quick Start
1. Install Dependencies
cd oracle-unshipped-orders-mcp
npm install2. Configure Database Credentials
IMPORTANT: Create a .env file (this file is git-ignored and will NOT be committed):
cp .env.example .envEdit .env and add your actual Oracle credentials:
ORACLE_USER=your_actual_username
ORACLE_PASSWORD=your_actual_password
ORACLE_CONNECTION_STRING=your_host:1521/your_service_nameExample:
ORACLE_USER=wmsuser
ORACLE_PASSWORD=SecureP@ssw0rd123
ORACLE_CONNECTION_STRING=db.bolthousefresh.com:1521/REDPRAIRIE3. Build the Project
npm run build4. Test the MCP Server
npm testThe server will:
โ Connect to your Oracle database
โ Initialize connection pool
โ Start the MCP server on stdio
โ Be ready to accept tool calls
๐ ๏ธ Available Tools
get_unshipped_orders
Retrieves all unshipped orders for a specific customer.
Input:
stcust(string, required): Ship-to Customer ID
Output:
{
"success": true,
"customer": "CUST001",
"total_orders": 5,
"orders": [
{
"ORDNUM": "ORD12345",
"WH_ID": "DC01",
"STCUST": "CUST001",
"BTCUST": "CUST001",
"BT_ADR_ID": "ADDR001",
"ADDDTE": "2026-06-25",
"EXPSHIP": "2026-07-02",
"APPTTIME": "10:00",
"CPONUM": "PO98765",
"PRTNUM": "PART123",
"ORDQTY": 100,
"ORDLIN": 1,
"INPQTY": 100,
"PCKQTY": 100,
"STGQTY": 100,
"SHPQTY": 0
}
]
}Query Logic:
Filters orders with
shpqty = 0(zero shipped quantity)Includes orders with
dispatch_dte is null(not yet dispatched)Excludes alcohol items (
non_alc_flg = 0)Joins truck dispatch details for expected ship dates and appointment times
๐ Project Structure
oracle-unshipped-orders-mcp/
โโโ src/
โ โโโ index.ts # Main MCP server code
โโโ dist/ # Compiled JavaScript (generated)
โโโ package.json # Dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ .env.example # Template for credentials (safe to commit)
โโโ .env # YOUR ACTUAL CREDENTIALS (git-ignored)
โโโ .gitignore # Protects sensitive files
โโโ README.md # This file๐ Security Checklist
Before committing to GitHub:
โ
.envfile is listed in.gitignoreโ No credentials in source code
โ Only
.env.example(with placeholders) is committedโ Verify:
git statusshould NOT show.env
๐ข Deployment to Railway
Option 1: Railway CLI
railway login
railway init
railway upIn Railway dashboard, add environment variables:
ORACLE_USERORACLE_PASSWORDORACLE_CONNECTION_STRING
Option 2: GitHub Integration
Push code to GitHub (credentials are git-ignored)
Connect Railway to your GitHub repo
Add environment variables in Railway dashboard
Deploy automatically on push
๐งช Testing Locally with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsThis opens a web interface where you can:
Test the
get_unshipped_orderstoolInspect requests/responses
Debug connection issues
๐ SQL Query Details
The MCP executes this query (with customer filter):
SELECT o.ordnum, o.wh_id, o.stcust, o.btcust, o.bt_adr_id,
o.adddte, dtl.expship, mst.appttime, o.cponum,
ol.prtnum, ol.ordqty, ol.ordlin,
sl.inpqty, sl.pckqty, sl.stgqty, sl.shpqty
FROM ord o
INNER JOIN ord_line ol ON o.wh_id = ol.wh_id AND o.ordnum = ol.ordnum
INNER JOIN shipment_line sl ON ol.wh_id = sl.wh_id AND ol.ordnum = sl.ordnum
AND ol.ordlin = sl.ordlin AND ol.ordsln = sl.ordsln
INNER JOIN shipment shp ON sl.wh_id = shp.wh_id AND sl.ship_id = shp.ship_id
INNER JOIN stop stp ON shp.stop_id = stp.stop_id
INNER JOIN car_move car ON stp.car_move_id = car.car_move_id
INNER JOIN trlr trl ON car.trlr_id = trl.trlr_id
INNER JOIN usrtruckdspdetail dtl ON dtl.ordnum = o.ordnum AND dtl.wh_id = o.wh_id
INNER JOIN usrtruckdspmaster mst ON mst.wh_id = dtl.wh_id AND mst.mstordnum = dtl.mstordnum
WHERE trl.dispatch_dte IS NULL
AND sl.shpqty = 0
AND ol.non_alc_flg = 0
AND o.stcust = :stcust
ORDER BY o.ordnum, ol.ordlin๐ Troubleshooting
"Database pool not initialized"
Check
.envfile exists and has correct credentialsVerify Oracle connection string format:
host:port/service_name
"ORA-12154: TNS:could not resolve the connect identifier"
Verify
ORACLE_CONNECTION_STRINGformatCheck network connectivity to Oracle server
Ensure firewall allows connection on Oracle port (usually 1521)
"ORA-01017: invalid username/password"
Double-check credentials in
.envVerify user has SELECT privileges on required tables
No results returned
Verify customer ID (
stcust) exists in databaseCheck if customer has unshipped orders matching the criteria
Test query directly in SQL*Plus or SQL Developer
๐ References
๐ค Author
Rakesh - Sr. Systems Programmer/Analyst
New Carrot Farms LLC dba Bolthouse Fresh Foods
This server cannot be deployed
Maintenance
Related MCP Connectors
Read Extensiv warehouse records, create outbound orders and cancel eligible orders.
Read Infoplus warehouses, item stock, order status and inbound shipment notices.
Read SOS Inventory stock and orders; create customers, items and purchase or sales orders.
Search Order Desk orders and inventory; read order items and shipments; create or update orders.
Related MCP Servers
- AlicenseCqualityAmaintenanceMCP server for IQMS / DELMIAworks (EnterpriseIQ) โ read manufacturing ERP data via Oracle and post transactional updates via the WebAPI module.16Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables querying customer orders from a PostgreSQL database by customer ID or email, with optional minimum amount filtering.-
- AlicenseNot gradedqualityCmaintenanceEnables querying Proluxe ERP data such as customers, orders, invoices, AR aging, bills of materials, product catalog, focus priorities, and projects through MCP tools.1MIT
- AlicenseBqualityCmaintenanceEnables read-only access to Epicor Kinetic ERP data, including sales orders, customers, parts, and shipments, through secure MCP tools.4MIT