Dropscan MCP

Proporciona a un agente tu buzón físico a través del servicio de escaneo a correo electrónico de Dropscan, leyendo el correo escaneado y, tras una doble compuerta, reenviándolo o destruyéndolo.

Documentación

dropscan-mcp

Servidor MCP (Model Context Protocol) para la API de correo postal a correo electrónico de Dropscan. Dropscan recibe tus cartas físicas en un scanbox; este servidor permite que tu cliente MCP liste envíos, descargue los escaneos (PDF / ZIP / imagen del sobre / texto OCR) y, cuando se habilita explícitamente, solicite acciones (escanear / reenviar / destruir) y gestione destinatarios, direcciones de reenvío y reglas de webhook.

mcp-name: io.github.bitterdev/dropscan-mcp

Seguridad ante todo: Dropscan no tiene sandbox

Cada solicitud afecta a la cuenta de producción real. Las acciones son irreversibles: una carta destruida es triturada físicamente y desaparece, un reenvío envía físicamente la carta por correo y cuesta dinero.

Por ello, todas las herramientas de escritura/acción están protegidas con doble compuerta:

  1. Indicador de entorno DROPSCAN_ALLOW_WRITES. A menos que esté establecido en 1/true/yes, toda herramienta que no sea GET se niega a ejecutarse. Está deshabilitado por defecto.
  2. Parámetro confirm: true. Cada herramienta de escritura/acción toma un argumento confirm explícito (por defecto false) y se niega a menos que sea true.

Las herramientas de solo lectura GET están siempre disponibles y nunca cambian el estado.

Herramientas

Solo lectura (siempre disponibles)

HerramientaEndpoint
list_scanboxesGET /scanboxes
list_mailings(scanbox_id, current_status?, older_than?)GET /scanboxes/{id}/mailings
get_mailing(scanbox_id, uuid)GET /scanboxes/{id}/mailings/{uuid}
get_mailing_pdf(scanbox_id, uuid, save_path?)GET .../{uuid}/pdf
get_mailing_zip(scanbox_id, uuid, save_path?)GET .../{uuid}/zip
get_mailing_envelope(scanbox_id, uuid, save_path?)GET .../{uuid}/envelope
get_mailing_plaintext(scanbox_id, uuid)GET .../{uuid}/plaintext
list_recipients(scanbox_id)GET /scanboxes/{id}/recipients
get_recipient(scanbox_id, recipient_id)GET /scanboxes/{id}/recipients/{id}
get_forwarding_address(address_id)GET /forwarding_addresses/{id}
get_shipment(shipment_id)GET /shipments/{id}
list_webhook_rules()GET /webhook_rules
get_webhook_rule(rule_id)GET /webhook_rules/{id}

Las herramientas de descarga guardan el archivo en disco (por defecto ~/Downloads, se puede sobrescribir con save_path o la variable de entorno DROPSCAN_DOWNLOAD_DIR) y devuelven la ruta guardada, el tamaño en bytes y el tipo de contenido.

Escritura / acción (doble compuerta: DROPSCAN_ALLOW_WRITES=1 y confirm=true)

HerramientaEndpoint
request_mailing_action(scanbox_id, mailing_uuid, action_type, forwarding_address_id?, forwarding_date?, confirm)POST .../{uuid}/action_requests
cancel_mailing_action(scanbox_id, mailing_uuid, action_request_id, confirm)DELETE .../{uuid}/action_requests/{id}
set_mailing_recipient(scanbox_id, mailing_uuid, recipient_id, confirm)PUT .../{uuid}/recipient
create_recipient(scanbox_id, type, firstname?, lastname?, name?, confirm)POST /scanboxes/{id}/recipients
create_forwarding_address(firstname, lastname, street, number, zip_code, city, country_code, company?, info?, state?, confirm)POST /forwarding_addresses
create_webhook_rule(url, events, authorization_header?, confirm)POST /webhook_rules
update_webhook_rule(rule_id, url?, events?, authorization_header?, confirm)PATCH /webhook_rules/{id}
delete_webhook_rule(rule_id, confirm)DELETE /webhook_rules/{id}

action_type es uno de scan, forward, destroy (enumeración exacta de la API). Para forward, se requieren tanto forwarding_address_id como forwarding_date (ISO YYYY-MM-DD).

Webhook events: mailing_received, scan_requested, mailing_scanned, mailing_archived, mailing_trashed, mailing_shredded, mailing_added_to_shipment, mailing_removed_from_shipment, shipment_sent, package_tracking_updated.

Requisitos

  • Python >= 3.10
  • Un token de acceso personal de Dropscan

Instalación

Desde un clon local:

python3 -m venv .venv
./.venv/bin/pip install .

Configuración

El token se lee de la variable de entorno DROPSCAN_TOKEN y se envía como Authorization: Bearer <token>. Nunca se codifica de forma fija.

Claude Code

claude mcp add dropscan -e DROPSCAN_TOKEN="dspat-..." -- dropscan-mcp

Claude Desktop / cliente MCP genérico

{
  "mcpServers": {
    "dropscan": {
      "command": "/absolute/path/to/dropscan-mcp/.venv/bin/python",
      "args": ["-m", "dropscan_mcp.server"],
      "env": {
        "DROPSCAN_TOKEN": "dspat-..."
      }
    }
  }
}

Para habilitar las herramientas de escritura/acción, añade "DROPSCAN_ALLOW_WRITES": "1" a env. Omítelo para mantener el servidor estrictamente de solo lectura.

El servidor se ejecuta sobre stdio.

Variables de entorno

VariableDescripción
DROPSCAN_TOKENObligatorio. Token de acceso personal de Dropscan (Bearer).
DROPSCAN_ALLOW_WRITESEstablécelo en 1/true para habilitar las herramientas de escritura/acción. Por defecto: deshabilitado.
DROPSCAN_DOWNLOAD_DIRDirectorio predeterminado para PDFs/ZIPs/imágenes descargados. Por defecto: ~/Downloads.

Licencia

MIT, ver LICENSE.

Autor

Fabian Bitter (fabian@bitter.de)