arcgis-mcp-bridge
Servidor MCP seguro e local-first que expõe o mecanismo ArcPy do ArcGIS Pro via stdio JSON-RPC.
Documentação
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-bridgeseja instalado noarcgis-mcp-env\python.exerelatado. Use esse mesmo interpretador tanto para o servidor MCPcommandquanto paraARCPY_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álogo | 100 ferramentas · 10 verticais |
| Testes | 86 testes unitários · 86/86 passando · arcpy simulado |
| Evidência de runtime real | Benchmark de fumaça MCP reproduzível do ArcGIS Pro |
| Análise estática | Ruff limpo · Mypy strict limpo |
| Transporte | JSON-RPC 2.0 sobre stdio |
| Licença | Apache-2.0 |
Por que arcgis-mcp-bridge?
| Recurso | arcgis-mcp-bridge | geo2004/MCP-ArcGISPro | nicogis (C#/.NET) |
|---|---|---|---|
| Ferramentas | 100 | ~15 | ~10 |
| Sincronização de Dependências | Determinística (uv.lock) | Imperativa (requirements.txt) | NuGet nativo |
| Transporte | stdio JSON-RPC | IPC baseado em arquivos | Named Pipes |
| Arquitetura de Segurança | Sandbox PathGuard documentado | Nenhuma especificada / acesso padrão do host | Nenhuma especificada / acesso padrão do host |
| Isolamento do arcpy | Arquitetura de dois processos | Execução em processo único | Execução em processo de Add-In |
| CI (Verificação Offline) | ✅ Suportado | ❌ Não disponível | ❌ Não disponível |
| Licença | Apache-2.0 | MIT | MIT |
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:
- Desenhe um polígono no papel e fotografe-o.
- Peça ao Claude: "Use extract_sketch_to_gis para registrar esta foto contra meu mapa base e commitar o resultado no meu GDB."
- 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
| # | Vertical | Ferramentas | Capacidades-chave |
|---|---|---|---|
| 1 | map_layer_management | 10 | Mapas .aprx, ordem/visibilidade/simbologia de camadas, câmera, salvar |
| 2 | data_management | 22 | Ciclo de vida de FC/GDB, campos, Describe, troca Excel/GeoJSON/CSV |
| 3 | geometry_analysis | 23 | Sobreposições, dissolver/mesclar, seleções, junções, proximidade, fishnet |
| 4 | coordinate_reference_projection | 4 | Definir/projetar orientado por WKID para vetor + raster, consulta de CRS |
| 5 | raster_operations | 15 | Álgebra de mapas, estatísticas zonais, declive/aspecto/sombreamento de DEM, hidrologia |
| 6 | vision_analytics | 1 | Esboço-para-GIS: registro ORB+RANSAC → tinta HSV → commit no GDB |
| 7 | export_layout | 9 | Gráficos PDF/PNG, controle de DPI, molduras de mapa, texto/legenda, tamanho de página |
| 8 | editing_topology | 7 | Reparar/verificar geometria, anexar, deduplicar, diff, validação de topologia |
| 9 | network_analysis | 4 | Áreas de serviço, roteamento, matriz de custo OD, instalação mais próxima |
| 10 | spatial_statistics | 5 | Centro médio, elipse, densidade de kernel, pontos quentes Gi*, I de Moran |
| Total | 100 |
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.pyetests/test_pathguard.py— o firewall de limite do PathGuard, exercitado contra diretórios reais via fixturetmp_pathdo 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 invarianteok-xor-errorno envelope IPC.tests/test_registry.pyetests/test_registry_guard.py— integridade do fluxo de registro mais aplicação genérica deapply_path_guarde invariantesregister— cada esquema deve ser uma subclasse deToolInput, cada entrada depath_fieldsdeve referenciar um papel válido, nomes duplicados são rejeitados e toda especificação destrutiva deve carregar seu gateconfirm.tests/test_worker.py— mapeamento do limite de erroprocess_frame: cada classe de falha (validação, segurança, licença, geoprocessamento, interna) mapeia para seuWorkerError.kinddistinto.tests/test_config.py— validação deSettings.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órioallowed_rootsconfigurado. 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 explicitamenteoverwrite: 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.gdbjá 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ável | Obrigatória | Finalidade |
|---|---|---|
ARCPY_PYTHON_PATH | sim | Caminho absoluto para o worker licenciado python.exe; deve resolver arcgis_mcp, Pydantic/pydantic_core e ArcPy |
ARCGIS_MCP_ALLOWED_ROOTS | não | Raízes de limite PathGuard separadas por ; no Windows; padrão para ~/Documents/ArcGIS/Projects |
ARCGIS_MCP_SCRATCH_GDB | não | Workspace de saída padrão; se omitido, o padrão é <first allowed root>\scratch.gdb; o GDB já deve existir |
ARCGIS_MCP_LOG_FILE | não | Caminho opcional para arquivo de log rotativo |
ARCGIS_MCP_LOG_LEVEL | não | DEBUG, INFO, WARNING ou ERROR; padrão INFO |
ARCGIS_MCP_TOOL_TIMEOUT | não | Tempo limite positivo por trabalho em segundos; padrão 600 |
ARCGIS_MCP_MAX_WORKERS | não | Teto 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 Pro | Python Empacotado | Status |
|---|---|---|
| 3.3 | 3.11 | ✅ Plataforma de referência |
| 3.4 | 3.11 | ⚠ Relatado pela comunidade; verifique com as verificações preliminares |
| 3.1–3.2 | 3.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.