India Logistics MCP ๐ฎ๐ณ โ How can my AI agent ship a parcel across India (Delhivery / Bluedart / Ekart via Shiprocket)?
Use it in 60 seconds
Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):
{
"mcpServers": {
"india-logistics": {
"type": "http",
"url": "https://logi-in.wishpool.app/mcp"
}
}
}
Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored โ see the threat model.
Or run it yourself
Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:
git clone https://github.com/junter1989k-ai/india-logistics-mcp && cd india-logistics-mcp && npx vercel --prod
MIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.
Remote MCP server that lets any AI agent ship parcels across India โ over Delhivery, Bluedart, Ekart, Xpressbees, DTDC and more โ through the Shiprocket shipping API. Check courier serviceability + live rates by pincode, create shipping orders, track parcels by AWB, and cancel orders. Stateless, bring-your-own merchant credentials, never stores anything.
Live endpoint: https://logi-in.wishpool.app/mcp ยท Registry: app.wishpool/india-logistics-mcp
Quick start
{
"mcpServers": {
"india-logistics": {
"type": "http",
"url": "https://logi-in.wishpool.app/mcp",
"headers": {
"x-shiprocket-email": "your_api_user@example.com",
"x-shiprocket-password": "your_api_user_password"
}
}
}
}
No shared demo โ use your own Shiprocket account. Create an API user in the Shiprocket dashboard (Settings โ API โ Configure / Create an API User) and send its email + password in the headers above. The server is stateless: on every call it exchanges the credentials for a short-lived Bearer token at Shiprocket's /auth/login and stores nothing. Real shipping requires completed merchant KYC (Aadhaar/GSTIN) and at least one registered pickup location โ merchant-side prerequisites.
Tools
| Tool | What it does |
|---|---|
check_serviceability | Call this first. Given pickup_postcode, delivery_postcode, weight (kg) and cod, returns every serviceable courier (Delhivery, Bluedart, Ekart, Xpressbees, DTDCโฆ) with its rate (INR), estimated_delivery_days and rating, and flags the cheapest. Read-only โ quotes only, spends nothing. |
create_shipment | Create a Shiprocket adhoc order. pickup_location (a nickname already registered in your dashboard) + buyer address + order_items (name/units/selling_price) + payment_method (COD/Prepaid) + sub_total (INR) + parcel box length/breadth/height (cm) + weight (kg). Returns order_id, shipment_id, status. Creating the order does not charge your wallet โ that happens when a courier/AWB is assigned. |
query_tracking | Track by shipment_id (preferred) or awb. Returns current_status from the Shiprocket set โ NEW / PICKUP SCHEDULED / PICKED UP / IN TRANSIT / OUT FOR DELIVERY / DELIVERED / UNDELIVERED / RTO INITIATED / RTO DELIVERED / CANCELED / LOST โ plus a plain-English hint; non-terminal statuses carry next_steps. Raw tracking_data always included. |
cancel_shipment | Cancel one or more Shiprocket orders by their Shiprocket order_id (or order_ids array). Only works before pickup โ an already-shipped order needs an RTO. |
Owner policy guardrails ride optional headers (x-agentpay-max-amount, x-agentpay-approval-above, x-agentpay-allowed-tools) โ set by the human owner in client config; the agent cannot relax them. The order value (INR) is gated before the order is created: approval-above returns an unsigned draft with no order created.
Units
Weight in kilograms (kg), parcel box dimensions in centimetres (cm), money in INR.
Develop
node test/serve.js # local server on :3246 (/mcp)
node test/e2e.js # protocol + validation + policy/shiprocket units + fake-credential live probe to apiv2.shiprocket.in (expects native 403)
How it talks to Shiprocket
Every tool call is two server-to-server requests: first POST /v1/external/auth/login ({ email, password } โ { token }), then the business endpoint with Authorization: Bearer <token> โ the token is never cached (stateless). check_serviceability is GET /v1/external/courier/serviceability/?pickup_postcode=&delivery_postcode=&weight=&cod=. create_shipment is POST /v1/external/orders/create/adhoc. query_tracking is GET /v1/external/courier/track/shipment/{shipment_id} (or /track/awb/{awb}). cancel_shipment is POST /v1/external/orders/cancel ({ ids: [...] }). Base URL https://apiv2.shiprocket.in.
Safety
Pure stateless translation layer. Orders, labels and tracking are held by Shiprocket and the couriers; the merchant credentials travel per-request in headers, are exchanged for a short-lived token, and nothing is stored. Parcels flow sender โ courier โ recipient directly. Privacy policy.
Sister servers
USA labels (USPS/UPS/FedEx) via EasyPost live in usa-logistics-mcp; Taiwan CVS pickup + home delivery in taiwan-logistics-mcp. One family of stateless BYO local-commerce MCP servers: local payments in 81 countries at mcp.wishpool.app, plus electronic-invoice servers across nine countries including India GST, Mexico CFDI, Brazil NF-e, Chile DTE and Peru CPE.
MIT licensed.