Dropscan MCP

Dá ao agente sua caixa de correio física através do serviço de digitalização para e-mail Dropscan, lendo correspondência digitalizada e, atrás de um portão duplo, encaminhando-a ou destruindo-a.

Documentação

dropscan-mcp

Servidor MCP (Model Context Protocol) para a API de correio físico para e-mail Dropscan. O Dropscan recebe suas cartas físicas em um scanbox; este servidor permite que seu cliente MCP liste correspondências, baixe os scans (PDF / ZIP / imagem do envelope / texto OCR) e, quando explicitamente habilitado, solicite ações (scan / encaminhar / destruir) e gerencie destinatários, endereços de encaminhamento e regras de webhook.

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

Segurança em primeiro lugar: o Dropscan não tem sandbox

Cada requisição atinge a conta de produção real. As ações são irreversíveis: uma carta destruída é fisicamente triturada e desaparece, um encaminhamento envia fisicamente a carta e custa dinheiro.

Por causa disso, todas as ferramentas de escrita/ação são protegidas duas vezes:

  1. DROPSCAN_ALLOW_WRITES variável de ambiente. A menos que esteja definida como 1/true/yes, toda ferramenta não-GET se recusa a executar. Ela está desabilitada por padrão.
  2. confirm: true parâmetro. Cada ferramenta de escrita/ação recebe um argumento explícito confirm (padrão false) e se recusa a menos que seja true.

Ferramentas GET somente leitura estão sempre disponíveis e nunca alteram o estado.

Ferramentas

Somente leitura (sempre disponíveis)

FerramentaEndpoint
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}

As ferramentas de download salvam o arquivo em disco (padrão ~/Downloads, substitua com save_path ou a variável de ambiente DROPSCAN_DOWNLOAD_DIR) e retornam o caminho salvo, o tamanho em bytes e o tipo de conteúdo.

Escrita / ação (duplamente protegidas: DROPSCAN_ALLOW_WRITES=1 e confirm=true)

FerramentaEndpoint
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 é um de scan, forward, destroy (enum exato da API). Para forward, tanto forwarding_address_id quanto forwarding_date (ISO YYYY-MM-DD) são obrigatórios.

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
  • Um token de acesso pessoal do Dropscan

Instalação

A partir de um clone local:

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

Configuração

O token é lido da variável de ambiente DROPSCAN_TOKEN e enviado como Authorization: Bearer <token>. Ele nunca é codificado.

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 as ferramentas de escrita/ação, adicione "DROPSCAN_ALLOW_WRITES": "1" a env. Deixe de fora para manter o servidor estritamente somente leitura.

O servidor roda via stdio.

Variáveis de ambiente

VariávelDescrição
DROPSCAN_TOKENObrigatório. Token de acesso pessoal do Dropscan (Bearer).
DROPSCAN_ALLOW_WRITESDefina como 1/true para habilitar ferramentas de escrita/ação. Padrão: desabilitado.
DROPSCAN_DOWNLOAD_DIRDiretório padrão para PDFs/ZIPs/imagens baixados. Padrão: ~/Downloads.

Licença

MIT, veja LICENSE.

Autor

Fabian Bitter (fabian@bitter.de)