Skip to main content
Glama

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-ups

After installing, install the Playwright browser:

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

{
  "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 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:

{
  "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 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:

{
  "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 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:

{
  "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 tools
find_locationsA

Find UPS Store locations, drop boxes, and access points near an address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesAddress, city, or ZIP code to search near
radius_milesNoSearch radius in miles (default: 5)
location_typeNoType of UPS location to find

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_zipYesDestination ZIP code
from_zipYesOrigin ZIP code
width_inNoPackage width in inches
height_inNoPackage height in inches
length_inNoPackage length in inches
weight_lbsYesPackage weight in pounds

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipYesZIP code
cityYesCity
stateYesState (2-letter code)
addressYesPickup address
pickup_dateYesDesired pickup date (YYYY-MM-DD format)
num_packagesNoNumber of packages to pick up
total_weight_lbsNoTotal weight of all packages in pounds

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracking_numberYesUPS tracking number (e.g., 1Z999AA10123456784)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv1.0.0
    • First observedfind_locations
    • First observedget_rates
    • First observedschedule_pickup
    • First observedtrack_package

TDQS

A3.8/5.0
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

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

Related MCP Servers

Latest Blog Posts

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