geobr-mcp
# geobr-mcp
[](https://github.com/maessa-oliveira/geobr-mcp/actions/workflows/ci.yml)
[](LICENSE)
**Servidor MCP de geodésia e topografia para o Brasil.** Conecta o Claude (ou qualquer assistente
compatível com o *Model Context Protocol*) a cálculos geodésicos testados. Em vez de "fazer de
cabeça", a IA usa ferramentas conferidas contra o PROJ e os parâmetros oficiais do IBGE.
> 🇬🇧 *MCP server with Brazilian geodesy and land-surveying tools (UTM, SAD 69 ↔ SIRGAS 2000, RBMC
> GNSS stations, traverse adjustment, drone GSD), so AI assistants compute with tested code instead of guessing.*
## O que você pode pedir ao Claude
> "Converta estes 40 pontos de UTM SAD 69 fuso 24 para SIRGAS 2000."
>
> "Qual a estação RBMC mais próxima de -12.97, -38.50 e ela está funcionando?"
>
> "Calcule esta poligonal fechada e me diga se atende 1:10.000."
>
> "A que altura voo com o Phantom 4 RTK para ter GSD de 2 cm? Quantas fotos para 30 ha?"
## Ferramentas
| Ferramenta | O que faz |
|---|---|
| `geo_para_utm` / `utm_para_geo` | Conversão com fator de escala, convergência meridiana e EPSG |
| `transformar_datum` | SAD 69 ↔ SIRGAS 2000 (IBGE R.PR 1/2005), com o deslocamento em metros |
| `converter_lote` | Muitos pontos de uma vez entre GEO/UTM e SAD 69/SIRGAS 2000, com erros por ponto |
| `area_poligono` | Área e perímetro no plano UTM ou geodésica (GRS80) |
| `rbmc_mais_proximas` | Estações RBMC/IBGE mais próximas: distância, azimute, situação na semana e orientação de uso |
| `calcular_poligonal` | Poligonal fechada ou enquadrada: tolerância angular, precisão 1:N, Bowditch/trânsito e coordenadas |
| `gsd_drone` | GSD, altura, pegada, espaçamentos, precisão esperada e fotos estimadas |
| `fuso_utm` | Fuso e meridiano central de uma longitude |
Ângulos aceitam graus decimais ou GMS (`12°58'30"S`). Os dados da RBMC vêm do
[Mapa da RBMC](https://maessa-oliveira.github.io/rbmc-mapa/), atualizado todo dia; sem internet,
o servidor usa uma cópia embutida.
## Instalação
Precisa do [uv](https://docs.astral.sh/uv/) (ou de Python 3.10+ com pip).
**Claude Desktop**: em *Configurações → Desenvolvedor → Editar configuração*, adicione:
```json
{
"mcpServers": {
"geobr": {
"command": "uvx",
"args": ["--from", "git+https://github.com/maessa-oliveira/geobr-mcp", "geobr-mcp"]
}
}
}
```
**Claude Code**:
```bash
claude mcp add geobr -- uvx --from git+https://github.com/maessa-oliveira/geobr-mcp geobr-mcp
```
**Com pip**: `pip install git+https://github.com/maessa-oliveira/geobr-mcp` e use o comando `geobr-mcp`.
## Qualidade
```bash
pip install -e ".[dev]"
pytest
```
- Conversões UTM conferidas contra o **PROJ** (diferença < 2 mm) e distâncias/azimutes RBMC contra
o `pyproj.Geod`.
- A poligonal dá o **mesmo resultado** da [calculadora web](https://maessa-oliveira.github.io/poligonal/).
- O servidor é testado **pelo próprio protocolo MCP** (cliente e servidor em memória): lista de
ferramentas, chamadas e erros de entrada que não derrubam o servidor.
Usa a biblioteca [geobr-tools](https://github.com/maessa-oliveira/geobr-tools) para os cálculos geodésicos.
## Limites
- Transformação SAD 69 → SIRGAS 2000 pelos parâmetros de Helmert do IBGE (precisão de ~1 m);
para trabalhos que exigem mais, use as grades oficiais (ProGriD).
- A orientação da RBMC é uma regra prática, não substitui o planejamento do levantamento.
- Resultados são de apoio: confira sempre antes de usar em documento técnico.
## Licença
MIT.
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes (coordinate conversion, datum transformation, area, GNSS stations, traverse, drone GSD, UTM zone). However, converter_lote overlaps heavily with geo_para_utm, utm_para_geo, and transformar_datum, since it can perform the same operations in batch, and fuso_utm partially duplicates the zone information returned by geo_para_utm.
All names are in Portuguese snake_case, but the naming convention is mixed: some are verb_noun (transformar_datum, converter_lote, calcular_poligonal), while others are noun_noun or noun_adjective (area_poligono, gsd_drone, fuso_utm, rbmc_mais_proximas). The pattern is readable but not fully predictable.
Nine tools is well-scoped for a geospatial/surveying utility server. Each tool maps to a distinct computation or data lookup, and the count avoids both excessive granularity and missing major operations.
The surface covers coordinate conversion, datum transformation, batch processing, polygon area/perimeter, GNSS station lookup, traverse adjustment, drone flight geometry, and UTM zone lookup. Minor gaps exist, such as arbitrary point-to-point distance/azimuth or direct coordinate forward computation outside a traverse, but core workflows are covered.