Japan Logistics MCP
README.md
# Japan Logistics MCP 🇯🇵 — How can my AI agent ship a parcel in Japan (Yamato / Sagawa / Japan Post via Ship&co)?
<!-- install-cta -->
## Use it in 60 seconds
Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):
```json
{
"mcpServers": {
"japan-logistics": {
"type": "http",
"url": "https://logi-jp.wishpool.app/mcp"
}
}
}
```
Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored — see the [threat model](https://mcp.wishpool.app/trust).
### Or run it yourself
Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:
[](https://vercel.com/new/clone?repository-url=https://github.com/junter1989k-ai/japan-logistics-mcp)
```bash
git clone https://github.com/junter1989k-ai/japan-logistics-mcp && cd japan-logistics-mcp && npx vercel --prod
```
MIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.
---
Remote MCP server that lets any AI agent ship parcels **in Japan** — over **Yamato (ヤマト運輸)**, **Sagawa (佐川急便)**, **Japan Post (日本郵便)** and **Seino (西濃運輸)**, plus international DHL / UPS / FedEx — through the [Ship&co](https://www.shipandco.com/) shipping API. Estimate carrier rates, **create a shipment and its label in one call**, track parcels and void labels. Stateless, bring-your-own Ship&co API token, never stores anything.
**Live endpoint:** `https://logi-jp.wishpool.app/mcp` · Registry: `app.wishpool/japan-logistics-mcp`
## Quick start
```json
{
"mcpServers": {
"japan-logistics": {
"type": "http",
"url": "https://logi-jp.wishpool.app/mcp",
"headers": {
"x-shipandco-token": "your_shipandco_api_token"
}
}
}
}
```
**No shared demo — use your own Ship&co account.** Get an **API token** self-serve in the Ship&co Dashboard (*API menu → Create New Token*) and send it in the header above. The server is stateless: on every call it forwards the token to `api.shipandco.com` as the `x-access-token` header and stores nothing.
## No carrier contract needed for test mode
`create_shipment` defaults to `test:true`, which prints a **free, non-billable virtual label** end-to-end. **Yamato and Sagawa need no extra carrier account for test mode** — an agent can validate the whole flow with no carrier contract. Set `test:false` to buy a real billable label.
## Tools
| Tool | What it does |
|---|---|
| `get_rates` | Estimate rates before creating a label (read-only, spends nothing). `from_address`, `to_address`, `weight` (grams) and `products` → available carrier services with `amount` (JPY), cheapest flagged. `/rates` quotes carriers registered in your Ship&co account. |
| `create_shipment` | Create a shipment **and** issue the label in one call. `carrier` (`yamato`/`sagawa`/`japanpost`/`seino`/`dhl`/`ups`/`fedex`) + `from_address` + `to_address` + `weight` + `products`. Returns `shipment_id`, `carrier`, `tracking_number(s)`, `label_url` (PDF). `test` defaults **true** (free); `test:false` buys a real label. |
| `query_tracking` | Track by `carrier` + `tracking_number`. Status enum (Ship&co): `collected` / `transit` / `out_for_delivery` / `delivered` / `exception` / `returned`, each with a plain-English hint; non-terminal statuses carry `next_steps`. Raw current status + history always included. |
| `void_label` | Void/cancel a shipment + label by `shipment_id`. TEST labels always; real labels only before pickup. |
Owner policy guardrails ride optional headers (`x-agentpay-max-amount`, `x-agentpay-approval-above`, `x-agentpay-allowed-tools`) — set by the human owner in client config; the agent cannot relax them. The **declared goods value (JPY) is gated before the label is created**: `approval-above` returns an unsigned draft with no label created.
## Units & addresses
Weight in **grams (g)**, parcel dimensions in **centimetres (cm)**, money in **JPY**. Japanese addresses use a 7-digit postal code (**郵便番号**), prefecture (**都道府県**) and city/ward (**市区町村**).
## Develop
```bash
node test/serve.js # local server on :3252 (/mcp)
node test/e2e.js # protocol + schema + validation + policy/shipandco units + CORS + fake-token live probe to api.shipandco.com (expects native Ship&co 403 auth error)
```
## How it talks to Ship&co
Base URL `https://api.shipandco.com/v1`, auth header `x-access-token`. `create_shipment` is `POST /shipments` (creates the shipment **and** the label in one call → `delivery.label` PDF + `delivery.tracking_numbers`). `get_rates` is `POST /rates`. `query_tracking` is `GET /tracking/{carrier}/{tracking_number}`. `void_label` is `DELETE /shipments/{id}`. Test labels are requested with `setup.test:true`.
## Safety
Pure stateless translation layer. Shipments, labels and tracking are held by Ship&co and the carriers; the API token travels per-request in a header, is forwarded as the `x-access-token` header, and nothing is stored. Parcels flow sender ↔ carrier ↔ recipient directly. [Privacy policy](https://logi-jp.wishpool.app/privacy).
## Sister servers
USA labels (USPS/UPS/FedEx) via EasyPost in [usa-logistics-mcp](https://logi-us.wishpool.app); Indonesia (JNE/J&T/SiCepat) via Biteship in [indonesia-logistics-mcp](https://logi-id.wishpool.app); Taiwan CVS pickup + home delivery in [taiwan-logistics-mcp](https://logi-tw.wishpool.app). One family of stateless BYO local-commerce MCP servers: local payments in 81 countries at [mcp.wishpool.app](https://mcp.wishpool.app) and electronic invoicing at [inv.wishpool.app](https://inv.wishpool.app).
MIT licensed.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing