About ShipSaving
ShipSaving MCP Server wraps the ShipSaving logistics REST API for AI assistants such as Claude. It provides tools for shipping, orders, tracking, addresses, and billing analysis.
Key features
- 01Compare carrier rates and create shipments
- 02Pay for, generate, or void labels
- 03Search and sync orders, print labels in bulk
- 04Query, create, and validate addresses
- 05Manage package templates and carrier service levels
- 06Review shipping analytics, wallet, and transactions
Use cases
- 01Compare shipping quotes and buy a label
- 02Sync store orders and process pending parcels in bulk
- 03Check package tracking and shipment status
- 04Analyze shipping savings and check wallet balance
MCP support
The server exposes ShipSaving logistics REST API operations as tools for MCP clients, covering rates, shipments, orders, addresses, tracking, and billing.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y shipsaving-mcpSHIPSAVING_APP_KEYSecretShipSaving API key (starts with sk_)SHIPSAVING_API_BASE_URLAPI base URLLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
30Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| ship_date | string | No | Shipping date in ISO 8601 format, e.g., 2025-12-14T00:00:00+08:00 |
| package_data | object | Yes | Package information |
| package_data.type | string | No | Package type |
| package_data.width | number | No | Width (not required when using a predefined package) |
| package_data.height | number | No | Height (optional when using a predefined package) |
| package_data.length | number | No | Length (optional when using a predefined package) |
| package_data.weight | number | Yes | Weight |
| package_data.weight_unit | enum | No | Weight unitg | oz | lb | kg |
| package_data.dimension_unit | enum | No | Dimension unitcm | in |
| package_data.carrier_package_id | string | No | Predefined package ID. If using a predefined package, provide this field; dimensions are populated automatically by the system, so there is no need to provide length/width/height. |
| to_address_data | object | Yes | Recipient address |
| to_address_data.city | any | Yes | |
| to_address_data.email | any | No | |
| to_address_data.phone | any | No | |
| to_address_data.state | any | Yes | |
| to_address_data.street | any | Yes | |
| to_address_data.country | any | No | |
| to_address_data.street2 | any | No | |
| to_address_data.zip_code | any | Yes | |
| to_address_data.last_name | any | Yes | |
| to_address_data.first_name | any | Yes | |
| to_address_data.address_type | any | No | |
| to_address_data.company_name | any | No | |
| to_address_data.save_address | any | No | |
| from_address_data | object | Yes | Sender address |
| from_address_data.city | string | Yes | City |
| from_address_data.email | string | No | |
| from_address_data.phone | string | No | Phone |
| from_address_data.state | string | Yes | State/province code |
| from_address_data.street | string | Yes | Address line 1 |
| from_address_data.country | string | No | Country code, e.g., US / CA |
| from_address_data.street2 | string | No | Address line 2 |
| from_address_data.zip_code | string | Yes | ZIP code |
| from_address_data.last_name | string | Yes | Last name |
| from_address_data.first_name | string | Yes | First name |
| from_address_data.address_type | enum | No | Address typeresidential | commercial |
| from_address_data.company_name | string | No | Company name |
| from_address_data.save_address | boolean | No | Whether to save to the address book |
Details
From the project READMEShipSaving MCP Server
An MCP (Model Context Protocol) server that wraps the ShipSaving logistics REST API, enabling AI assistants like Claude to perform shipping operations through natural language.
Features
- Shipment Management — Multi-carrier rate comparison, create shipments, pay & generate labels, void labels, track packages
- Order Management — Sync store orders, search, bulk label printing, mark as shipped, cancel
- Address Book — Query, create, and validate addresses
- Package Templates — Save and reuse package dimensions
- Carriers — List connected carrier accounts and available service levels
- Store Integration — List connected e-commerce stores (Shopify, etc.)
- Analytics — Total savings, shipping cost analysis
- Billing — Wallet balance, transaction history
Quick Start
Prerequisites
- Node.js 18+
- A ShipSaving App Key (get one at ShipSaving → Settings → API)
Install with Claude Code CLI (Recommended)
claude mcp add shipsaving \
-e SHIPSAVING_APP_KEY=sk_your_app_key \
-- npx -y shipsaving-mcp
Install with Claude Desktop
Edit your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"shipsaving": {
"command": "npx",
"args": ["-y", "shipsaving-mcp"],
"env": {
"SHIPSAVING_APP_KEY": "sk_your_app_key"
}
}
}
}
Restart Claude Desktop after saving.
Verify Installation
claude mcp list
# shipsaving should show status: Connected
Available Tools
Shipment Management
| Tool | Description |
|---|---|
get_shipping_rates | Compare rates across multiple carriers, marks cheapest & fastest |
create_draft_shipment | Create a draft shipment (no payment yet) |
pay_shipment | Pay for shipment and generate label |
void_label | Void/refund an unused label |
search_shipments | Search shipments by various criteria |
get_shipment_detail | Get detailed shipment information |
track_shipment | Track package by tracking number |
get_insurance_rates | Query shipping insurance rates |
Order Management
| Tool | Description |
|---|---|
search_orders | Search orders by status, store, date, keywords |
get_order_detail | Get order details |
create_order | Manually create an order |
buy_label_from_order | Purchase a label for an existing order |
mark_order_shipped | Mark order as shipped |
cancel_order | Cancel an order |
sync_store_orders | Trigger store order sync |
get_order_tags | List all order tags |
Address Book
| Tool | Description |
|---|---|
list_addresses | Query address book entries |
create_address | Add a new address |
update_address | Update an existing address |
validate_address | Validate address deliverability |
Package Templates
| Tool | Description |
|---|---|
list_packages | List saved package templates |
list_predefined_packages | List carrier-provided package types |
create_package | Create a reusable package template |
Carriers & Stores
| Tool | Description |
|---|---|
list_carriers | List connected carrier accounts |
get_service_levels | Query available service levels per carrier |
list_stores | List connected e-commerce stores |
Analytics & Billing
| Tool | Description |
|---|---|
get_total_savings | View total savings with ShipSaving |
get_shipping_analysis | Analyze shipping data over time |
get_wallet_info | Query wallet balance |
get_transaction_history | Query transaction records |
Usage Examples
Compare shipping rates:
Compare rates from ZIP 90001 to 10001 for a 10x8x6 inch, 2 lb package
Ship a package:
Ship from John Smith, 123 Main St, Los Angeles, CA 90001
to Jane Doe, 456 Park Ave, New York, NY 10001
Package: 10x8x6 inches, 2 lbs, choose cheapest option
Bulk label printing:
Sync my Shopify orders, then print labels for all pending orders
using 6x6x6 inch boxes, 1 lb each, cheapest carrier, no insurance
Track a package:
Track package 1Z999AA10123456784
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
SHIPSAVING_APP_KEY | Yes | — | ShipSaving App Key (sk_ prefix) |
SHIPSAVING_API_BASE_URL | No | https://app-gateway.shipsaving.com | API base URL |
SHIPSAVING_TIMEOUT_MS | No | 60000 | Request timeout in milliseconds |
SHIPSAVING_LOG_FILE | No | — | Path to log file (logs go to stderr by default) |
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
# Debug with MCP Inspector
SHIPSAVING_API_BASE_URL=https://app-gateway.shipsaving.com \
SHIPSAVING_APP_KEY=sk_your_app_key \
npx @modelcontextprotocol/inspector node dist/index.js
Troubleshooting
"command not found" — Install Node.js 18+: nodejs.org
"Failed to connect" — Try running the server manually to see error output:
SHIPSAVING_APP_KEY=sk_your_app_key npx -y shipsaving-mcp
If it hangs (waiting for input), the server started successfully. If it errors immediately, you'll see the issue.
To clear the npx cache:
rm -rf ~/.npm/_npx
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.