arcgis-mcp-bridge
Servidor MCP seguro y local-first que expone el motor ArcPy de ArcGIS Pro a través de stdio JSON-RPC.
Documentación
arcgis-mcp-bridge
Inicio Rápido
arcgis-mcp-bridge requiere Windows, una instalación licenciada de ArcGIS Pro y
Python 3.11 o superior para el paquete del puente.
Instale el paquete de arranque usando un administrador de paquetes:
# Option A — pip
py -m pip install --upgrade arcgis-mcp-bridge
# Option B — uv
uv pip install --upgrade arcgis-mcp-bridge
Luego clone el entorno de Python de ArcGIS Pro:
# The final JSON report contains the target `python_exe` path.
py -m arcgis_mcp.setup_env
Si el comando de consola instalado está disponible en PATH,
arcgis-mcp-setup es equivalente a py -m arcgis_mcp.setup_env.
Importante para sistemas Windows con múltiples instalaciones de Python: la configuración no está completa hasta que
arcgis-mcp-bridgeesté instalado en elarcgis-mcp-env\python.exeinformado. Use ese mismo intérprete tanto para el servidor MCPcommandcomo paraARCPY_PYTHON_PATH. Esto evita fallos en los trabajadores causados por paquetes o extensiones nativas cargadas desde otro entorno de Python.
Consulte 05 — Instalación para la configuración y el ajuste completos.
100 herramientas de geoprocesamiento declarativas. Dos procesos aislados. Un piso de seguridad.
Un servidor MCP seguro, local-primero y asíncrono que expone el motor ArcPy de ArcGIS Pro a Claude Desktop y otros hosts MCP a través de stdio JSON-RPC.
Informe técnico: Construyendo un Puente MCP Seguro para ArcGIS Pro y ArcPy
| Catálogo | 100 herramientas · 10 verticales |
| Pruebas | 86 pruebas unitarias · 86/86 aprobadas · arcpy simulado |
| Evidencia de ejecución real | Benchmark de humo MCP reproducible de ArcGIS Pro |
| Análisis estático | Ruff limpio · Mypy strict limpio |
| Transporte | JSON-RPC 2.0 sobre stdio |
| Licencia | Apache-2.0 |
¿Por qué arcgis-mcp-bridge?
| Característica | arcgis-mcp-bridge | geo2004/MCP-ArcGISPro | nicogis (C#/.NET) |
|---|---|---|---|
| Herramientas | 100 | ~15 | ~10 |
| Sincronización de dependencias | Determinista (uv.lock) | Imperativa (requirements.txt) | NuGet nativo |
| Transporte | stdio JSON-RPC | IPC basado en archivos | Named Pipes |
| Arquitectura de seguridad | Sandbox PathGuard documentado | No especificado / acceso de host predeterminado | No especificado / acceso de host predeterminado |
| Aislamiento de arcpy | Arquitectura de dos procesos | Ejecución de proceso único | Ejecución en proceso de Add-In |
| CI (Verificación sin conexión) | ✅ Compatible | ❌ No disponible | ❌ No disponible |
| Licencia | Apache-2.0 | MIT | MIT |
Destacado: Pipeline de Boceto → GIS
Límite de parcela dibujado a mano → foto → clase de entidad de geodatabase. Registro de imágenes ORB+RANSAC, segmentación de tinta HSV, confirmación directa en GDB. Sin digitalización manual requerida.
Demostración próximamente. Para previsualizar el pipeline de boceto a GIS:
- Dibuje un polígono en papel y fotográfielo.
- Pídale a Claude: "Usa extract_sketch_to_gis para registrar esta foto contra mi mapa base y confirma el resultado en mi GDB."
- La clase de entidad aparece en ArcGIS Pro — sin digitalización manual.
00 — Ejemplos de Prompts
Después de que health_check tenga éxito, hable con Claude de forma natural:
"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 — Arquitectura Central y Filosofía
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]
Capa A — Servidor Asíncrono Orientado a Eventos (arcgis_mcp/server.py).
FastMCP en el intérprete del puente. Posee el canal stdio, valida cada
solicitud contra contratos congelados de Pydantic v2, despacha el trabajo mediante
asyncio.create_subprocess_exec — el bucle de eventos nunca se bloquea en una
llamada de geoprocesamiento y nunca mantiene un bloqueo de hilo. La Capa A contiene cero
importaciones de arcpy o cv2 a nivel de módulo (verificado por grep en la puerta
de auditoría); no puede fallar en el código nativo de Esri porque nunca lo toca.
Capa B — Trabajador de Aislamiento de ArcPy en Subproceso (arcgis_mcp/worker.py).
Generado por trabajo en el intérprete licenciado de ArcGIS Pro
(ARCPY_PYTHON_PATH). El único lugar donde import arcpy es legal; cv2 se carga
perezosamente dentro de la única herramienta de visión que lo necesita. La salida estándar del trabajador se redirige
a la salida de error al inicio — la única escritura sancionada en la salida estándar es el marco
de resultado final NDJSON, por lo que el parloteo nativo de ArcObjects nunca puede corromper el
canal JSON-RPC. Un fallo nativo termina el trabajador, no el servidor:
el padre convierte una salida distinta de cero en un marco de error estructurado.
Registro declarativo (arcgis_mcp/registry.py).
Cada herramienta es un ToolSpec(nombre, categoría, descripción, modelo_de_entrada, función_trabajadora, destructiva). Una fábrica de proxy genérica materializa los 100
puntos finales MCP del catálogo en la Capa A; un despachador genérico de run_tool los sirve
en la Capa B. El catálogo se expone junto con tres puntos finales centrales:
health_check, list_layers y execute_spatial_tool. Agregar la herramienta
de catálogo #101 toca dos archivos — nunca los bucles de ejecución.
Cada fallo que cruza el límite del proceso se clasifica:
validation · security · license · geoprocessing (con el
stack completo de arcpy.GetMessages()) · internal.
02 — La Matriz del Censo de las 100 Herramientas
| # | Vertical | Herramientas | Capacidades clave |
|---|---|---|---|
| 1 | map_layer_management | 10 | Mapas .aprx, orden de capas/visibilidad/simbología, cámara, guardar |
| 2 | data_management | 22 | Ciclo de vida de FC/GDB, campos, Describe, intercambio Excel/GeoJSON/CSV |
| 3 | geometry_analysis | 23 | Superposiciones, disolver/fusionar, selecciones, uniones, proximidad, fishnet |
| 4 | coordinate_reference_projection | 4 | Definir/proyectar vectorial y ráster impulsado por WKID, consulta de CRS |
| 5 | raster_operations | 15 | Álgebra de mapas, estadísticas zonales, pendiente/aspecto/sombreado de DEM, hidrología |
| 6 | vision_analytics | 1 | Boceto a GIS: registro ORB+RANSAC → tinta HSV → confirmación en GDB |
| 7 | export_layout | 9 | Gráficos PDF/PNG, control de DPI, marcos de mapa, texto/leyenda, tamaño de página |
| 8 | editing_topology | 7 | Reparar/verificar geometría, anexar, deduplicar, diff, validación de topología |
| 9 | network_analysis | 4 | Áreas de servicio, enrutamiento, matriz de costos OD, instalación más cercana |
| 10 | spatial_statistics | 5 | Centro medio, elipse, densidad de kernel, puntos calientes Gi*, I de Moran |
| Total | 100 |
Las licencias de extensión de Esri (Spatial, Network) se gestionan a través de un
administrador de contexto compartido y se devuelven mediante finally en rutas
normales de excepción de Python. El aislamiento del proceso trabajador contiene los fallos nativos al trabajo actual,
mientras que las licencias no disponibles devuelven un marco de error estructurado en lugar de
terminar el servidor MCP.
Piso de Seguridad de Mutación Destructiva
Diez herramientas que mutan el estado se niegan a ejecutarse sin un
token de carga confirm: true explícito. La puerta se activa en el despachador antes
de que se pague la importación de arcpy de 10–30 s, y el registro se niega incluso a
registrar una especificación destructiva cuyo contrato carece de un 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 lleva un piso adicional de canal de expresión: el
expression_type predeterminado es ARCADE (el lenguaje de expresiones sandbox de Esri),
y PYTHON3 — que ejecuta código dentro del trabajador — se
rechaza en el límite del contrato de la Capa A a menos que confirm: true se
proporcione explícitamente. Las expresiones de raster_calculator están restringidas a una
gramática pura de álgebra de mapas (identificadores, números, operadores; sin comillas, sin
acceso dunder) por un validador de contratos.
03 — Puerta de Calidad Automatizada y Pruebas
La evidencia del tiempo de ejecución licenciado se informa por separado en la
tarjeta de método benchmarks/. Su resultado confirmado usa un
trabajador real de ArcGIS Pro y un GDB de scratch dedicado; no se agrupa con el recuento
de pruebas unitarias simuladas ni se presenta como validación de las 100 herramientas de geoprocesamiento.
Alcance, dicho claramente: la puerta automatizada consiste actualmente en
86 pruebas unitarias que abarcan el límite de PathGuard, los contratos de Pydantic,
las invariantes de registro y guardia de ruta del registro genérico, el mapeo del límite de errores
del trabajador y la validación del entorno Settings. Ejercita
los contratos estructurales del catálogo y cada costura crítica de seguridad — no
afirma una validación de múltiples escenarios de las 100 herramientas de geoprocesamiento en sí,
que se ejecutan contra un tiempo de ejecución de ArcGIS licenciado que ningún runner de CI tiene.
Arquitectura de pruebas en memoria. tests/conftest.py inyecta proxies de MagicMock
en sys.modules["arcpy"] y sys.modules["arcpy.sa"] (con
CheckExtension respondiendo a "Available") antes de que cualquier importación de paquete
se resuelva. Todo el conjunto se ejecuta en mucho menos de un segundo, sin instalación de ArcGIS,
sin verificación de licencia y sin tiempo de ejecución de Esri — localmente y en CI
de manera idéntica.
Alcances de prueba.
tests/test_security.pyytests/test_pathguard.py— el cortafuegos del límite de PathGuard, ejercitado contra directorios reales mediante el fixturetmp_pathde pytest: las lecturas/escrituras válidas dentro del sandbox pasan; el traversal (segmentos..), UNC, rutas relativas, de byte NUL, de dispositivo reservado, de longitud excesiva y fuera de la raíz se rechazan; se aplica la disciplina de escritura (reglas de nombres de datasets de ArcGIS, opt-in de sobrescritura).tests/test_contracts.py— aplicación del contrato de Pydantic: especificaciones de parámetros por herramienta, validadores entre campos,frozen/extra="forbid"y la invarianteok-xor-erroren el sobre IPC.tests/test_registry.pyytests/test_registry_guard.py— integridad del flujo del registro más la aplicación genérica deapply_path_guarde invariantes deregister— cada esquema debe ser una subclase deToolInput, cada entrada depath_fieldsdebe referenciar un rol válido, los nombres duplicados se rechazan y cada especificación destructiva debe llevar su puertaconfirm.tests/test_worker.py— mapeo del límite de errores deprocess_frame: cada clase de fallo (validación, seguridad, licencia, geoprocesamiento, interno) se asigna a suWorkerError.kinddistinto.tests/test_config.py— validación deSettings.from_environment: variables requeridas, verificaciones de directorio/archivo, límites de enteros y el fallo rápido ante una geodatabase de scratch faltante.
La importación de efectos secundarios import arcgis_mcp.tools en la prueba del registro es
lo que puebla el catálogo; está fijada con # noqa para que ningún linter la elimine
nuevamente.
Análisis estático. Ruff aplica formato canónico más
E/W/F/I/B/RUF a 88 columnas contra un piso de py311 (el código debe analizarse en
el intérprete compatible más antiguo — Capa B). Los comentarios en turco son
de primera clase: la ı/İ sin punto se registran bajo
allowed-confusables, por lo que la prosa se configura alrededor, nunca se reescribe.
Mypy ejecuta strict = true con el plugin de Pydantic en los 31 archivos
fuente.
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 — Marco de Seguridad (Sandbox PathGuard)
Cada argumento de sistema de archivos en cada contrato declara su rol —
"read", "write" o "read_list" — en el mapeo de path_fields
del modelo. Una función de aplicación compartida usa esas declaraciones en
ambos procesos: la Capa A pre-verifica antes de que se genere un trabajador;
la Capa B re-valida porque nunca confía en su padre.
Dos controles de límite:
validate_read(raw: str)— resuelve completamente la ruta (enlaces simbólicos,.., segmentos relativos colapsados antes de cualquier comparación) y requiere contención dentro de un directorioallowed_rootsconfigurado. La existencia se aplica mediante una estrategia de resolución de prefijo existente más profundo: la ruta objetivo o su prefijo de geodatabase resoluble en el sistema de archivos debe existir. Esto es lo que hace que los datasets internos de GDB (…\city.gdb\roads) sean de primera clase — el contenedor.gdbse valida en el sistema de archivos, mientras que la cola lógica se restringe a nombres de datasets simples que solo arcpy puede resolver.validate_write(raw: str, *, overwrite: bool)— misma resolución y contención, más nombres de datasets legalmente válidos para ArcGIS y la disciplina de sobrescritura: un objetivo existente nunca se reemplaza a menos que la solicitud establezca explícitamenteoverwrite: true.
Cualquier patrón de escape — secuencias de traversal, recursos compartidos UNC, bytes NUL, nombres
de dispositivos reservados, objetivos fuera de la raíz — genera PathSecurityError
inmediatamente: la solicitud se responde con un marco security estructurado
y nunca se orquesta un subproceso para ella.
05 — 📦 Instalación
Elija la ruta de incorporación que coincida con su caso de uso.
Prerrequisitos
- Windows con una instalación con licencia de ArcGIS Pro
- Python 3.11 o más reciente para
arcgis-mcp-bridge - Un directorio existente y escribible para
ARCGIS_MCP_ALLOWED_ROOTS - Una geodatabase de archivos existente para
ARCGIS_MCP_SCRATCH_GDB, a menos que<first allowed root>\scratch.gdbya exista
Ruta A: Instalación pura de PyPI — Recomendada para usuarios de Windows
Esta es la configuración más simple y confiable para Claude Desktop y otros hosts de MCP en Windows. La configuración recomendada utiliza el mismo arcgis-mcp-env\python.exe tanto para la Capa A (el servidor MCP) como para la Capa B (el trabajador de ArcPy).
Elija un comando de instalación de arranque:
# Option A — pip
py -m pip install --upgrade arcgis-mcp-bridge
# Option B — uv
uv pip install --upgrade arcgis-mcp-bridge
Luego clone el entorno de Python de ArcGIS Pro:
# The final JSON report contains the target `python_exe` path.
py -m arcgis_mcp.setup_env
Si el comando de consola instalado está disponible en PATH, arcgis-mcp-setup es equivalente a py -m arcgis_mcp.setup_env.
Copie el valor de python_exe del informe JSON y asígnelo a continuación:
$ArcGISMcpPython = "C:\...\envs\arcgis-mcp-env\python.exe"
Elija un comando de instalación:
# 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]"
No ejecute ambos comandos; el segundo comando ya instala el paquete estándar junto con el extra vision.
Use $ArcGISMcpPython como intérprete del servidor MCP y como ARCPY_PYTHON_PATH. Esto evita que arcgis_mcp, Pydantic, pydantic-core y otras dependencias nativas se resuelvan desde una instalación de Python diferente.
Ruta B: Clonación de Git y desarrollo determinista — Contribuidores de GIS
Esta ruta mantiene la Capa A en un entorno de desarrollo hermético mientras ejecuta el trabajo de ArcPy en un trabajador arcgis-mcp-env clonado por separado y con licencia.
# 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
Elija un comando de aprovisionamiento de trabajador:
# 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 la instalación de dependencias en tiempo de ejecución, por lo que los dos comandos no deben ejecutarse consecutivamente.
El comando de configuración es idempotente, acepta --env-name (predeterminado: arcgis-mcp-env) y --dry-run, y emite un informe JSON. Establezca ARCGIS_CONDA_EXE si el conda.exe de ArcGIS Pro no está disponible en PATH.
Integridad del intérprete del trabajador
La Capa B se lanza como:
ARCPY_PYTHON_PATH -m arcgis_mcp.worker
El intérprete referenciado por ARCPY_PYTHON_PATH debe poder importar la pila completa del trabajador:
arcgis_mcp
pydantic
pydantic_core
arcpy
Para una instalación inicial en Windows, use el mismo arcgis-mcp-env\python.exe para el command del servidor y ARCPY_PYTHON_PATH. Los entornos separados de servidor y trabajador siguen siendo compatibles para el desarrollo, pero el intérprete del trabajador debe contener su propia instalación compatible de arcgis-mcp-bridge y todas las dependencias de tiempo de ejecución.
Ejecute esta verificación previa antes de configurar el 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'))"
Variables de entorno
| Variable | Requerido | Propósito |
|---|---|---|
ARCPY_PYTHON_PATH | sí | Ruta absoluta al trabajador con licencia python.exe; debe resolver arcgis_mcp, Pydantic/pydantic_core y ArcPy |
ARCGIS_MCP_ALLOWED_ROOTS | no | Raíces de límite de PathGuard separadas por ; en Windows; predeterminado a ~/Documents/ArcGIS/Projects |
ARCGIS_MCP_SCRATCH_GDB | no | Espacio de trabajo de salida predeterminado; si se omite, predeterminado a <first allowed root>\scratch.gdb; la GDB ya debe existir |
ARCGIS_MCP_LOG_FILE | no | Ruta opcional de archivo de registro rotativo |
ARCGIS_MCP_LOG_LEVEL | no | DEBUG, INFO, WARNING o ERROR; predeterminado INFO |
ARCGIS_MCP_TOOL_TIMEOUT | no | Tiempo de espera positivo por trabajo en segundos; predeterminado 600 |
ARCGIS_MCP_MAX_WORKERS | no | Límite máximo de trabajadores ArcPy concurrentes; predeterminado 2, protegiendo asientos de licencia y RAM |
Configuración de Claude Desktop
ARCPY_PYTHON_PATH es requerido en cada configuración y debe apuntar al intérprete con licencia informado por el comando de configuración.
Reemplace cada ruta de marcador de posición a continuación con una ruta existente en su máquina. La geodatabase de trabajo (scratch) ya debe existir.
Opción 1: Entorno PyPI unificado — Recomendado en Windows
Use el mismo intérprete para el servidor MCP y el trabajador de 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"
}
}
}
}
Los valores de command y ARCPY_PYTHON_PATH deben ser idénticos en esta configuración. Use el valor de python_exe devuelto por el comando de configuración.
Opción 2: Entorno de desarrollo Git local
Use el .venv del repositorio para la Capa A y el arcgis-mcp-env aprovisionado para la Capa 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 configuración de entorno dividido asume que el trabajador fue aprovisionado desde el repositorio con uno de los comandos de configuración de la Ruta B anteriores. PYTHONPATH no es requerido cuando uv sync --locked ha instalado el proyecto en el .venv del repositorio.
Un comando arcgis-mcp-server resuelto globalmente puede funcionar, pero crea un despliegue de entorno dividido. No se recomienda para la configuración inicial en Windows a menos que el entorno del trabajador haya sido aprovisionado y verificado por separado.
Después de reiniciar el host MCP, llame primero a health_check. Verifica la ruta IPC de servidor a trabajador e informa el intérprete del trabajador seleccionado sin importar ArcPy. Luego ejecute una herramienta de ArcGIS de solo lectura o el comando de verificación previa de ArcPy anterior para validar el tiempo de ejecución con licencia.
06 — Solución de problemas
Worker process exited with code 1
Si el servidor MCP se inicia pero todas las herramientas de ArcGIS fallan, inspeccione el registro del servidor para ver el rastreo del trabajador. Las causas comunes relacionadas con el entorno incluyen:
ModuleNotFoundError: No module named 'arcgis_mcp'
ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'
Estos errores generalmente significan que el trabajador está usando una instalación de Python diferente, el puente no se instaló en el intérprete del trabajador, o el trabajador contiene una instalación de Pydantic incompleta o incompatible. La solución recomendada es la configuración de entorno unificado documentada anteriormente.
Para la configuración unificada recomendada, confirme que ambos valores son idénticos:
"command": "C:\\...\\envs\\arcgis-mcp-env\\python.exe"
"ARCPY_PYTHON_PATH": "C:\\...\\envs\\arcgis-mcp-env\\python.exe"
Instale o actualice el puente dentro de ese intérprete exacto:
$ArcGISMcpPython = "C:\...\envs\arcgis-mcp-env\python.exe"
& $ArcGISMcpPython -m pip install --upgrade arcgis-mcp-bridge
Verifique el ejecutable seleccionado y las dependencias del puente:
& $ArcGISMcpPython -c "import sys, arcgis_mcp, pydantic, pydantic_core; print(sys.executable); print('Bridge runtime OK')"
Luego verifique ArcPy por separado:
& $ArcGISMcpPython -c "import arcpy; print('ArcPy', arcpy.GetInstallInfo().get('Version'))"
Si la verificación del puente aún falla específicamente dentro de pydantic_core, reinstale Pydantic en el mismo entorno para que pip restaure la dependencia compilada correspondiente:
& $ArcGISMcpPython -m pip install --upgrade --force-reinstall --no-cache-dir "pydantic>=2.5,<3"
Reinicie completamente el host MCP después de cambiar su entorno de Python o configuración.
ARCPY_PYTHON_PATH apunta al ejecutable incorrecto
Un entorno conda de Windows normalmente coloca su intérprete en la raíz del entorno:
C:\...\envs\arcgis-mcp-env\python.exe
No use otra instalación global de Python ni una ruta arcgis-mcp-env\Scripts\python.exe inexistente.
Error de inicio de la geodatabase de trabajo (scratch)
El espacio de trabajo de scratch predeterminado es:
<first allowed root>\scratch.gdb
Debe existir ya. Créelo en ArcGIS Pro o establezca ARCGIS_MCP_SCRATCH_GDB a una geodatabase de archivos existente antes de reiniciar el host MCP.
health_check tiene éxito pero las herramientas de ArcGIS aún fallan
health_check verifica intencionalmente el límite del proceso de servidor a trabajador sin importar ArcPy. Un resultado exitoso confirma la selección de IPC e intérprete, pero no prueba que ArcPy o una licencia de extensión opcional de Esri puedan cargarse.
Ejecute el comando de verificación previa de ArcPy anterior e inspeccione el error estructurado del trabajador para obtener detalles de license, geoprocessing o internal.
07 — Compatibilidad
| ArcGIS Pro | Python incluido | Estado |
|---|---|---|
| 3.3 | 3.11 | ✅ Plataforma de referencia |
| 3.4 | 3.11 | ⚠ Reportado por la comunidad; verifique con las verificaciones previas |
| 3.1–3.2 | 3.9 | ❌ No compatible con el requisito actual del paquete Python >=3.11 |
Solo Windows. ArcPy requiere una instalación con licencia de ArcGIS Pro en Windows. La Capa A puede ejecutarse en otras plataformas para desarrollo y CI simulado, pero la Capa B requiere ArcGIS Pro.
El paquete del puente en sí requiere Python 3.11 o más reciente. Las versiones de ArcGIS Pro cuyo entorno de Python clonado sea anterior a 3.11 no pueden ejecutar el paquete de trabajador actual.
08 — Licencia
Licencia Apache 2.0. Consulte LICENSE.