arcgis-mcp-bridge

Servidor MCP seguro e local-first que expõe o mecanismo ArcPy do ArcGIS Pro via stdio JSON-RPC.

Documentação

PyPI - Version PyPI - Downloads CI Python 3.11+ License Tools Ruff uv arcgis-mcp-bridge MCP server smithery badge

arcgis-mcp-bridge

Início Rápido

arcgis-mcp-bridge requer Windows, uma instalação licenciada do ArcGIS Pro e Python 3.11 ou mais recente para o pacote da ponte.

Instale o pacote de inicialização usando um gerenciador de pacotes:

# Option A — pip
py -m pip install --upgrade arcgis-mcp-bridge

# Option B — uv
uv pip install --upgrade arcgis-mcp-bridge

Em seguida, clone o ambiente Python do ArcGIS Pro:

# The final JSON report contains the target `python_exe` path.
py -m arcgis_mcp.setup_env

Se o comando de console instalado estiver disponível no PATH, arcgis-mcp-setup é equivalente a py -m arcgis_mcp.setup_env.

Importante para sistemas Windows com múltiplas instalações Python: a configuração não está completa até que arcgis-mcp-bridge seja instalado no arcgis-mcp-env\python.exe relatado. Use esse mesmo interpretador tanto para o servidor MCP command quanto para ARCPY_PYTHON_PATH. Isso evita falhas nos workers causadas por pacotes ou extensões nativas carregadas de outro ambiente Python.

Consulte 05 — Instalação para a configuração e o ajuste completos.

100 ferramentas declarativas de geoprocessamento. Dois processos isolados. Um piso de segurança.

Um servidor MCP seguro, local-first e assíncrono que expõe o motor ArcPy do ArcGIS Pro ao Claude Desktop e a outros hosts MCP via stdio JSON-RPC.

Artigo técnico: Construindo uma Ponte MCP Segura para ArcGIS Pro e ArcPy

Catálogo100 ferramentas · 10 verticais
Testes86 testes unitários · 86/86 passando · arcpy simulado
Evidência de runtime realBenchmark de fumaça MCP reproduzível do ArcGIS Pro
Análise estáticaRuff limpo · Mypy strict limpo
TransporteJSON-RPC 2.0 sobre stdio
LicençaApache-2.0

Por que arcgis-mcp-bridge?

Recursoarcgis-mcp-bridgegeo2004/MCP-ArcGISPronicogis (C#/.NET)
Ferramentas100~15~10
Sincronização de DependênciasDeterminística (uv.lock)Imperativa (requirements.txt)NuGet nativo
Transportestdio JSON-RPCIPC baseado em arquivosNamed Pipes
Arquitetura de SegurançaSandbox PathGuard documentadoNenhuma especificada / acesso padrão do hostNenhuma especificada / acesso padrão do host
Isolamento do arcpyArquitetura de dois processosExecução em processo únicoExecução em processo de Add-In
CI (Verificação Offline)✅ Suportado❌ Não disponível❌ Não disponível
LicençaApache-2.0MITMIT

Destaque: Pipeline de Esboço → GIS

Limite de parcela desenhado à mão → foto → classe de feição no geodatabase. Registro de imagem ORB+RANSAC, segmentação de tinta HSV, commit direto no GDB. Nenhuma digitalização manual necessária.

Demonstração em breve. Para pré-visualizar o pipeline de esboço para GIS:

  1. Desenhe um polígono no papel e fotografe-o.
  2. Peça ao Claude: "Use extract_sketch_to_gis para registrar esta foto contra meu mapa base e commitar o resultado no meu GDB."
  3. A classe de feição aparece no ArcGIS Pro — sem digitalização manual.

00 — Exemplos de Prompts

Após health_check ter sucesso, converse com o Claude naturalmente:

"Buffer all parcels in my GDB by 50 meters and save to scratch."
"List all feature classes in C:\GIS\city.gdb starting with 'road_'."
"Dissolve the neighborhoods layer by district_id."
"Run kernel density on crime_points with a 500-meter search radius."
"Calculate slope and aspect from the DEM at C:\GIS\dem.tif."
"Find the 3 nearest facilities to each incident in my network dataset."
"Check geometry on all feature classes in my GDB and repair errors."

01 — Arquitetura Central e Filosofia

flowchart TD
    A[Claude Desktop / Cursor] -->|JSON-RPC over stdio| B[Layer A · MCP Protocol Host]
    B -->|NDJSON subprocess bridge| C[Layer B · ArcPy Worker]
    C --> D[ArcGIS Pro / ArcPy Runtime]

Camada A — Servidor Assíncrono Orientado a Eventos (arcgis_mcp/server.py). FastMCP no interpretador da ponte. Possui o canal stdio, valida cada requisição contra contratos congelados do Pydantic v2, despacha trabalho via asyncio.create_subprocess_exec — o loop de eventos nunca bloqueia em uma chamada de geoprocessamento e nunca segura um lock de thread. A Camada A contém zero importações de arcpy ou cv2 em nível de módulo (verificado por grep no gate de auditoria); ela não pode travar no código nativo da Esri porque nunca o toca.

Camada B — Worker de Isolamento do ArcPy em Subprocesso (arcgis_mcp/worker.py). Gerado por job no interpretador licenciado do ArcGIS Pro (ARCPY_PYTHON_PATH). O único lugar onde import arcpy é legal; cv2 carrega lentamente dentro da única ferramenta de visão que precisa dele. O stdout do worker é redirecionado para o stderr na inicialização — a única escrita sancionada no stdout é o frame final de resultado NDJSON, então o ruído nativo do ArcObjects nunca pode corromper o canal JSON-RPC. Uma falha nativa encerra o worker, não o servidor: o pai converte uma saída não-zero em um frame de erro estruturado.

Registro declarativo (arcgis_mcp/registry.py). Cada ferramenta é um ToolSpec(name, category, description, input_model, worker_fn, destructive). Uma fábrica genérica de proxies materializa todos os 100 endpoints MCP do catálogo na Camada A; um despachante genérico run_tool os atende na Camada B. O catálogo é exposto junto com três endpoints centrais: health_check, list_layers e execute_spatial_tool. Adicionar a ferramenta #101 do catálogo toca dois arquivos — nunca os loops de runtime.

Cada falha que cruza o limite do processo é classificada: validation · security · license · geoprocessing (com o stack completo do arcpy.GetMessages()) · internal.


02 — A Matriz do Censo das 100 Ferramentas

#VerticalFerramentasCapacidades-chave
1map_layer_management10Mapas .aprx, ordem/visibilidade/simbologia de camadas, câmera, salvar
2data_management22Ciclo de vida de FC/GDB, campos, Describe, troca Excel/GeoJSON/CSV
3geometry_analysis23Sobreposições, dissolver/mesclar, seleções, junções, proximidade, fishnet
4coordinate_reference_projection4Definir/projetar orientado por WKID para vetor + raster, consulta de CRS
5raster_operations15Álgebra de mapas, estatísticas zonais, declive/aspecto/sombreamento de DEM, hidrologia
6vision_analytics1Esboço-para-GIS: registro ORB+RANSAC → tinta HSV → commit no GDB
7export_layout9Gráficos PDF/PNG, controle de DPI, molduras de mapa, texto/legenda, tamanho de página
8editing_topology7Reparar/verificar geometria, anexar, deduplicar, diff, validação de topologia
9network_analysis4Áreas de serviço, roteamento, matriz de custo OD, instalação mais próxima
10spatial_statistics5Centro médio, elipse, densidade de kernel, pontos quentes Gi*, I de Moran
Total100

Licenças de extensão da Esri (Spatial, Network) são gerenciadas por meio de um gerenciador de contexto compartilhado e devolvidas via finally em caminhos normais de exceção Python. O isolamento do processo worker contém falhas nativas ao job atual, enquanto licenças indisponíveis retornam um frame de erro estruturado em vez de encerrar o servidor MCP.

Piso de Segurança para Mutação Destrutiva

Dez ferramentas que alteram estado se recusam a executar sem um token de payload confirm: true explícito. O gate dispara no despachante antes do custo da importação de arcpy de 10–30 s, e o registro se recusa até mesmo a registrar uma especificação destrutiva cujo contrato não tenha um campo confirm:

append_features        calculate_field        define_projection
delete_dataset         delete_field           delete_identical
extract_sketch_to_gis  near_analysis          remove_layer_from_map
repair_geometry

calculate_field carrega um piso adicional de canal de expressão: o expression_type padrão é ARCADE (a linguagem de expressão em sandbox da Esri), e PYTHON3 — que executa código dentro do worker — é rejeitado no limite do contrato da Camada A a menos que confirm: true seja fornecido explicitamente. Expressões raster_calculator são restritas a uma gramática pura de álgebra de mapas (identificadores, números, operadores; sem aspas, sem acesso a dunder) por um validador de contrato.


03 — Gate Automatizado de Qualidade e Testes

Evidências de runtime licenciado são relatadas separadamente no cartão de método benchmarks/. Seu resultado commitado usa um worker real do ArcGIS Pro e um GDB de rascunho dedicado; ele não é agrupado com a contagem de testes unitários simulados nem apresentado como validação de todas as 100 ferramentas de geoprocessamento.

Escopo, dito claramente: o gate automatizado consiste atualmente em 86 testes unitários abrangendo o limite do PathGuard, os contratos Pydantic, os invariantes de registro e guarda de caminho do registro genérico, o mapeamento do limite de erro do worker e a validação de ambiente Settings. Ele exercita os contratos estruturais do catálogo e cada costura crítica de segurança — ele não afirma validação multi-cenário das 100 ferramentas de geoprocessamento em si, que executam contra um runtime ArcGIS licenciado que nenhum runner de CI possui.

Arquitetura de teste em memória. tests/conftest.py injeta proxies MagicMock em sys.modules["arcpy"] e sys.modules["arcpy.sa"] (com CheckExtension respondendo a "Available") antes que qualquer importação de pacote se resolva. Toda a suíte executa em bem menos de um segundo, sem instalação do ArcGIS, sem checkout de licença e sem runtime da Esri — localmente e na CI de forma idêntica.

Escopos de teste.

  • tests/test_security.py e tests/test_pathguard.py — o firewall de limite do PathGuard, exercitado contra diretórios reais via fixture tmp_path do pytest: leituras/escritas válidas dentro do sandbox passam; travessia (segmentos ..), UNC, relativo, byte NUL, nomes de dispositivos reservados, caminhos acima do comprimento e fora da raiz são rejeitados; a disciplina de escrita (regras de nomes de datasets do ArcGIS, opt-in de sobrescrita) é aplicada.
  • tests/test_contracts.py — aplicação de contrato Pydantic: especificações de parâmetros por ferramenta, validadores entre campos, frozen / extra="forbid" e o invariante ok-xor-error no envelope IPC.
  • tests/test_registry.py e tests/test_registry_guard.py — integridade do fluxo de registro mais aplicação genérica de apply_path_guard e invariantes register — cada esquema deve ser uma subclasse de ToolInput, cada entrada de path_fields deve referenciar um papel válido, nomes duplicados são rejeitados e toda especificação destrutiva deve carregar seu gate confirm.
  • tests/test_worker.py — mapeamento do limite de erro process_frame: cada classe de falha (validação, segurança, licença, geoprocessamento, interna) mapeia para seu WorkerError.kind distinto.
  • tests/test_config.py — validação de Settings.from_environment: variáveis obrigatórias, verificações de diretório/arquivo, limites de inteiros e o fail-fast em um geodatabase de rascunho ausente.

A importação com efeito colateral import arcgis_mcp.tools no teste de registro é o que popula o catálogo; ela é fixada com # noqa para que nenhum linter a remova novamente.

Análise estática. Ruff aplica formatação canônica mais E/W/F/I/B/RUF em 88 colunas contra um piso de py311 (o código deve analisar no interpretador suportado mais antigo — Camada B). Comentários em turco são cidadãos de primeira classe: o ı/İ sem ponto são registrados sob allowed-confusables, então a prosa é configurada ao redor, nunca reescrita. Mypy executa strict = true com o plugin Pydantic em todos os 31 arquivos fonte.

make format          # ruff format + import sorting (mutates)
make lint            # ruff check, mutates nothing
make type-check      # mypy --strict over arcgis_mcp/
make security-audit  # live registry inspection: path roles + confirm gates
make verify-all      # lint + type-check + security-audit, one gate
python -m pytest     # 86/86

04 — Estrutura de Segurança (Sandbox PathGuard)

Todo argumento de sistema de arquivos em cada contrato declara seu papel — "read", "write" ou "read_list" — no mapeamento path_fields do modelo. Uma função de aplicação compartilhada aplica essas declarações em ambos os processos: a Camada A pré-verifica antes que um worker seja gerado; a Camada B revalida porque nunca confia em seu pai.

Dois controles de limite:

  • validate_read(raw: str) — resolve totalmente o caminho (symlinks, .., segmentos relativos colapsados antes de qualquer comparação) e exige contenção dentro de um diretório allowed_roots configurado. A existência é aplicada via uma estratégia de resolução de prefixo existente mais profundo: o caminho alvo ou seu prefixo de geodatabase resolvível no sistema de arquivos deve existir. Isso é o que torna datasets internos ao GDB (…\city.gdb\roads) cidadãos de primeira classe — o contêiner .gdb é validado no sistema de arquivos, enquanto a cauda lógica é restrita a nomes de datasets simples que apenas o arcpy pode resolver.
  • validate_write(raw: str, *, overwrite: bool) — mesma resolução e contenção, mais nomenclatura de dataset legal para ArcGIS e a disciplina de sobrescrita: um alvo existente nunca é substituído a menos que a requisição defina explicitamente overwrite: true.

Qualquer padrão de fuga — sequências de travessia, compartilhamentos UNC, bytes NUL, nomes de dispositivos reservados, alvos fora da raiz — levanta PathSecurityError imediatamente: a requisição é respondida com um frame security estruturado e nenhum subprocesso é orquestrado para ela.


05 — 📦 Instalação

Escolha o caminho de integração que corresponde ao seu caso de uso.

Pré-requisitos

  • Windows com uma instalação licenciada do ArcGIS Pro
  • Python 3.11 ou mais recente para arcgis-mcp-bridge
  • Um diretório gravável existente para ARCGIS_MCP_ALLOWED_ROOTS
  • Um geodatabase de arquivos existente para ARCGIS_MCP_SCRATCH_GDB, a menos que <first allowed root>\scratch.gdb já exista

Caminho A: Instalação PyPI Pura — Recomendado para Usuários Windows

Esta é a configuração mais simples e confiável para Claude Desktop e outros hosts MCP no Windows. A configuração recomendada usa o mesmo arcgis-mcp-env\python.exe para ambas as Camadas A (o servidor MCP) e B (o worker ArcPy).

Escolha um comando de instalação de inicialização:

# Option A — pip
py -m pip install --upgrade arcgis-mcp-bridge

# Option B — uv
uv pip install --upgrade arcgis-mcp-bridge

Em seguida, clone o ambiente Python do ArcGIS Pro:

# The final JSON report contains the target `python_exe` path.
py -m arcgis_mcp.setup_env

Se o comando de console instalado estiver disponível em PATH, arcgis-mcp-setup é equivalente a py -m arcgis_mcp.setup_env.

Copie o valor de python_exe do relatório JSON e atribua-o abaixo:

$ArcGISMcpPython = "C:\...\envs\arcgis-mcp-env\python.exe"

Escolha um comando de instalação:

# Standard installation
& $ArcGISMcpPython -m pip install --upgrade arcgis-mcp-bridge

# OR: include the optional OpenCV-based sketch-to-GIS extension
& $ArcGISMcpPython -m pip install --upgrade "arcgis-mcp-bridge[vision]"

Não execute ambos os comandos; o segundo comando já instala o pacote padrão juntamente com o extra vision.

Use $ArcGISMcpPython como intérprete do servidor MCP e também como ARCPY_PYTHON_PATH. Isso evita que arcgis_mcp, Pydantic, pydantic-core e outras dependências nativas sejam resolvidas a partir de uma instalação Python diferente.

Caminho B: Clone Git e Desenvolvimento Determinístico — Contribuidores GIS

Este caminho mantém a Camada A em um ambiente de desenvolvimento hermético enquanto executa o trabalho ArcPy em um worker arcgis-mcp-env clonado separadamente e licenciado.

# 1. Clone the repository.
git clone https://github.com/muend/arcgis-mcp-bridge.git
cd arcgis-mcp-bridge

# 2. Create the isolated development environment.
#    Do not use --system-site-packages: Layer A must remain independent of arcpy.
uv venv --python "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe"

# 3. Synchronize the committed dependency resolution.
uv sync --locked

Escolha um comando de provisionamento do worker:

# Standard worker
uv run python -m arcgis_mcp.setup_env --install-runtime-deps --project-root .

# OR: worker with the optional OpenCV-based sketch-to-GIS extension
uv run python -m arcgis_mcp.setup_env --with-vision --project-root .

--with-vision implica a instalação de dependências de tempo de execução, portanto os dois comandos não devem ser executados consecutivamente.

O comando de configuração é idempotente, aceita --env-name (padrão: arcgis-mcp-env) e --dry-run, e emite um relatório JSON. Defina ARCGIS_CONDA_EXE se o conda.exe do ArcGIS Pro não estiver disponível em PATH.

Integridade do Intérprete do Worker

A Camada B é iniciada como:

ARCPY_PYTHON_PATH -m arcgis_mcp.worker

O intérprete referenciado por ARCPY_PYTHON_PATH deve ser capaz de importar a pilha completa do worker:

arcgis_mcp
pydantic
pydantic_core
arcpy

Para uma instalação Windows pela primeira vez, use o mesmo arcgis-mcp-env\python.exe para o command do servidor e ARCPY_PYTHON_PATH. Ambientes separados de servidor e worker continuam suportados para desenvolvimento, mas o intérprete do worker deve conter sua própria instalação compatível de arcgis-mcp-bridge e todas as dependências de tempo de execução.

Execute esta verificação preliminar antes de configurar o host MCP:

$ArcGISMcpPython = "C:\...\envs\arcgis-mcp-env\python.exe"

& $ArcGISMcpPython -c "import sys, arcgis_mcp, pydantic, pydantic_core; print(sys.executable); print('Bridge runtime OK')"
& $ArcGISMcpPython -c "import arcpy; print('ArcPy', arcpy.GetInstallInfo().get('Version'))"

Variáveis de Ambiente

VariávelObrigatóriaFinalidade
ARCPY_PYTHON_PATHsimCaminho absoluto para o worker licenciado python.exe; deve resolver arcgis_mcp, Pydantic/pydantic_core e ArcPy
ARCGIS_MCP_ALLOWED_ROOTSnãoRaízes de limite PathGuard separadas por ; no Windows; padrão para ~/Documents/ArcGIS/Projects
ARCGIS_MCP_SCRATCH_GDBnãoWorkspace de saída padrão; se omitido, o padrão é <first allowed root>\scratch.gdb; o GDB já deve existir
ARCGIS_MCP_LOG_FILEnãoCaminho opcional para arquivo de log rotativo
ARCGIS_MCP_LOG_LEVELnãoDEBUG, INFO, WARNING ou ERROR; padrão INFO
ARCGIS_MCP_TOOL_TIMEOUTnãoTempo limite positivo por trabalho em segundos; padrão 600
ARCGIS_MCP_MAX_WORKERSnãoTeto de workers ArcPy concorrentes; padrão 2, protegendo licenças e RAM

Configuração do Claude Desktop

ARCPY_PYTHON_PATH é obrigatório em todas as configurações e deve apontar para o intérprete licenciado relatado pelo comando de configuração.

Substitua cada caminho de espaço reservado abaixo por um caminho existente em sua máquina. O geodatabase temporário já deve existir.

Opção 1: Ambiente PyPI Unificado — Recomendado no Windows

Use o mesmo intérprete para o servidor MCP e o worker ArcPy:

{
  "mcpServers": {
    "arcgis-mcp-bridge": {
      "command": "C:\\...\\envs\\arcgis-mcp-env\\python.exe",
      "args": [
        "-m",
        "arcgis_mcp.server"
      ],
      "env": {
        "ARCPY_PYTHON_PATH": "C:\\...\\envs\\arcgis-mcp-env\\python.exe",
        "ARCGIS_MCP_ALLOWED_ROOTS": "C:\\GIS\\Data;C:\\Workspace",
        "ARCGIS_MCP_SCRATCH_GDB": "C:\\GIS\\Data\\scratch.gdb",
        "ARCGIS_MCP_MAX_WORKERS": "2"
      }
    }
  }
}

Os valores de command e ARCPY_PYTHON_PATH devem ser idênticos nesta configuração. Use o valor de python_exe retornado pelo comando de configuração.

Opção 2: Ambiente de Desenvolvimento Git Local

Use o .venv do repositório para a Camada A e o arcgis-mcp-env provisionado para a Camada B:

{
  "mcpServers": {
    "arcgis-mcp-bridge": {
      "command": "C:\\path\\to\\arcgis-mcp-bridge\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "arcgis_mcp.server"
      ],
      "env": {
        "ARCPY_PYTHON_PATH": "C:\\...\\envs\\arcgis-mcp-env\\python.exe",
        "ARCGIS_MCP_ALLOWED_ROOTS": "C:\\GIS\\Data;C:\\Workspace",
        "ARCGIS_MCP_SCRATCH_GDB": "C:\\GIS\\Data\\scratch.gdb",
        "ARCGIS_MCP_MAX_WORKERS": "2"
      }
    }
  }
}

Esta configuração de ambiente dividido assume que o worker foi provisionado a partir do repositório com um dos comandos de configuração do Caminho B acima. PYTHONPATH não é necessário quando uv sync --locked instalou o projeto no .venv do repositório.

Um comando arcgis-mcp-server resolvido globalmente pode funcionar, mas cria uma implantação de ambiente dividido. Não é recomendado para configuração inicial no Windows, a menos que o ambiente do worker tenha sido provisionado e verificado separadamente.

Após reiniciar o host MCP, chame health_check primeiro. Ele verifica o caminho IPC do servidor para o worker e relata o intérprete do worker selecionado sem importar ArcPy. Em seguida, execute uma ferramenta ArcGIS somente leitura ou o comando de verificação preliminar do ArcPy acima para validar o runtime licenciado.


06 — Solução de Problemas

Worker process exited with code 1

Se o servidor MCP iniciar, mas todas as ferramentas ArcGIS falharem, inspecione o log do servidor para obter o traceback do worker. Causas comuns relacionadas ao ambiente incluem:

ModuleNotFoundError: No module named 'arcgis_mcp'
ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'

Esses erros geralmente significam que o worker está usando uma instalação Python diferente, a ponte não foi instalada no intérprete do worker ou o worker contém uma instalação Pydantic incompleta ou incompatível. A correção recomendada é a configuração de ambiente unificado documentada acima.

Para a configuração unificada recomendada, confirme que ambos os valores são idênticos:

"command": "C:\\...\\envs\\arcgis-mcp-env\\python.exe"
"ARCPY_PYTHON_PATH": "C:\\...\\envs\\arcgis-mcp-env\\python.exe"

Instale ou atualize a ponte dentro desse intérprete exato:

$ArcGISMcpPython = "C:\...\envs\arcgis-mcp-env\python.exe"
& $ArcGISMcpPython -m pip install --upgrade arcgis-mcp-bridge

Verifique o executável selecionado e as dependências da ponte:

& $ArcGISMcpPython -c "import sys, arcgis_mcp, pydantic, pydantic_core; print(sys.executable); print('Bridge runtime OK')"

Em seguida, verifique o ArcPy separadamente:

& $ArcGISMcpPython -c "import arcpy; print('ArcPy', arcpy.GetInstallInfo().get('Version'))"

Se a verificação da ponte ainda falhar especificamente dentro de pydantic_core, reinstale o Pydantic no mesmo ambiente para que o pip restaure a dependência compilada correspondente:

& $ArcGISMcpPython -m pip install --upgrade --force-reinstall --no-cache-dir "pydantic>=2.5,<3"

Reinicie completamente o host MCP após alterar seu ambiente Python ou configuração.

ARCPY_PYTHON_PATH aponta para o executável errado

Um ambiente conda do Windows normalmente coloca seu intérprete na raiz do ambiente:

C:\...\envs\arcgis-mcp-env\python.exe

Não use outra instalação Python global ou um caminho arcgis-mcp-env\Scripts\python.exe inexistente.

Erro de inicialização do geodatabase temporário

O workspace temporário padrão é:

<first allowed root>\scratch.gdb

Ele já deve existir. Crie-o no ArcGIS Pro ou defina ARCGIS_MCP_SCRATCH_GDB para um geodatabase de arquivos existente antes de reiniciar o host MCP.

health_check é bem-sucedido, mas as ferramentas ArcGIS ainda falham

health_check verifica intencionalmente o limite do processo servidor-worker sem importar ArcPy. Um resultado bem-sucedido confirma IPC e seleção de intérprete, mas não prova que o ArcPy ou uma licença de extensão Esri opcional pode ser carregada.

Execute o comando de verificação preliminar do ArcPy acima e inspecione o erro estruturado do worker para obter detalhes de license, geoprocessing ou internal.


07 — Compatibilidade

ArcGIS ProPython EmpacotadoStatus
3.33.11✅ Plataforma de referência
3.43.11⚠ Relatado pela comunidade; verifique com as verificações preliminares
3.1–3.23.9❌ Não suportado pelo requisito atual do pacote Python >=3.11

Somente Windows. O ArcPy requer uma instalação licenciada do ArcGIS Pro no Windows. A Camada A pode ser executada em outras plataformas para desenvolvimento e CI simulado, mas a Camada B requer o ArcGIS Pro.

O pacote da ponte em si requer Python 3.11 ou mais recente. Versões do ArcGIS Pro cujo ambiente Python clonado seja anterior ao 3.11 não podem executar o pacote atual do worker.

08 — Licença

Licença Apache 2.0. Veja LICENSE.