MCP

Columna MCP

Conecte agentes de IA con seguridad: User MCP para operaciones, Developer MCP para integraciones — con perfiles, confirm, dry-run y aprobaciones.

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

Resumen de la columna MCP

Esta guía es la columna MCP de Superroute en el Centro de Desarrolladores: ambos servidores, seguridad de agentes y el catálogo de herramientas en vivo.

¿Qué es MCP?

El Protocolo de Contexto de Modelo (MCP) es un estándar abierto que permite a asistentes de IA como Claude, Cursor y ChatGPT interactuar con herramientas y servicios externos. Permite que su IA realice acciones reales, como rastrear un paquete, directamente dentro de la conversación.

Al configurar el servidor MCP de Superroute, su asistente de IA obtiene acceso a herramientas logísticas sin abandonar su flujo de trabajo.

Dos servidores MCP

Use el servidor adecuado. No dé a agentes desatendidos el servidor Developer con acceso total.

Nombre del servidor Endpoint Audiencia Auth
superroute https://api.miliexpress.com/mcp Agentes de ops / soporte / negocio Bearer + perfil/scopes opcionales (completo si no se define)
superroute-developer https://api.miliexpress.com/mcp/developer Desarrolladores de integración y agentes de código Bearer de conexión preferido; api_token en tools se retira

Inicio rápido

Las herramientas públicas como el rastreo de paquetes funcionan sin autenticación. Agregue esta configuración a su cliente MCP:

JSON
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}
¡Pruébelo! Después de la configuración, pregunte a su asistente de IA: "Rastrear paquete SR100012345"

Acceso autenticado

Para usar herramientas que requieren permisos de usuario, agregue su token Bearer de API a la configuración:

Ponga los tokens solo en los encabezados de conexión MCP — nunca en argumentos de herramientas ni prompts.

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

Cómo obtener un token de API

Llame al endpoint de inicio de sesión con sus credenciales:

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"}'

La respuesta incluirá su token de acceso:

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

Use el valor de access_token en el encabezado Authorization de su configuración MCP.

Modelo de seguridad del agente

User MCP está pensado para privilegio mínimo. Cree tokens con perfil MCP (predeterminado: ops solo lectura) o pase headers.

Perfiles (X-MCP-Profile)

Paquetes de scopes con nombre. Prefiera ops-readonly o support para agentes desatendidos.

Perfil Etiqueta Scopes
ops-readonly Ops solo lectura orders:read, labels:read, routes:read, drivers:read, analytics:read, address:read, approvals:read
support Soporte (atención al cliente) orders:read, analytics:read, address:read, approvals:read
ops-write Ops escritura (pedidos + etiquetas + rutas) 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 solo lectura wms:read, orders:read
datasets-readonly Datasets solo lectura datasets:read
alliance-readonly Alianza solo lectura alliance:read
full Acceso completo (todas las herramientas MCP) — no para agentes desatendidos *
.mcp.json — configuración de agente recomendada
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp",
      "headers": {
        "Authorization": "Bearer <ops-readonly-token>",
        "X-MCP-Profile": "ops-readonly"
      }
    }
  }
}

Encabezados opcionales

Header Propósito
Authorization: Bearer …Token Bearer de API (nivel de conexión).
X-MCP-ProfilePerfil: ops-readonly, support, ops-write, wms-readonly, datasets-readonly, alliance-readonly, full.
X-MCP-ScopesScopes explícitos separados por comas (anula el perfil).
X-MCP-Dry-Run: 1Previsualizar escrituras sin mutar.
X-MCP-Require-Approval: 1Encolar escrituras de alto riesgo para aprobación humana.

Confirmación de alto riesgo

Estas herramientas requieren confirm=true en tools/call (o la cola de aprobación):

Cola de aprobación humana

Los agentes desatendidos deben proponer escrituras; un humano aprueba.

  1. Agente: propose_write o X-MCP-Require-Approval: 1
  2. Humano: MCP Approvals en la app o list_pending_approvals
  3. Humano: approve_pending_write con confirm=true o reject_pending_write

Ruta de la UI web (requiere inicio de sesión): /mcp-approvals

Autenticación Developer MCP

Prefiera Authorization: Bearer en la conexión. api_token por herramienta está obsoleto y se corta tras 2026-12-31.

Herramientas disponibles

Las siguientes herramientas están actualmente disponibles en el servidor MCP: 93 herramientas en vivo del catálogo del servidor

Esta tabla se genera desde UserMcpToolCatalog en tiempo de solicitud y se mantiene sincronizada con tools/list.

Herramienta Autenticación Riesgo Scopes Descripción
track_package Público low — Track a package by its tracking number. Returns delivery status, tracking events timeline, and proof of delivery if available.
otep_tracking Público low — Get the unified OTEP (Open Tracking Event Protocol) timeline for a tracking number — self-delivery, third-party and carrier events normalize...
get_capabilities Público 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 Requerida low orders:read List orders with filtering and pagination. Returns order details including status, tracking, and delivery info.
get_order_detail Requerida low orders:read Get full details of a specific order by ID, including address, status, packages, and tracking info.
find_order Requerida 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 Requerida low orders:read Get the full audit trail for orders — every status change, who performed it, GPS coordinates, and photos.
create_order Requerida 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 Requerida high orders:write Cancel an existing order by order ID. Only works for orders not yet delivered.
bulk_create_orders confirm Requerida 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 Requerida 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 Requerida medium orders:write Update only the delivery_instruction field on an existing order (PATCH). Safer than full order rewrite.
update_order_note Requerida medium orders:write Update only the internal note field on an existing order (PATCH).
update_time_window_by_refs Requerida medium orders:write Bulk-update delivery time windows (and optional schedule_date) for orders identified by external refs.
hold_order confirm Requerida high orders:write Put an order on HOLD so it is not dispatched until release_order. HIGH-RISK: requires confirm=true.
release_order confirm Requerida high orders:write Release an order from HOLD back to NEW_ORDER. HIGH-RISK: requires confirm=true.
propose_write Requerida 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 Requerida low approvals:read List pending MCP write approvals for this business (or mine_only).
approve_pending_write confirm Requerida 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 Requerida medium approvals:write Reject a pending write proposal without executing it.
get_routes Requerida low routes:read List delivery routes with their status, assigned driver, and order count.
get_route_detail Requerida low routes:read Get one route with its stop/order list. Prefer this over get_routes when you already know route_id.
get_drivers Requerida 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 Requerida 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 Requerida low routes:read List routing engines, balance modes, capacity types, and defaults before calling build_route.
build_route confirm Requerida 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 Requerida 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 Requerida low orders:read List failed/returned/exception-like orders for a schedule date (default today). Read-only ops triage helper.
get_shipping_methods Requerida low labels:read List available shipping carriers/methods. Returns IDs and names — use the ID for rate/label tools.
get_shipping_rate Requerida low labels:read Get a shipping cost quote. Dry-run — no label created. Returns rate options with pricing and transit time.
create_shipping_label Requerida medium labels:write Book a shipment with a carrier and generate a shipping label with tracking numbers.
quote_and_ship Requerida 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 Requerida 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 Requerida low address:read Search and resolve addresses by postal code or free-text query. Returns structured address suggestions.
daily_digest Requerida 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 Requerida 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 Requerida 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 Requerida low wms:read List WMS warehouses available to the authenticated business.
get_inventory Requerida low wms:read Query WMS inventory (POST /api/v1/wms/inventory). Pass filters supported by the inventory API (sku, warehouse_id, etc.).
list_datasets Requerida low datasets:read List custom datasets available to the business.
get_dataset Requerida low datasets:read Get one dataset by id (metadata/columns).
list_dataset_groups Requerida low datasets:read List groups inside a dataset.
search_dataset_records Requerida low datasets:read Search records across groups in a dataset (POST .../search).
list_alliances Requerida low alliance:read List alliances the authenticated business belongs to.
get_alliance Requerida low alliance:read Get one alliance by id.
list_alliance_members Requerida low alliance:read List members of an alliance.
list_accessible_clients Requerida low alliance:read List clients accessible via alliance partnerships.
quote_delivery Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida low uniorder:read Read one uniorder order in the uniorder shape (GET /api/v1/uniorder/{orderId}).
uniorder_label Requerida low uniorder:read Get the label PDF of a uniorder order, base64 (GET /api/v1/uniorder/{orderId}/label).
uniorder_tracking Requerida low uniorder:read Get the tracking timeline of a uniorder order (GET /api/v1/uniorder/{orderId}/tracking).
uniorder_cancel confirm Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida low uniorder:read Read a queued uniorder batch and, once done, its results (GET /api/v1/uniorder/jobs/{jobId}).
list_shipping_services Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida 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 Requerida low storage:read List the customer's ship-outs, paginated (GET /api/v1/customer/shipout-orders). Needs a customer account token.
cancel_shipout confirm Requerida 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 Requerida 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 Requerida low orders:read Get the OTEP timeline (storage profile) and details of one of your locker storage rentals, by rental id. Requires a token.

Configuración por cliente

Seleccione su cliente de IA a continuación para obtener instrucciones de configuración específicas:

Claude Code

Claude Code lee la configuración MCP de un archivo .mcp.json en la raíz del proyecto o en el directorio principal.

  1. Cree un archivo .mcp.json en la raíz de su proyecto (o ~/.claude/.mcp.json para acceso global).
  2. Agregue la siguiente configuración:
.mcp.json
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}

Para usar herramientas autenticadas, agregue el campo headers:

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

Cursor

Cursor soporta servidores MCP a través de su configuración integrada.

  1. Cree un archivo .cursor/mcp.json en la raíz de su proyecto.
  2. Agregue la siguiente configuración:
  3. Reinicie Cursor para cargar el nuevo servidor MCP.
.cursor/mcp.json
{
  "mcpServers": {
    "mili-express": {
      "type": "url",
      "url": "https://api.miliexpress.com/mcp"
    }
  }
}

Windsurf

Windsurf usa un archivo de configuración MCP global.

  1. Edite ~/.codeium/windsurf/mcp_config.json (créelo si no existe).
  2. Agregue la siguiente configuración:
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mili-express": {
      "serverUrl": "https://api.miliexpress.com/mcp"
    }
  }
}

ChatGPT

ChatGPT soporta conexiones MCP para usuarios Plus, Pro y Team.

  1. Abra ChatGPT y vaya a Configuración.
  2. Navegue a la sección "Aplicaciones conectadas" o "Herramientas".
  3. Agregue un nuevo servidor MCP con la URL del endpoint mostrada arriba.
El soporte MCP de ChatGPT puede variar según su plan y región. Consulte la documentación de OpenAI para obtener las instrucciones más recientes.

Detalles técnicos