mcp-ups
Provides tools for tracking UPS packages, getting shipping rates, finding UPS locations, and scheduling pickups via browser automation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-upstrack package 1Z999AA10123456784"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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)
Related MCP server: open_browser_use
Installation
npm install -g @striderlabs/mcp-upsAfter installing, install the Playwright browser:
npx playwright install chromiumConfiguration 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
{
"mcpServers": {
"ups": {
"command": "mcp-ups"
}
}
}If using npx instead of a global install:
{
"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:
{
"tracking_number": "1Z999AA10123456784"
}Response:
{
"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 codeto_zip(required): Destination ZIP codeweight_lbs(required): Package weight in poundslength_in(optional): Package length in incheswidth_in(optional): Package width in inchesheight_in(optional): Package height in inches
Example:
{
"from_zip": "90210",
"to_zip": "10001",
"weight_lbs": 5,
"length_in": 12,
"width_in": 8,
"height_in": 6
}Response:
{
"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 nearradius_miles(optional): Search radius in miles (default: 5)location_type(optional): Type of location —store,dropbox,access_point, orall(default:all)
Example:
{
"address": "90210",
"radius_miles": 3,
"location_type": "store"
}Response:
{
"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 addresscity(required): Citystate(required): State (2-letter code)zip(required): ZIP codepickup_date(required): Desired pickup date inYYYY-MM-DDformatnum_packages(optional): Number of packages (default: 1)total_weight_lbs(optional): Total weight in pounds (default: 5)
Example:
{
"address": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip": "94105",
"pickup_date": "2026-03-15",
"num_packages": 2,
"total_weight_lbs": 10
}Response:
{
"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
Available Tools
4 toolsfind_locationsA
Find UPS Store locations, drop boxes, and access points near an address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Address, city, or ZIP code to search near | |
| radius_miles | No | Search radius in miles (default: 5) | |
| location_type | No | Type of UPS location to find |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral transparency. It only states 'Find' which implies a read operation, but it does not disclose the return format, potential filtering behavior, pagination, or any other operational characteristics. Lacks sufficient detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource, with no redundant or filler content. Every word contributes to the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the schema covers all parameters, but the description lacks details about the response structure or any limitations (e.g., what the returned locations include, default radius). Given no annotations and no output schema, the description is minimally adequate but could provide more context for an agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema; 'near an address' matches the address parameter but does not elaborate on radius_miles or location_type. The schema already handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'UPS Store locations, drop boxes, and access points' near an address. This is specific and distinguishes from sibling tools like track_package, get_rates, and schedule_pickup, which handle different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when searching for UPS locations near an address. It does not explicitly mention alternatives or exclusions, but the sibling set makes it obvious this is the location lookup tool, so usage is easy to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ratesB
Get UPS shipping rates between two addresses for a package.
| Name | Required | Description | Default |
|---|---|---|---|
| to_zip | Yes | Destination ZIP code | |
| from_zip | Yes | Origin ZIP code | |
| width_in | No | Package width in inches | |
| height_in | No | Package height in inches | |
| length_in | No | Package length in inches | |
| weight_lbs | Yes | Package weight in pounds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it gets rates, without mentioning return format, limitations (e.g., US-only), or that it requires ZIP codes rather than full addresses. The mismatch between 'addresses' and the actual ZIP code parameters further reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose. It is front-loaded and contains no wasteful words, though it is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has six parameters and no output schema or annotations, the description is too sparse. It does not describe the return value structure, any constraints, or clarify the actual input format (ZIP codes vs addresses), leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters have descriptions in the schema (100% coverage), so the description itself does not need to explain them. The description adds no parameter-level information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource (UPS shipping rates) and scope (between two addresses for a package). This makes it distinct from sibling tools like track_package and find_locations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. Usage is only implied by the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_pickupB
Schedule a UPS package pickup at your address.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | Yes | ZIP code | |
| city | Yes | City | |
| state | Yes | State (2-letter code) | |
| address | Yes | Pickup address | |
| pickup_date | Yes | Desired pickup date (YYYY-MM-DD format) | |
| num_packages | No | Number of packages to pick up | |
| total_weight_lbs | No | Total weight of all packages in pounds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It only says 'Schedule a UPS package pickup' without explaining what the user can expect after invocation—confirmation, immediate effect, required account, or potential charges. This is a significant gap for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that states the core purpose without any unnecessary words. It is front-loaded and to the point, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a scheduling tool with no annotations, no output schema, and 7 parameters, the description is minimally viable. It conveys the action but lacks context about the result of scheduling, any side effects, or how the requested pickup will be confirmed. The schema covers parameters, but the description does not add enough behavioral or sequential context for an agent to fully understand the invocation expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 7 parameters, so the schema already documents each field. The tool description adds no parameter-specific meaning beyond what the schema provides, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Schedule') and the resource ('UPS package pickup'), which is distinct from the sibling tools (track_package, get_rates, find_locations). The mention of 'at your address' adds a specific scope that matches the address parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as track_package or get_rates. There are no exclusions, prerequisites, or hints about typical use cases beyond the obvious action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_packageA
Track a UPS package by tracking number. Returns current status, location history, and estimated delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | Yes | UPS tracking number (e.g., 1Z999AA10123456784) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the operation is a read-only tracking action returning status, history, and delivery estimate, but does not mention potential errors, rate limits, or permissions. It is adequate but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys purpose and output without extraneous detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is sufficient: it specifies the input and expected outputs (status, location history, delivery estimate). It could elaborate on return formats or error handling, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, which already documents the format and example. The description adds no new meaning beyond restating 'by tracking number', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Track') and resource ('UPS package') with the scope ('by tracking number'). It clearly differentiates from siblings like get_rates and schedule_pickup, which handle different tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need package status, but does not explicitly state when to use this over alternatives or any exclusions. For a simple, well-differentiated tool, context is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
find_locations - First observed
get_rates - First observed
schedule_pickup - First observed
track_package
TDQS
Each tool targets a distinct UPS operation: tracking, rate quotes, location lookup, and pickup scheduling. There is no overlap or ambiguity between their purposes.
All tools follow a clear verb_noun pattern: track_package, get_rates, find_locations, schedule_pickup. The naming is consistent and predictable.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for EasyPost — rate shipments, buy & refund labels, track packages, verify addresses.
MCP server for ua_postal_tracking_mcp
MCP server to assist with JxBrowser development.
A paid remote MCP for ShipSwift, built to return verdicts, receipts, usage logs, and audit-ready JSO
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for automating browser tasks using the Browser Use API. Provides tools to run, monitor, and manage browser automation tasks.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for browser automation, exposing tools for tab management, navigation, CDP, action plans, and cleanup.260255MIT
- AlicenseAqualityBmaintenanceMCP server providing tools for web scraping, browser automation, computer vision, audio transcription, and RAG via API.91MIT
- AlicenseNot gradedqualityDmaintenanceMCP server connector for Uber ride-sharing, enabling ride requests, fare estimates, and trip tracking via browser automation.161MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/markswendsen-code/mcp-ups'
If you have feedback or need assistance with the MCP directory API, please join our Discord server