Content
# @striderlabs/mcp-fedex
MCP server for FedEx — track packages, get shipping rates, find drop-off locations, and schedule pickups via Playwright browser automation.
## Features
- **track_package** — Track any FedEx shipment by tracking number with full event history
- **get_rates** — Get shipping rate estimates between two zip codes with transit times
- **find_locations** — Find nearby FedEx Office stores, drop-off points, and authorized shipping centers
- **schedule_pickup** — Schedule a FedEx package pickup at a residential or business address
## Requirements
- Node.js 18+
- Playwright Chromium browser
## Installation
```bash
npm install @striderlabs/mcp-fedex
npx playwright install chromium
```
## MCP Configuration
### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"fedex": {
"command": "node",
"args": ["/path/to/node_modules/@striderlabs/mcp-fedex/dist/index.js"]
}
}
}
```
### Using npx
```json
{
"mcpServers": {
"fedex": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-fedex"]
}
}
}
```
## Tools
### `track_package`
Track a FedEx shipment status and delivery events.
**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tracking_number` | string | Yes | FedEx tracking number (12-22 digits) |
**Example:**
```json
{
"tracking_number": "449044304137821"
}
```
**Returns:** Current status, estimated delivery date, last known location, service type, and full scan event history.
---
### `get_rates`
Get FedEx shipping rate estimates between two zip codes.
**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `from_zip` | string | Yes | Origin zip code |
| `to_zip` | string | Yes | Destination zip code |
| `weight_lbs` | number | No | Package weight in pounds (default: 1) |
| `package_type` | string | No | `YOUR_PACKAGING`, `FEDEX_ENVELOPE`, `FEDEX_BOX`, `FEDEX_TUBE` |
| `length_in` | number | No | Length in inches |
| `width_in` | number | No | Width in inches |
| `height_in` | number | No | Height in inches |
**Example:**
```json
{
"from_zip": "90210",
"to_zip": "10001",
"weight_lbs": 2.5,
"package_type": "YOUR_PACKAGING"
}
```
**Returns:** List of available FedEx services with prices, transit days, and estimated delivery dates.
---
### `find_locations`
Find FedEx locations near an address or zip code.
**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `address` | string | Yes | Address, city, or zip code to search near |
| `max_results` | number | No | Max locations to return (default: 5) |
| `services` | string | No | `dropoff`, `office`, or `all` (default: `all`) |
**Example:**
```json
{
"address": "Austin TX",
"max_results": 3,
"services": "office"
}
```
**Returns:** List of nearby FedEx locations with addresses, hours, phone numbers, distances, and available services.
---
### `schedule_pickup`
Schedule a FedEx package pickup at an address.
> **Note:** Always confirm pickup details with the user before calling this tool, as it initiates a real pickup request. FedEx may require account login for pickup scheduling.
**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `address` | string | Yes | Street address |
| `city` | string | Yes | City |
| `state` | string | Yes | State abbreviation |
| `zip` | string | Yes | Zip code |
| `contact_name` | string | Yes | Contact person's name |
| `phone` | string | Yes | Contact phone number |
| `pickup_date` | string | Yes | Date in YYYY-MM-DD format |
| `ready_time` | string | No | When packages are ready, 24h HH:MM (default: "14:00") |
| `latest_time` | string | No | Latest driver arrival, 24h HH:MM (default: "18:00") |
| `package_count` | number | No | Number of packages (default: 1) |
| `total_weight_lbs` | number | No | Total weight in pounds |
| `location_type` | string | No | `residential` or `business` (default: `residential`) |
**Example:**
```json
{
"address": "123 Main St",
"city": "Memphis",
"state": "TN",
"zip": "38103",
"contact_name": "Jane Smith",
"phone": "901-555-1234",
"pickup_date": "2025-02-15",
"ready_time": "13:00",
"latest_time": "17:00",
"package_count": 2,
"total_weight_lbs": 5.0,
"location_type": "residential"
}
```
**Returns:** Confirmation number, pickup date/window, or instructions to complete scheduling via FedEx account login if required.
---
## Notes
- **Browser automation:** This package uses Playwright with stealth mode to interact with the FedEx website. Results depend on FedEx's current website structure.
- **Bot detection:** FedEx uses Akamai Bot Manager. The stealth plugin mitigates most detection, but occasional challenges may occur.
- **Pickup scheduling:** FedEx may require account login for pickup scheduling. If login is required, the tool will return the direct URL.
- **Rate estimates:** Rates shown are estimates. Final rates may vary based on package dimensions, declared value, and account pricing.
- **Not affiliated:** This package is not affiliated with or endorsed by FedEx Corporation.
## Development
```bash
git clone https://github.com/markswendsen-code/mcp-fedex
cd mcp-fedex
npm install
npx playwright install chromium
npm run build
```
## License
MIT