colleag-mcp-ups
An MCP server for UPS shipping, running against your own UPS account: rate shopping with negotiated prices, live tracking (with an interactive MCP Apps card), and landed-cost estimates for international shipments.
Built by Colleag.ai, a CargoBeacon AB company. Works with any MCP host — Colleag.ai, Claude Desktop, VS Code, or your own client.
Read-only by design (v0.1). This release quotes, tracks and estimates — it never books shipments or spends money. Side-effecting tools (booking, pickup scheduling) will follow once host-side human-in-the-loop confirmation conventions are settled; a host, not a connector, should own the "are you sure?" step for actions that cost money.
Tools
| Tool | What it does |
|---|---|
get_rates |
Compare every available UPS service on a lane (or price one service_code) with negotiated account prices and estimated delivery dates |
track_shipment |
Current status, delivery estimate and scan history for a tracking number. Ships an MCP Apps tracking card for hosts that support the io.modelcontextprotocol/ui extension |
landed_cost |
Duties, VAT and brokerage estimate for an international shipment (per-commodity lines, incoterm-aware) |
Setup
- Create an app on developer.ups.com ("I want to integrate UPS technology into my business") and enable the Rating, Tracking and Landed Cost products. This gives you a Client ID and Secret tied to your UPS account.
- Configure environment variables:
UPS_CLIENT_ID=... # required
UPS_CLIENT_SECRET=... # required, secret
UPS_ACCOUNT_NUMBER=... # required — your 6-character shipper number
UPS_ENVIRONMENT=test # 'test' (CIE sandbox, default) or 'production'
SHIP_FROM_NAME="Acme AB" # optional defaults for the quoting origin
SHIP_FROM_ADDRESS="Industrigatan 1"
SHIP_FROM_CITY=Stockholm
SHIP_FROM_POSTAL_CODE="112 46"
SHIP_FROM_COUNTRY=SE
SHIP_FROM_PHONE="+468..."
- Run:
uv run colleag-mcp-ups # stdio (default)
MCP_TRANSPORT=streamable-http uv run colleag-mcp-ups # HTTP
Claude Desktop
{
"mcpServers": {
"ups": {
"command": "uvx",
"args": ["colleag-mcp-ups"],
"env": {
"UPS_CLIENT_ID": "...",
"UPS_CLIENT_SECRET": "...",
"UPS_ACCOUNT_NUMBER": "...",
"UPS_ENVIRONMENT": "test"
}
}
}
}
Try it without credentials
npx @modelcontextprotocol/inspector uv run colleag-mcp-ups lists the tools
and the ui://colleag-mcp-ups/tracking-card resource; calls will return a
structured configuration error until UPS credentials are set.
Notes
- Access tokens are cached per
expires_in(UPS cut lifetimes to 1 h in April 2026 — never hardcode refresh intervals). - Rate limits are not published by UPS; the server surfaces HTTP 429 as a
structured
UPS_RATE_LIMITEDerror for the host to back off on. - Tracking retention: UPS purges tracking data after ~120 days; keep your own shipment history if you need longer memory.
- The MCP Apps tracking card is rendered by the host in a sandboxed iframe; hosts without the UI extension simply use the JSON tool result.
License
MIT — see LICENSE.
Release files for colleag-mcp-ups 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| colleag_mcp_ups-0.1.0.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| colleag_mcp_ups-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.7 kB
Release files / colleag_mcp_ups-0.1.0.tar.gz
| Download URL | colleag_mcp_ups-0.1.0.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b0ecffcb35b79c8331c3ccad99b94c243bd32ea2d97f17c4592274b4a97d4f7
|
|
BLAKE2b-256 checksum How to use checksums |
61a283fd00861ac64589e90bda90aa1075394cdf69dafa6d5f2d7fa1fec48abc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.
Transparency logRelease files / colleag_mcp_ups-0.1.0-py3-none-any.whl
| Download URL | colleag_mcp_ups-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5d71829bdf8da82880d23f548c08813ed8ab3e4f99b8bc95354b3cd0c4b7ed6
|
|
BLAKE2b-256 checksum How to use checksums |
dc37f4c8b625de773e886ae925082239bb639d2a831c7eaf4f5ab7b567b8dd0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.
Transparency log