Disclosure: I work on 24hTrack, the tracking service behind the MCP server in this post.
If you run a store, a dropshipping business or a support desk, a surprising share of your day is spent answering one question: where is this parcel? The answer is spread across hundreds of carrier websites, each with its own tracking number format and its own wording for the same events.
The Model Context Protocol (MCP) lets an AI assistant call tools directly. So instead of opening five carrier sites, you can ask Claude or Cursor "where are these three packages?" and get the answer in the chat.
What the server does
24htrack-mcp is an MCP server (on npm and in the official MCP registry) that connects an assistant to 24hTrack, which covers 3,200+ carriers and detects the carrier from the tracking number. It exposes six tools:
| Tool | What it does |
|---|---|
track_package |
Status and full event history for up to 40 packages |
register_tracking |
Start monitoring new tracking numbers |
list_tracking |
List your tracked numbers with their status |
realtime_track |
Force a fresh check (results in a few minutes) |
delete_tracking |
Archive tracking numbers |
get_carriers |
List supported carriers |
Setup
Create a free account at 24htrack.com, open Developer Settings and create an API key.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"24htrack": {
"command": "npx",
"args": ["-y", "24htrack-mcp"],
"env": { "TRACK24H_API_KEY": "your-api-key-here" }
}
}
}
Claude Code:
claude mcp add 24htrack -- npx -y 24htrack-mcp
export TRACK24H_API_KEY=your-api-key-here
Cursor / Windsurf: add the same command, args and env block to your MCP settings.
What you can ask
- "Track 1Z999AA10123456784"
- "Register these numbers and tell me which ones have not moved in a week"
- "Which of my parcels are out for delivery today?"
- "What does 'Held at customs' mean for this parcel, and what should the customer do?"
You do not need to say which carrier a number belongs to. UPS numbers start with 1Z, many USPS numbers are 22 digits starting with 9, and international postal numbers follow the UPU S10 format (RR123456789CN), but plenty of regional carriers share plain numeric shapes, so the service checks the carriers that could own a number instead of guessing.
Why the answers are consistent
Every carrier's wording is mapped to the same small set of statuses (Info Received, In Transit, Out for Delivery, Delivered, Exception, Returned), and the carrier's original text is kept in the event history. That makes it easy for an assistant to filter ("show me every Exception") while still quoting the exact scan when a customer asks.
Without an AI assistant
The same data is available through a REST API with webhooks, a two-way Google Sheets sync (free) and a web dashboard. Tracking on the website is free and needs no account.
- API docs: https://www.24htrack.com/api
- npm: https://www.npmjs.com/package/24htrack-mcp
- Open tracking guides and carrier transit-time data: https://github.com/doanhnd9989/package-tracking-guide
Questions or carriers you want covered? Leave a comment.
Top comments (0)