mcp-ups
README.md
# mcp-ups
MCP server for UPS package tracking and shipping services. Uses Playwright browser automation to interact with the UPS website.
## Requirements
- Node.js 18 or higher
- Playwright (installed automatically as a dependency)
## Installation
```bash
npm install -g @striderlabs/mcp-ups
```
After installing, install the Playwright browser:
```bash
npx playwright install chromium
```
## Configuration for Claude Desktop
Add the following to your Claude Desktop configuration file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"ups": {
"command": "mcp-ups"
}
}
}
```
If using `npx` instead of a global install:
```json
{
"mcpServers": {
"ups": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-ups"]
}
}
}
```
## Tools
### `track_package`
Track a UPS package by tracking number. Returns current status, location history, and estimated delivery date.
**Parameters:**
- `tracking_number` (required): UPS tracking number (e.g., `1Z999AA10123456784`)
**Example:**
```json
{
"tracking_number": "1Z999AA10123456784"
}
```
**Response:**
```json
{
"tracking_number": "1Z999AA10123456784",
"status": "In Transit",
"estimated_delivery": "Thursday, March 14, 2026",
"events": [
{
"date": "03/13/2026",
"time": "8:00 A.M.",
"location": "Louisville, KY, US",
"status": "In Transit",
"description": "Package transferred to destination facility"
}
]
}
```
---
### `get_rates`
Get UPS shipping rates between two ZIP codes for a package of specified dimensions and weight.
**Parameters:**
- `from_zip` (required): Origin ZIP code
- `to_zip` (required): Destination ZIP code
- `weight_lbs` (required): Package weight in pounds
- `length_in` (optional): Package length in inches
- `width_in` (optional): Package width in inches
- `height_in` (optional): Package height in inches
**Example:**
```json
{
"from_zip": "90210",
"to_zip": "10001",
"weight_lbs": 5,
"length_in": 12,
"width_in": 8,
"height_in": 6
}
```
**Response:**
```json
{
"from_zip": "90210",
"to_zip": "10001",
"weight_lbs": 5,
"rates": [
{
"service_name": "UPS Ground",
"price": "$12.34",
"delivery_time": "1-5 business days",
"guaranteed": false
},
{
"service_name": "UPS Next Day Air",
"price": "$45.67",
"delivery_time": "Next business day",
"guaranteed": true
}
]
}
```
---
### `find_locations`
Find UPS Store locations, drop boxes, and access points near a given address or ZIP code.
**Parameters:**
- `address` (required): Address, city, or ZIP code to search near
- `radius_miles` (optional): Search radius in miles (default: 5)
- `location_type` (optional): Type of location — `store`, `dropbox`, `access_point`, or `all` (default: `all`)
**Example:**
```json
{
"address": "90210",
"radius_miles": 3,
"location_type": "store"
}
```
**Response:**
```json
{
"search_address": "90210",
"locations": [
{
"name": "The UPS Store",
"address": "123 Main St",
"city": "Beverly Hills",
"state": "CA",
"zip": "90210",
"phone": "(310) 555-1234",
"hours": "Mon-Fri 8am-7pm, Sat 9am-5pm",
"distance": "0.5 miles",
"type": "UPS Location"
}
]
}
```
---
### `schedule_pickup`
Schedule a UPS package pickup at your address. Note: This requires a UPS account login, so the tool will provide step-by-step instructions if authentication is needed.
**Parameters:**
- `address` (required): Pickup street address
- `city` (required): City
- `state` (required): State (2-letter code)
- `zip` (required): ZIP code
- `pickup_date` (required): Desired pickup date in `YYYY-MM-DD` format
- `num_packages` (optional): Number of packages (default: 1)
- `total_weight_lbs` (optional): Total weight in pounds (default: 5)
**Example:**
```json
{
"address": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip": "94105",
"pickup_date": "2026-03-15",
"num_packages": 2,
"total_weight_lbs": 10
}
```
**Response:**
```json
{
"success": false,
"pickup_date": "2026-03-15",
"address": "123 Main St, San Francisco, CA 94105",
"message": "Scheduling a pickup requires a UPS account login",
"instructions": "1. Visit https://www.ups.com/pickup/schedule\n2. Sign in to your UPS account\n..."
}
```
## Notes
- This server uses Playwright browser automation to interact with the UPS website. It does not use the UPS API directly.
- Some features (e.g., scheduling pickups) require a UPS account. The server will provide instructions for completing those steps manually.
- UPS website structure may change over time, which could affect data extraction accuracy.
- The server keeps a shared browser instance to reduce overhead across tool calls.
## License
MIT
TDQS
A3.8/5.0
Scored across 4 tools
Disambiguation5/5
Each tool targets a distinct UPS operation: tracking, rate quotes, location lookup, and pickup scheduling. There is no overlap or ambiguity between their purposes.
Naming Consistency5/5
All tools follow a clear verb_noun pattern: track_package, get_rates, find_locations, schedule_pickup. The naming is consistent and predictable.
Tool Count5/5
Four tools is a well-scoped set for a UPS-focused server, covering the most common customer-facing actions without being bloated or too sparse.
Completeness4/5
The toolset covers core shipping workflows (track, rate, locate, pickup), but lacks shipment creation and pickup cancellation, which are notable but not critical gaps for typical use.
Maintenance
ActivityInactive
ResponsivenessNo issues