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:
DROPSCAN_ALLOW_WRITESvariável de ambiente. A menos que esteja definida como1/true/yes, toda ferramenta não-GET se recusa a executar. Ela está desabilitada por padrão.confirm: trueparâmetro. Cada ferramenta de escrita/ação recebe um argumento explícitoconfirm(padrãofalse) e se recusa a menos que sejatrue.
Ferramentas GET somente leitura estão sempre disponíveis e nunca alteram o estado.
Ferramentas
Somente leitura (sempre disponíveis)
| Ferramenta | Endpoint |
|---|---|
list_scanboxes | GET /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)
| Ferramenta | Endpoint |
|---|---|
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ável | Descrição |
|---|---|
DROPSCAN_TOKEN | Obrigatório. Token de acesso pessoal do Dropscan (Bearer). |
DROPSCAN_ALLOW_WRITES | Defina como 1/true para habilitar ferramentas de escrita/ação. Padrão: desabilitado. |
DROPSCAN_DOWNLOAD_DIR | Diretório padrão para PDFs/ZIPs/imagens baixados. Padrão: ~/Downloads. |
Licença
MIT, veja LICENSE.
Autor
Fabian Bitter (fabian@bitter.de)