correios-rastreamento
MCP server + REST API para rastreamento de objetos dos Correios com solver de CAPTCHA CRNN (99.6% acuracia)
Install / Use
claude mcp add opastorello -- npx -y github:opastorello/correios-rastreamentoIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
OperationsSupported Platforms
Our assessment of correios-rastreamento
correios-rastreamento scores 74/100 on our quality scale, 688th of 755 Operations skills we index.
Its MCP Server is 11 KB long, well organised into 28 sections with 14 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 6 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 86/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-11-01. Automated pattern scan on 2026-11-01. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
correios-rastreamento compared with similar skills
All 4 of these similar skills score higher than correios-rastreamento; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| correios-rastreamento (this skill)by opastorello | 74 | 3 | 6mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 107.3k | 7d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.5k | 1d ago | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.7k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 91.2k | today | MCP Server |
Frequently asked questions
- How do I install correios-rastreamento?
- Run
claude mcp add opastorello -- npx -y github:opastorello/correios-rastreamento. The install tabs above show the steps for each supported agent. - Which AI agents does correios-rastreamento work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is correios-rastreamento safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 86/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is correios-rastreamento still maintained?
- The repository was last updated about 6 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHub📦 Correios Rastreamento
Rastreie encomendas dos Correios com histórico completo de eventos, resolução automática de CAPTCHA via rede neural treinada localmente.
Expõe as mesmas operações como MCP tools (para agentes AI) e REST API (para integrações diretas), com interface web incluída.
💡 O que este projeto faz
| | | |--|--| | 📦 | Rastreia qualquer objeto pelos Correios pelo código (ex: AA000000000BR) | | 🚀 | Consulta até 20 objetos em paralelo com um único CAPTCHA | | 🤖 | Integra com qualquer agente AI via protocolo MCP | | 📋 | Mantém histórico de rastreamentos no servidor |
O rastreamento é feito via scraping do site oficial dos Correios. A resolução de CAPTCHA é feita por uma CRNN (Convolutional Recurrent Neural Network) treinada especificamente para isso, atingindo 99.62% de acurácia sem depender de nenhum serviço externo.
🤖 MCP Tools
| Tool | Descrição |
| ---- | --------- |
| rastrear_objeto | Rastreia um objeto pelo código (ex: AA000000000BR) |
| rastrear_multiplos | Rastreia até 20 objetos de uma vez com um único CAPTCHA |
🌐 REST API
| Método | Rota | Rate limit | Descrição |
| ------ | ---- | ---------- | --------- |
| GET | / | — | Interface web |
| POST | /rastreamento/objeto | 20/min por IP | Rastreia um objeto |
| POST | /rastreamento/multiplos | 10/min por IP | Rastreia até 20 objetos em paralelo |
| GET | /history/ | — | Lista o histórico de rastreamentos |
| POST | /history/save | — | Salva ou atualiza uma entrada no histórico |
| DELETE | /history/ | — | Limpa todo o histórico |
| DELETE | /history/{codigo} | — | Remove a entrada de um código específico |
| GET | /health | — | Health check — retorna {"status": "ok"} |
Documentação interativa: http://localhost:8000/docs (disponível apenas em ENV=development).
📂 Histórico de rastreamentos
O histórico é global e compartilhado — todas as consultas feitas pela interface web, pela REST API ou via MCP gravam no mesmo arquivo de histórico do servidor.
- Interface web: rastreamentos bem-sucedidos são salvos automaticamente no histórico.
- REST API / MCP: toda consulta bem-sucedida pode ser registrada chamando
POST /history/savecom os dados do objeto.
🏗️ Arquitetura
FastAPI com FastMCP 3.0 montado em /mcp (streamable-http). A camada services/ não tem dependência de framework — a mesma lógica é consumida pelos routers REST e pelo MCP server.
app/
├── main.py # FastAPI — routers + mcp.http_app() em /mcp + rate limiter
├── config.py # Lê todas as variáveis de ambiente com defaults
├── mcp_server.py # FastMCP("correios-rastreamento") — 2 tools
├── auth.py # TokenMiddleware — autenticação via API_TOKEN + controle prod/dev
├── services/
│ └── correios.py # Scraping: curl_cffi + CAPTCHA solver + JSON parsing
├── routers/
│ ├── rastreamento.py # POST /rastreamento/objeto, /rastreamento/multiplos
│ ├── history.py # GET/POST/DELETE /history/ — histórico de rastreamentos
│ └── ui.py # GET / — interface web
└── captcha/
├── model.py # Arquitetura CRNN (CNN + BiLSTM + CTC Loss)
├── predictor.py # Inferência: carrega captcha_model.pt e prediz
├── dataset.py # CaptchaDataset com data augmentation
├── train.py # Loop de treino com early stopping + AMP + registry
├── collector.py # Coleta amostras rotuladas direto dos Correios
├── evaluate.py # Avalia acurácia contra amostras salvas
└── registry.py # Versionamento de modelos
Regras de camada:
services/— zero imports de FastAPI ou FastMCProuters/emcp_server.py— importam apenas deservices/- I/O bloqueante em
services/correios.pyé sempre executado viarun_in_threadpool
⚙️ Configuração
Todas as opções são lidas de variáveis de ambiente ou do arquivo .env na raiz do projeto.
Referência completa de variáveis
| Variável | Padrão | Descrição |
| -------- | ------ | --------- |
| API_TOKEN | (vazio — sem auth) | Token Bearer. Se vazio, todos os endpoints ficam abertos |
| ENV | development | development ou production — controla quais rotas ficam abertas sem token |
| RATE_LIMIT_OBJETO | 20/minute | Rate limit de /rastreamento/objeto por IP |
| RATE_LIMIT_MULTIPLOS | 10/minute | Rate limit de /rastreamento/multiplos por IP |
| HISTORY_RETENTION_DAYS | 90 | Dias de retenção do histórico. 0 = sem limite |
| APP_TIMEZONE | America/Sao_Paulo | Timezone para timestamps do histórico |
🔒 Rotas abertas por ambiente
| Rota | development | production |
| ---- | :-----------: | :----------: |
| / | ✅ aberta | ✅ aberta |
| /health | ✅ aberta | ✅ aberta |
| /docs | ✅ aberta | 🔒 token |
| /redoc | ✅ aberta | 🔒 token |
| /openapi.json | ✅ aberta | 🔒 token |
| /mcp | 🔒 token | 🔒 token |
| demais | 🔒 token | 🔒 token |
Se
API_TOKENestiver vazio, o middleware ignora autenticação em qualquer ambiente.
🔐 Autenticação
Com API_TOKEN configurado, todas as requisições protegidas precisam enviar:
Authorization: Bearer meu-token-secreto
REST:
curl -X POST http://localhost:8000/rastreamento/objeto \
-H "Authorization: Bearer meu-token-secreto" \
-H "Content-Type: application/json" \
-d '{"codigo": "AA000000000BR"}'
Claude Desktop / Claude Code (claude_desktop_config.json):
{
"mcpServers": {
"correios-rastreamento": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8000/mcp", "--allow-http"],
"env": {
"MCP_REMOTE_HEADER_AUTHORIZATION": "Bearer meu-token-secreto"
}
}
}
}
A interface web (/) exibe um gate de autenticação quando API_TOKEN está definido — o token é validado contra o servidor e salvo no navegador.
🚀 Instalação
Docker (recomendado)
git clone https://github.com/opastorello/correios-rastreamento.git
cd correios-rastreamento
cp .env.example .env # edite se quiser definir API_TOKEN
docker compose up --build -d
Local
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
Após iniciar:
- Interface web:
http://localhost:8000/ - REST docs:
http://localhost:8000/docs(apenas emENV=development) - MCP endpoint:
http://localhost:8000/mcp
📋 Exemplos de uso
Rastrear um objeto
curl -X POST http://localhost:8000/rastreamento/objeto \
-H "Content-Type: application/json" \
-d '{"codigo": "AA000000000BR"}'
{
"codObjeto": "AA000000000BR",
"tipoPostal": { "descricao": "SEDEX" },
"situacao": "E",
"dtPrevista": "01/01/2026",
"eventos": [
{
"descricaoWeb": "ENTREGUE",
"dtHrCriado": { "date": "2026-01-01 10:00:00.000000" },
"unidade": { "endereco": { "cidade": "SAO PAULO", "uf": "SP" } }
}
]
}
Rastrear múltiplos objetos
curl -X POST http://localhost:8000/rastreamento/multiplos \
-H "Content-Type: application/json" \
-d '{"codigos": ["AA000000000BR", "AA000000001BR"]}'
🧠 Modelo de CAPTCHA
Arquitetura CRNN
Input (1×80×215 grayscale)
→ Conv2D ×4 + BatchNorm + ReLU + MaxPool (extração de features visuais)
→ BiLSTM ×2 (128 hidden, bidirectional) (modelagem de sequência)
→ Linear → CTC Loss (decode sem segmentação)
Output: string [0-9a-z] (CHARSET: 36 chars)
Histórico de treino
| Rodada | Amostras | Rotulador | val_acc | | ------ | -------- | --------- | :-----: | | 1 | 55.033 | ddddocr (bootstrap) | 99.57% | | 2 | 55.000 | Modelo R1 (83.6% acerto) | 99.61% | | 3 (fine-tuning) | 20.000 | Modelo R2 (~99%) | 99.63% | | 4 (fine-tuning) | 100.000 | Modelo R3 (~99%) | 99.62% |
Resultado v6 sobre 100k amostras: 99.97% por sequência | 99.99% por caractere
Erros residuais são confusões visuais: n↔h, e↔c, r↔p, v↔y.
Fluxo de scraping
Objeto único:
- GET
index.php— session cookie - GET
securimage_show.php— imagem CAPTCHA - Resolve com CRNN local (99.62% acurácia)
- GET
resultado.php?objeto={code}&captcha={text}&mqs=S— JSON com eventos - Retry até 4× em caso de CAPTCHA inválido
Múltiplos objetos (até 20):
- Mesmos passos 1–3, mas usa
rastroMulti.php?objeto={cod1cod2...}&captcha={text} - 1 CAPTCHA para até 20 objetos (códigos concatenados)
Treinar o modelo
1. Coletar amostras
python -m app.captcha.collector --probe AA000000000BR --target 20000 --workers 8
2. Treinar do zero
python -m app.captcha.train --epochs 80 --batch 128 --lr 1e-3
3. Fine-tuning a partir de checkpoint
python -m app.captcha.train --epochs 60 --batch 128 --lr 1e-4 --checkpoint app/captcha/captcha_model.pt
O melhor modelo (menor val_loss) é salvo em app/captcha/captcha_model.pt. Para consultar o histórico de versões:
python -m app.captcha.registry
🗺️ Roadmap
Ideias e melhorias planejadas para versões futuras.
Escalabilidade
- Cache de resultados — objetos já consultados recentemente retornam resultado armazenado sem nova requisição aos Correios. Reduz latência e carga no servidor.
- Worker distribuído — arquitetura de fila para distribuir consultas em múltiplos IPs e reduzir risco de throttling.
Multi-usuário
- Histórico isolado por token — cada integração (web, API, MCP) mantém seu próprio registro separado em vez do histórico global compartilhado atual.
- Quota de consultas por token — limite diário/mensal de rastreamentos configurável independentemente do rate limit por IP.
Cobertura
- Notificação de atualização — webhook ou push notification quando um objeto muda de status desde a última consulta.
⚖️ Responsabilidade de Uso
Este projeto consulta exclusivamente o sistema público dos Correios — os mesmos dados acessíveis por qualquer pessoa pelo site oficial, sem login ou cadastro.
Usos adequados:
- Acompanhamento pessoal de encomendas
- Integração com agentes AI para automação de processos legítimos
- Monitoramento de entregas em sistemas próprios
O projeto não se destina a:
- Varredura em massa sem finalidade específica
- Qualquer uso que sobrecarregue desnecessariamente a infraestrutura dos Correios
- Qualquer uso que viole os termos de serviço ou a legislação brasileira vigente
O código é aberto e auditável. A responsabilidade pelo uso é inteiramente do operador que implanta e utiliza o serviço. Rate limiting está configurado por padrão para desincentivar abuso.
📦 Dependências principais
| Pacote | Uso |
| ------ | --- |
| FastMCP | Framework MCP server |
| FastAPI | REST API |
| slowapi | Rate limiting por IP |
| curl-cffi | HTTP com impersonação TLS Chrome |
| PyTorch | Rede neural CRNN para CAPTCHA |
| torchvision | Transforms e augmentation de imagem |
| Pillow | Processamento de imagem |
| python-dotenv | Carregamento de variáveis do .env |
📄 Licença
MIT © 2026 Nícolas Pastorello
Related Skills
Agent-Reach
107.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.7kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
91.2k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
