MCP

MCP-Kolumne

AI-Agenten sicher anbinden: User-MCP für Betrieb, Developer-MCP für Integrationen — mit Profilen, Confirm, Dry-Run und Freigaben.

MCP track_package(tracking_number) Tool
RPC tools/list JSON-RPC 2.0
RPC tools/call JSON-RPC 2.0
Documentation

MCP-Kolumne Überblick

Dieser Leitfaden ist die Superroute-MCP-Kolumne im Developer Center: beide Server, Agentensicherheit und der Live-Tool-Katalog.

Was ist MCP?

Das Model Context Protocol (MCP) ist ein offener Standard, der KI-Assistenten wie Claude, Cursor und ChatGPT ermöglicht, mit externen Tools und Diensten zu interagieren. Es ermöglicht Ihrer KI, echte Aktionen durchzuführen — wie z.B. ein Paket zu verfolgen — direkt im Gespräch.

Durch die Konfiguration des Superroute MCP-Servers erhält Ihr KI-Assistent Zugang zu Logistik-Tools, ohne Ihren Workflow zu verlassen.

Zwei MCP-Server

Wählen Sie den passenden Server. Geben Sie unbeaufsichtigten Agenten nicht den Developer-Server mit Vollzugriff.

Servername Endpunkt Zielgruppe Auth
superroute https://api.miliexpress.com/mcp Ops-/Support-/Business-Agenten Bearer + optionales Profil/Scopes (sonst Vollzugriff)
superroute-developer https://api.miliexpress.com/mcp/developer Integrationsentwickler & Coding-Agenten Connection-Bearer bevorzugt; Tool-api_token wird abgeschaltet

Schnellstart

Öffentliche Tools wie Paketverfolgung funktionieren ohne Authentifizierung. Fügen Sie diese Konfiguration zu Ihrem MCP-Client hinzu:

JSON
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}
Probieren Sie es aus! Fragen Sie nach der Einrichtung Ihren KI-Assistenten: „Paket SR100012345 verfolgen"

Authentifizierter Zugang

Um Tools zu verwenden, die Benutzerberechtigungen erfordern, fügen Sie Ihr API-Bearer-Token zur Konfiguration hinzu:

Token immer in MCP-Connection-Headern setzen — nie in Tool-Argumenten oder Prompts.

JSON
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>",
        "X-MCP-Profile": "ops-readonly"
      }
    }
  }
}

So erhalten Sie ein API-Token

Rufen Sie den Login-Endpunkt mit Ihren Anmeldedaten auf:

Bash
curl -X POST https://api.miliexpress.com/api/v1/user/login \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "your-password"}'

Die Antwort enthält Ihr Zugriffstoken:

JSON Response
{
  "access_token": "eyJ0eXAiOiJKV1Qi...",
  "token_type": "Bearer",
  "expires_at": "2026-02-20 00:00:00"
}

Verwenden Sie den access_token-Wert im Authorization-Header Ihrer MCP-Konfiguration.

Agenten-Sicherheitsmodell

User-MCP ist für Least-Privilege-Agenten gebaut. Token mit MCP-Profil (Standard: Ops nur lesen) oder Header setzen.

Profile (X-MCP-Profile)

Benannte Scope-Bündel. Für unbeaufsichtigte Agenten ops-readonly oder support.

Profil Bezeichnung Scopes
ops-readonly Ops nur lesen orders:read, labels:read, routes:read, drivers:read, analytics:read, address:read, approvals:read
support Support (Kundenservice) orders:read, analytics:read, address:read, approvals:read
ops-write Ops schreiben (Aufträge + Labels + Routen) orders:read, orders:write, labels:read, labels:write, routes:read, routes:write, drivers:read, analytics:read, address:read, approvals:read, approvals:write
wms-readonly WMS nur lesen wms:read, orders:read
datasets-readonly Datensätze nur lesen datasets:read
alliance-readonly Alliance nur lesen alliance:read
full Vollzugriff (alle MCP-Tools) — nicht für unbeaufsichtigte Agenten *
.mcp.json — empfohlene Agentenkonfiguration
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp",
      "headers": {
        "Authorization": "Bearer <ops-readonly-token>",
        "X-MCP-Profile": "ops-readonly"
      }
    }
  }
}

Optionale Header

Header Zweck
Authorization: Bearer …API-Bearer-Token (Connection-Ebene).
X-MCP-ProfileBenanntes Profil: ops-readonly, support, ops-write, wms-readonly, datasets-readonly, alliance-readonly, full.
X-MCP-ScopesExplizite kommagetrennte Scopes (überschreibt Profil).
X-MCP-Dry-Run: 1Schreibtools ohne Mutation vorschauen.
X-MCP-Require-Approval: 1Riskante Schreibvorgänge zur Freigabe einreihen statt ausführen.

Hochrisiko-Confirm

Diese Tools erfordern confirm=true bei tools/call (oder Freigabewarteschlange):

Menschliche Freigabewarteschlange

Unbeaufsichtigte Agenten sollen Schreibvorgänge vorschlagen; Menschen freigeben.

  1. Agent: propose_write oder X-MCP-Require-Approval: 1
  2. Mensch: MCP-Freigaben in der App oder list_pending_approvals
  3. Mensch: approve_pending_write mit confirm=true oder reject_pending_write

Web-UI-Pfad (Login erforderlich): /mcp-approvals

Developer-MCP-Authentifizierung

Bevorzugen Sie Authorization: Bearer auf der Verbindung. Per-Tool-api_token ist veraltet und endet nach 2026-12-31.

Verfügbare Tools

Die folgenden Tools sind derzeit auf dem MCP-Server verfügbar: 93 Live-Tools aus dem Serverkatalog

Diese Tabelle wird zur Laufzeit aus UserMcpToolCatalog erzeugt und bleibt mit tools/list synchron.

Werkzeug Authentifizierung Risiko Scopes Beschreibung
track_package Öffentlich low — Track a package by its tracking number. Returns delivery status, tracking events timeline, and proof of delivery if available.
otep_tracking Öffentlich low — Get the unified OTEP (Open Tracking Event Protocol) timeline for a tracking number — self-delivery, third-party and carrier events normalize...
get_capabilities Öffentlich low — List MCP tools available to the current connection, with risk level, required scopes, and whether confirm=true is needed. Call this first wh...
get_orders Erforderlich low orders:read List orders with filtering and pagination. Returns order details including status, tracking, and delivery info.
get_order_detail Erforderlich low orders:read Get full details of a specific order by ID, including address, status, packages, and tracking info.
find_order Erforderlich low orders:read Fuzzy-find orders across tracking number, external tracking, ref, recipient name, and phone in a single query. Use this instead of get_order...
get_operation_events Erforderlich low orders:read Get the full audit trail for orders — every status change, who performed it, GPS coordinates, and photos.
create_order Erforderlich medium orders:write Create a delivery/pickup order. D=delivery (warehouse→customer), P=pickup (customer→warehouse), P2P=peer-to-peer. Returns order ID and track...
cancel_order confirm Erforderlich high orders:write Cancel an existing order by order ID. Only works for orders not yet delivered.
bulk_create_orders confirm Erforderlich high orders:write Create up to 100 delivery orders in one call. Returns a per-order success/failure summary; partial failures do not abort the batch unless st...
reroute_to_address confirm Erforderlich high orders:write Change the delivery address of an order that has not been picked up yet: cancels the original order and recreates it with the new address. R...
update_delivery_instruction Erforderlich medium orders:write Update only the delivery_instruction field on an existing order (PATCH). Safer than full order rewrite.
update_order_note Erforderlich medium orders:write Update only the internal note field on an existing order (PATCH).
update_time_window_by_refs Erforderlich medium orders:write Bulk-update delivery time windows (and optional schedule_date) for orders identified by external refs.
hold_order confirm Erforderlich high orders:write Put an order on HOLD so it is not dispatched until release_order. HIGH-RISK: requires confirm=true.
release_order confirm Erforderlich high orders:write Release an order from HOLD back to NEW_ORDER. HIGH-RISK: requires confirm=true.
propose_write Erforderlich low approvals:read Queue a write/high-risk tool for human approval instead of executing it. Reviewers use list_pending_approvals + approve_pending_write.
list_pending_approvals Erforderlich low approvals:read List pending MCP write approvals for this business (or mine_only).
approve_pending_write confirm Erforderlich high approvals:write Approve and execute a pending write proposal. HIGH-RISK: requires confirm=true. Reviewer must have scopes for the underlying tool.
reject_pending_write Erforderlich medium approvals:write Reject a pending write proposal without executing it.
get_routes Erforderlich low routes:read List delivery routes with their status, assigned driver, and order count.
get_route_detail Erforderlich low routes:read Get one route with its stop/order list. Prefer this over get_routes when you already know route_id.
get_drivers Erforderlich low drivers:read List drivers for the authenticated business (ids, names, capacity defaults). Use driver id with get_driver_routes_today or route tools.
get_driver_routes_today Erforderlich low routes:read, drivers:read Orders assigned to a driver on a given date (defaults to today). Useful for "what is driver X running today?"
get_build_route_options Erforderlich low routes:read List routing engines, balance modes, capacity types, and defaults before calling build_route.
build_route confirm Erforderlich high routes:write Build/optimize a delivery route (POST /api/v3/client/build-route). HIGH-RISK: assigns orders to drivers. Call get_build_route_options first....
order_snapshot Erforderlich low orders:read One-call order context for support: order detail + operation events + public tracking (when tracking number is known). Pass order_id or trac...
list_exceptions Erforderlich low orders:read List failed/returned/exception-like orders for a schedule date (default today). Read-only ops triage helper.
get_shipping_methods Erforderlich low labels:read List available shipping carriers/methods. Returns IDs and names — use the ID for rate/label tools.
get_shipping_rate Erforderlich low labels:read Get a shipping cost quote. Dry-run — no label created. Returns rate options with pricing and transit time.
create_shipping_label Erforderlich medium labels:write Book a shipment with a carrier and generate a shipping label with tracking numbers.
quote_and_ship Erforderlich medium labels:write One-shot: rate across all enabled carriers, pick the best one by strategy, create the shipping label, return tracking number. Saves 3+ tool...
compare_all_carriers Erforderlich low labels:read Get rate quotes from every enabled carrier for the same shipment, in one call. Returns a sorted comparison (cheapest first) with price + tra...
search_address Erforderlich low address:read Search and resolve addresses by postal code or free-text query. Returns structured address suggestions.
daily_digest Erforderlich low analytics:read One-call summary of today's logistics activity: total orders, by status, exceptions (failed/returned), pending pickups. Designed as the firs...
get_orders_summary Erforderlich low analytics:read Aggregate order metrics over a time window: counts by status, top carriers, on-time rate, exception count. Use period=today|week|month or pa...
get_account_credits Erforderlich low analytics:read Get the authenticated customer's wallet balance, currency, and recent topup history. Customer (B2C) accounts only — returns an error for cli...
get_warehouses Erforderlich low wms:read List WMS warehouses available to the authenticated business.
get_inventory Erforderlich low wms:read Query WMS inventory (POST /api/v1/wms/inventory). Pass filters supported by the inventory API (sku, warehouse_id, etc.).
list_datasets Erforderlich low datasets:read List custom datasets available to the business.
get_dataset Erforderlich low datasets:read Get one dataset by id (metadata/columns).
list_dataset_groups Erforderlich low datasets:read List groups inside a dataset.
search_dataset_records Erforderlich low datasets:read Search records across groups in a dataset (POST .../search).
list_alliances Erforderlich low alliance:read List alliances the authenticated business belongs to.
get_alliance Erforderlich low alliance:read Get one alliance by id.
list_alliance_members Erforderlich low alliance:read List members of an alliance.
list_accessible_clients Erforderlich low alliance:read List clients accessible via alliance partnerships.
quote_delivery Erforderlich low orders:read Get the local delivery price for a shipment before creating the order (POST /api/v1/orders/rate). No order is created.
print_local_label Erforderlich low orders:read Get the printable label of a local delivery order as a base64 PDF, with its label code and tracking numbers (POST /api/v2/shipping/getShippi...
bulk_create_orders_async confirm Erforderlich high orders:write Queue a large batch of delivery orders for creation (POST /api/v1/client/batchOrderCreateAsync). Returns an asyncId at once; read the per-or...
get_async_batch_result Erforderlich low orders:read Read the status and per-order results of a batch queued with bulk_create_orders_async (GET /api/v1/client/async/{id}).
get_shipping_detail confirm Erforderlich high labels:write Get the carrier shipping detail of a label order: tracking numbers, price and the label (POST /api/v1/labelservice/getShippingDetail). The f...
download_shipping_label confirm Erforderlich high labels:write Download the label PDF of an order as base64 (POST /api/v1/shipping/getShippingLabel with base64). For a carrier label order whose label was...
cancel_shipping_label confirm Erforderlich high labels:write Cancel (void) a carrier label with the carrier (POST /api/v1/labelservice/cancelShippingLabel). Pass the order id, or one package tracking n...
submit_shipping_information confirm Erforderlich high labels:write Submit the shipping information of one or more label orders to their carriers (POST /api/v1/labelservice/submitShippingInformation).
end_of_day confirm Erforderlich high labels:write Close the day with the carriers: submit the shipping information of every open label order (POST /api/v1/labelservice/endofday).
uniorder_rate Erforderlich low uniorder:read Quote one shipment across self delivery and, with quote_labels=true, every label carrier service of the account (POST /api/v1/uniorder/rate)...
uniorder_create Erforderlich medium uniorder:write Create an order at a rate_id from uniorder_rate (POST /api/v1/uniorder). The rate decides the service: a self delivery order, or a label ord...
uniorder_get Erforderlich low uniorder:read Read one uniorder order in the uniorder shape (GET /api/v1/uniorder/{orderId}).
uniorder_label Erforderlich low uniorder:read Get the label PDF of a uniorder order, base64 (GET /api/v1/uniorder/{orderId}/label).
uniorder_tracking Erforderlich low uniorder:read Get the tracking timeline of a uniorder order (GET /api/v1/uniorder/{orderId}/tracking).
uniorder_cancel confirm Erforderlich high uniorder:write Cancel a uniorder order, self delivery or label (POST /api/v1/uniorder/{orderId}/cancel). A label order voids its carrier label.
uniorder_purchase_label confirm Erforderlich high uniorder:write Buy the carrier label of a uniorder label order that was kept without one (LABEL_PURCHASE_FAILED), at the service chosen at create or at a n...
uniorder_rate_batch Erforderlich low uniorder:read Quote up to 20 shipments in one call (POST /api/v1/uniorder/rate/batch). Each shipment takes the uniorder_rate shape plus an optional refere...
uniorder_create_batch confirm Erforderlich high uniorder:write Create up to 20 orders in one call, each at its own rate_id (POST /api/v1/uniorder/batch). Returns a result per order.
uniorder_rate_batch_async Erforderlich low uniorder:read Queue up to 500 shipments to quote (POST /api/v1/uniorder/rate/batch-async). Returns a job id; read the quotes with uniorder_job.
uniorder_create_batch_async confirm Erforderlich high uniorder:write Queue up to 500 orders to create, each at its own rate_id (POST /api/v1/uniorder/batch-async). Returns a job id; read the results with unior...
uniorder_job Erforderlich low uniorder:read Read a queued uniorder batch and, once done, its results (GET /api/v1/uniorder/jobs/{jobId}).
list_shipping_services Erforderlich low customer_shipping:read List the shipping services the customer may order (GET /api/v1/customer/shipping-orders/services). Step 1 of a shipping order. Needs a custo...
get_shipping_service_config Erforderlich low customer_shipping:read Get one shipping service's order form: warehouses, surcharges, packaging, supplies, units and form fields (GET /api/v1/customer/shipping-ord...
estimate_shipping_order Erforderlich low customer_shipping:read Estimate the price of a shipping order on a service (POST /api/v1/customer/shipping-orders/services/{serviceCode}/estimate-price). No order...
create_shipping_order Erforderlich medium customer_shipping:write Create a shipping order on a service (POST /api/v1/customer/shipping-orders/services/{serviceCode}/orders). Note the package list field is `...
pay_shipping_order confirm Erforderlich high customer_shipping:write Pay the full remaining balance of a shipping order from the customer wallet (POST /api/v1/customer/shipping-orders/{id}/pay). A fully paid p...
get_shipping_order Erforderlich low customer_shipping:read Get one shipping order of the customer (GET /api/v1/customer/shipping-orders/{id}). Needs a customer account token.
list_shipping_orders Erforderlich low customer_shipping:read List the customer's shipping orders on one service, paginated (GET /api/v1/customer/shipping-orders/services/{serviceCode}/orders). Needs a...
cancel_shipping_order confirm Erforderlich high customer_shipping:write Cancel a pending or confirmed shipping order of the customer (POST /api/v1/customer/shipping-orders/{id}/cancel). Needs a customer account t...
get_storage_order_config Erforderlich low storage:read Get what a storage order form needs: warehouses, packaging, supplies, pickup timeframes, units, surcharges and form fields (GET /api/v1/cust...
quote_storage_order Erforderlich low storage:read Calculate the price of a storage order before creating it (POST /api/v1/customer/storage-orders/calculate-price). Storage order form fields...
create_storage_order Erforderlich medium storage:write Create a storage order (POST /api/v1/customer/storage-orders). Storage order form fields as returned by get_storage_order_config: warehouse_...
pay_storage_order confirm Erforderlich high storage:write Pay a storage order from the customer wallet (POST /api/v1/customer/storage-orders/{id}/pay). Needs a customer account token.
get_storage_order Erforderlich low storage:read Get one storage order of the customer, with can_edit, can_cancel and each package's received flag (GET /api/v1/customer/storage-orders/{id})...
list_storage_orders Erforderlich low storage:read List the customer's storage orders, paginated (GET /api/v1/customer/storage-orders). Needs a customer account token.
cancel_storage_order confirm Erforderlich high storage:write Cancel a storage order of the customer while its status allows it (POST /api/v1/customer/storage-orders/{id}/cancel). Needs a customer accou...
list_stored_packages Erforderlich low storage:read List the customer's stored packages that can be shipped out: received, not stocked out and not held by another ship-out, grouped by storage...
list_shipout_services Erforderlich low storage:read List the shipping services that ship out from a warehouse (GET /api/v1/customer/shipout-orders/services). pricing_method 1 = priced at once,...
estimate_shipout Erforderlich low storage:read Estimate the price of a ship-out (POST /api/v1/customer/shipout-orders/services/{serviceCode}/estimate). A manually priced service answers h...
create_shipout Erforderlich medium storage:write Create a ship-out of stored packages from one warehouse (POST /api/v1/customer/shipout-orders/services/{serviceCode}/orders). The chosen pac...
pay_shipout confirm Erforderlich high storage:write Pay a priced ship-out from the customer wallet (POST /api/v1/customer/shipout-orders/{id}/pay). Default is the full remaining balance. Needs...
get_shipout Erforderlich low storage:read Get one ship-out of the customer with paid amount, remaining balance, can_be_paid, can_be_cancelled and its packages (GET /api/v1/customer/s...
list_shipouts Erforderlich low storage:read List the customer's ship-outs, paginated (GET /api/v1/customer/shipout-orders). Needs a customer account token.
cancel_shipout confirm Erforderlich high storage:write Cancel a pending or confirmed ship-out and release its stored packages (POST /api/v1/customer/shipout-orders/{id}/cancel). A payment is not...
otep_client_tracking Erforderlich low orders:read Get the OTEP timeline and details (addresses, dates, proof of delivery, item counts) of one of your own shipments: a parcel tracking number,...
otep_client_locker_storage Erforderlich low orders:read Get the OTEP timeline (storage profile) and details of one of your locker storage rentals, by rental id. Requires a token.

Client-spezifische Einrichtung

Wählen Sie Ihren KI-Client unten für maßgeschneiderte Einrichtungsanweisungen:

Claude Code

Claude Code liest die MCP-Konfiguration aus einer .mcp.json-Datei im Projektstammverzeichnis oder Home-Verzeichnis.

  1. Erstellen Sie eine .mcp.json-Datei im Projektstammverzeichnis (oder ~/.claude/.mcp.json für globalen Zugriff).
  2. Fügen Sie die folgende Konfiguration hinzu:
.mcp.json
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}

Um authentifizierte Tools zu verwenden, fügen Sie das headers-Feld hinzu:

.mcp.json (mit Authentifizierung)
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>",
        "X-MCP-Profile": "ops-readonly"
      }
    }
  }
}

Cursor

Cursor unterstützt MCP-Server über seine integrierte Konfiguration.

  1. Erstellen Sie eine .cursor/mcp.json-Datei im Projektstammverzeichnis.
  2. Fügen Sie die folgende Konfiguration hinzu:
  3. Starten Sie Cursor neu, um den neuen MCP-Server zu laden.
.cursor/mcp.json
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}

Windsurf

Windsurf verwendet eine globale MCP-Konfigurationsdatei.

  1. Bearbeiten Sie ~/.codeium/windsurf/mcp_config.json (erstellen Sie die Datei, falls sie nicht existiert).
  2. Fügen Sie die folgende Konfiguration hinzu:
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mili-express": {
      "serverUrl": "https://api.miliexpress.com/mcp"
    }
  }
}

ChatGPT

ChatGPT unterstützt MCP-Verbindungen für Plus-, Pro- und Team-Benutzer.

  1. Öffnen Sie ChatGPT und gehen Sie zu den Einstellungen.
  2. Navigieren Sie zum Abschnitt „Verbundene Apps" oder „Tools".
  3. Fügen Sie einen neuen MCP-Server mit der oben angezeigten Endpunkt-URL hinzu.
Die MCP-Unterstützung von ChatGPT kann je nach Ihrem Plan und Ihrer Region variieren. Aktuelle Anweisungen finden Sie in der OpenAI-Dokumentation.

Technische Details