# ProShip Thailand Post [Health: Active]

**Category:** 📦 Delivery  
**Repository:** https://github.com/proship1/proship-mcp  
**GitHub Stars:** 0  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/proship-thailand-post-2

## Description
Create Thailand Post shipments, print labels, and track parcels in Thailand via ProShip.

## Tools
Capabilities this server exposes over MCP:

- **track_parcel** — Track any parcel by tracking number (Thailand Post and other Thai carriers). Returns current status with Thai label plus the event history. Works without auth if the server has a tracking token configured; otherwise pass your Bearer token.
- **get_order_statuses** — Reference data: the ProShip order status pipeline. Returns every status code with its Thai label and English meaning. Use these codes with list_orders and update_order_status.
- **signup** — Creates a real ProShip account and shop, ready for Thailand Post EPS (thaipost0) shipping. The response contains your API token, user, and shop_id — SHOWN ONLY ONCE. Save the token into your MCP client's Authorization header. A full thaipost contract additionally requires a Thailand Post account arranged with ProShip support (multi-day human process).
- **list_shops** — List the shops on YOUR ProShip account. Use the shop_id with create_order.
- **create_order** — Create a shipment order. Defaults to Thailand Post EPS (thaipost0). Weight is in GRAMS. Returns the order_id — it contains a pipe suffix (order-xxx|123); always pass the FULL id to other tools. Optional cod_amount enables cash-on-delivery.
- **list_orders** — List orders on YOUR account. Optional numeric status filter (see get_order_statuses). Paginated.
- **get_order** — Get one order by id (full pipe-suffixed id is fine). Returns status with Thai label and tracking number.
- **update_order_status** — Set an order status by numeric code (see get_order_statuses).
- **cancel_order** — Delete/cancel an order by id.
- **check_duplicate** — Check whether a customer phone number already has a recent order (duplicate-shipment guard).
- **print_label** — Generate the shipping label PDF for one or more orders. REQUIRES the FULL pipe-suffixed order ids (order-xxx|123) — stripped ids are rejected upstream. Returns a temporary URL (valid ~10 minutes) where the PDF can be downloaded.

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: high). Install path detected from listing signals. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "proship-thailand-post": {
    "url": "https://mcp.proship.me/mcp"
  }
}
```

## Documentation & README

# proship-mcp

Stateless MCP (Model Context Protocol) server that lets any AI agent create Thailand Post shipments, print labels, and track parcels through [ProShip](https://proship.co.th).

- **Endpoint:** `POST https://mcp.proship.me/mcp` (JSON-RPC 2.0, application/json)
- **Docs:** open `https://mcp.proship.me/mcp` in a browser — the docs page is generated from the live tool registry
- **Auth:** `Authorization: Bearer <ProShip API token>`, passed through verbatim to `api.proship.me`. Nothing is stored server-side. New users can call the public `signup` tool to get a token.

## Tools

Public: `track_parcel`, `get_order_statuses`, `signup`.
Authenticated: `list_shops`, `create_order`, `list_orders`, `get_order`, `update_order_status`, `cancel_order`, `check_duplicate`, `print_label`.

The browser docs page at `/mcp` is the canonical, always-current tool reference.

## Run

```bash
npm install
npm start          # listens on PORT (default 3000)
npm test           # node:test suite, upstream fully mocked
```

## Environment

| Var | Purpose | Default |
|---|---|---|
| `PORT` | listen port | `3000` |
| `PUBLIC_URL` | absolute base used in label URLs and docs | `https://mcp.proship.me` |
| `PROSHIP_API_BASE` | upstream API base | `https://api.proship.me` |
| `PROSHIP_UTRACK_TOKEN` | optional server-side token enabling unauthenticated `track_parcel` | unset |
| `PROSHIP_SYNTH_EMAIL_DOMAIN` | domain for synthesized signup emails | `proship.me` |

## Deploy

Fly.io app `proship-mcp` (region `sin`):

```bash
fly deploy            # add --depot=false if the Depot builder fails
```

## Notes

- Order ids are pipe-suffixed (`order-xxx|123`). GET/PUT/DELETE strip the suffix internally; `print_label` requires the full id. Always pass the full id between tools.
- Weights are grams. Status codes use the Thai pipeline (`get_order_statuses`); code 6 means *out for delivery* despite upstream labeling it "ERROR".
- The only server state is a 10-minute in-memory cache for label PDFs so `print_label` can return a URL.

