arcmap-mcp
Servidor MCP para ArcMap 10.5–10.8: un asistente de IA conduce una sesión viva de ArcMap. 66 herramientas, instalación de un clic, 100% local.
Install / Use
claude mcp add pedralcg -- npx -y github:pedralcg/arcmap-mcpIf 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
Development & EngineeringSupported Platforms
Tags
Our assessment of arcmap-mcp
arcmap-mcp scores 84/100 on our quality scale, 2821st of 4,652 Development & Engineering skills we index.
Its MCP Server is 30 KB long, well organised into 24 sections with 7 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 3 days ago, so arcmap-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
arcmap-mcp compared with similar skills
All 4 of these similar skills score higher than arcmap-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| arcmap-mcp (this skill)by pedralcg | 84 | 10 | 3d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 107.4k | today | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 107.4k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.5k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 68.6k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install arcmap-mcp?
- Run
claude mcp add pedralcg -- npx -y github:pedralcg/arcmap-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does arcmap-mcp 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 arcmap-mcp safe to use?
- It is MIT-licensed and scores 97/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 arcmap-mcp still maintained?
- The repository was last updated 3 days ago, so arcmap-mcp is actively maintained.
Skill content
View source on GitHubarcmap-mcp
Servidor MCP local para ArcMap 10.5–10.8 (validado en 10.5). 100% abierto, libre y soberano. Permite a un agente IA (Claude Code, Claude Desktop, Gemini CLI, Antigravity, OpenCode…) conducir una sesión viva de ArcMap — listar capas, ejecutar arcpy, encuadrar, simbolizar, exportar series de planos y ver el canvas — igual que hacen los MCP de QGIS y ArcGIS Pro, pero para ArcMap legacy (que ninguno de esos cubre).
Arquitectura (sesión viva, dos piezas)
Cliente IA (Claude Code / Desktop / Gemini / Antigravity / OpenCode)
│ protocolo MCP (stdio)
▼
arcmap_mcp_server.py ← servidor MCP externo (Python 3 + FastMCP): los schemas
│ de las 78 herramientas y el contrato con el cliente
│ socket TCP local 127.0.0.1:27179
▼
Add-in .NET (C#) ← DENTRO de ArcMap: TcpListener + ArcObjects nativo
├─ hilo STA de ArcMap ← capas, layout, exports, render (con cancelación ESC)
└─ subprocess Python 2.7 ← arcpy out-of-process sobre un snapshot del .mxd
│ (execute_arcpy, Data Driven Pages, análisis ambiental)
▼
ArcMap ABIERTO y vivo → canvas, capas, layout, exportación
El patrón de dos piezas —servidor MCP externo + puente dentro del GIS hablando un protocolo trivial por socket local— está tomado del MCP de QGIS (open source), el estándar de facto de la categoría. Crédito donde corresponde: este proyecto copia ese diseño y lo lleva a ArcMap.
Las dos piezas son una decisión de diseño, no una provisionalidad:
- El add-in .NET corre dentro de ArcMap y toca el documento vivo vía ArcObjects (COM gestionado por el CLR — estable, sin interop manual). Atiende un comando por conexión en el puerto 27179; lo que muta el mapa se ejecuta en el hilo STA de ArcMap (el único válido para ArcObjects), y lo que es arcpy puro se delega a un proceso Python 2.7 aparte que trabaja sobre una copia temporal del documento — así un análisis largo no congela la interfaz de ArcMap.
- El servidor externo expone las
@mcp.tool()por stdio — el transporte que soportan todos los clientes MCP — y reenvía cada comando por TCP local. Servir HTTP desde el propio add-in se evaluó y se descartó: no hay SDK MCP para .NET Framework 4.5,HttpListenerexige reservas URL ACL con permisos de administrador (rompería la instalación de un clic) y los clientes stdio necesitarían un proxy igualmente.
Estructura del repo
arcmap-mcp/
├── src/ arcmap_mcp_server.py ← servidor MCP (regístralo en tu cliente IA)
│ auditor_mxd.py · exportar_mxd.py ← procesos hijo Py2.7 de audit_folder y export_mxd_lote
├── addin/ ArcmapMcp.AddIn/ ← código C# del add-in (+ runner.py embebido)
│ ArcmapMcp.Disco/ ← arcmap-mcp-disco.exe: modo disco de edit_mxd_lote y compare_mxd
│ dist/arcmap-mcp.esriaddin ← add-in listo para instalar (lleva dentro el .exe)
│ build.ps1 ← build sin Visual Studio (dotnet CLI)
├── docs/ INSTALL.md · TOOLS.md · ROADMAP.md · img/ (capturas)
├── tests/ test_client_protocol.py ← tests automáticos (no necesitan ArcMap)
│ test_runner_py27.py ← el runner y el auditor bajo Python 2.7, sin arcpy
│ regresion_sesion_viva.py ← barrido manual del catálogo (ArcMap vivo)
│ regresion_ddp.py ← barrido del atlas (Data Driven Pages, solo lectura)
│ regresion_disco.py ← edit_mxd_lote contra copias de un .mxd real (modo disco)
│ sonda_puente.py ← sonda manual de un comando suelto
├── INSTALAR.bat · ACTUALIZAR.bat · install.ps1 · LEEME.txt ← instalación de un clic
├── start-arcmap-mcp.ps1 · empaquetar.ps1 · requirements.txt · CHANGELOG.md · LICENSE · README.md
| Pieza | Dónde corre | Qué es |
|---|---|---|
| addin/dist/arcmap-mcp.esriaddin | dentro de ArcMap (.NET/CLR) | El add-in: socket + ArcObjects + subprocess arcpy |
| src/arcmap_mcp_server.py | externo (Python 3) | Servidor MCP que registras en tu cliente IA |
| start-arcmap-mcp.ps1 | Windows | Lanzador: prepara venv, vigila el túnel, hace ping |
| arcmap-mcp-disco.exe | externo, fuera de ArcMap | Modo disco: aplica (edit_mxd_lote) o lee (compare_mxd) un .mxd con los mismos handlers del add-in, sin abrirlo en ArcMap. Viaja dentro del .esriaddin: no hay que instalar nada aparte |
arcmap-mcp se instala en
C:\mcp\arcmap-mcp, extraigas el ZIP donde lo extraigas: el instalador copia ahí el paquete y registra esa ruta en tus clientes IA, así que la carpeta donde descomprimiste el ZIP se puede borrar después. Para otra ubicación,INSTALAR.bat -Destino D:\otra\carpeta(fuera de carpetas sincronizadas tipo Drive/Dropbox). Si clonas con git, se usa la carpeta del clon.
Herramientas MCP
78 herramientas sobre ArcMap 10.5 (ver docs/TOOLS.md para el catálogo completo con
firmas, ejemplos y los matices de ejecución de cada grupo).
Qué significa «probado», que conviene decirlo con precisión:
tests/regresion_sesion_viva.pyhace 480 comprobaciones contra una sesión de ArcMap real y cubre 56 de las 78 tools, con sus casos de error. 🔴 Modifica el documento abierto (añade capas, cambia simbología, lanza geoprocesos): se lanza contra un mxd de pruebas, nunca contra un proyecto.tests/regresion_ddp.pycubre las tres tools del atlas (Data Driven Pages) con 14 comprobaciones, y es de solo lectura sobre el documento: necesita un mxd con atlas habilitado, que en la práctica es siempre uno de producción. Exporta aC:\temp.tests/regresion_disco.pypruebaedit_mxd_lotecontra copias de un .mxd real con 50 comprobaciones, cada una con su control (lo guardado se lee con arcpy en otro proceso; una ruta relativa que se pierde al guardar tiene que salir como no verificada).- Otros 199 tests corren sin ArcMap (protocolo, argumentos, lectores de .mxd y de Word, runner Python 2.7, instalador).
export_mxd_loteno pasa por el puente y no está en la regresión: se probó sobre planos reales, con salida idéntica byte a byte a la exportada a mano.- El resto de tools se ha ejercitado a mano en trabajo real a lo largo de las versiones —series de planos de decenas de páginas, análisis ambiental— pero no están en la regresión automática, así que un fallo suyo no lo caza nadie hasta que aparece.
Esto no es una salvedad de manual. El 2026-09-21, al cubrir geodatabases por primera vez
y al lanzar la regresión dos veces en la misma sesión, salió un defecto que llevaba ahí
desde versiones anteriores: las workspace factories dejaban de poder instanciarse y con ellas
add_layer, describe_data y list_feature_classes, hasta cerrar ArcMap. Está corregido en
la 2.12.0 y ya cubierto. Lo que falta por cubrir sigue siendo el sitio donde esperar la
próxima sorpresa: si usas una versión anterior a la 2.12.0, ese fallo está latente.
-
Sin ArcMap abierto (leen del disco, no pasan por el puente):
describe_mxd(versión declarada de un .mxd sin abrirlo, milisegundos) ·audit_folder(inventario de TODOS los .mxd de una carpeta: versión, capas, fuentes rotas y definition queries, abriendo cada documento en un proceso aparte con timeout) ·get_ole_tables(las tablas de Word incrustadas en un .mxd, leídas del fichero). -
Esenciales:
ping·get_arcmap_info·list_layers·zoom_to_layer·export_pdf·refresh·execute_arcpy(código arcpy arbitrario sobre un snapshot del documento — ver matiz endocs/TOOLS.md). -
Series de planos (Data Driven Pages):
list_ddp·export_ddp·list_layout_elements·set_text_element·goto_ddp_page·set_definition_query·set_layer_visibility·export_view_png·export_jpg·export_mxd_lote(exporta una lista de .mxd del disco, un proceso por documento: la vía para series). -
Capas y datos:
select_by_attribute·clear_selection·get_unique_values·count_features·list_fields·get_layer_info·get_layer_features·add_layer(también servicios WMS, y capas que no entran en la leyenda) ·remove_layer·apply_symbology_from_layer·set_scale. -
Tabla de contenidos y leyenda:
add_group(capa de grupo vacía) ·move_layer(recolocar una capa o grupo sin quitarla) ·rename_layer(renombrarla sin sustituirla) ·set_legend_item(qué enseña la entrada de leyenda de una capa, sin cambiarle el aspecto; quitarla o moverla) ·set_legend(tamaño de letra, columnas y encajar la leyenda en un recuadro sin escalarla). -
Simbología:
set_graduated_symbology(rangos, capas de entidades) ·set_unique_values_symbology(categorías por valores únicos) ·set_raster_symbology(ráster clasificado, estirado o por valores únicos — NDVI, FCC, P95, pendientes, y máscaras categóricas con valores transparentes) ·set_single_symbology(un solo símbolo con los colores pedidos) ·edit_symbol(cambia solo lo pedido de la simbología que ya tiene la capa) ·list_style_symbols/apply_style_symbol(símbolos de tus estilos.stylepor nombre) ·apply_symbology_from_layer(.lyr plantilla). -
Etiquetas:
set_labels(expresión, tamaño, color y halo; devuelve cómo quedó cada clase y si el mapa usa Maplex o el motor estándar). -
Marcadores espaciales:
get_bookmarks·add_bookmark·remove_bookmark·goto_bookmark. -
Geoprocesamiento y mantenimiento:
run_geoprocessing·save_mxd·save_mxd_as·open_mxd·list_broken_data_sources·repair_data_source. -
Visualización y catálogo:
get_canvas_screenshot(imagen INLINE, el agente ve el mapa; cancelable con ESC) ·describe_data·list_data_frames/set_active_df·set_extent·get_workspace/set_workspace·list_feature_classes/list_tables/list_rasters. -
Análisis ambiental y teledetección (requieren Spatial/3D Analyst; corren fuera del proceso de ArcMap → no congelan la GUI):
raster_index(índices espectrales con nombre: NDVI, GNDVI, NDRE, NDWI, MNDWI, NDMI, NBR, SAVI, EVI — con mapeo de bandas Sentinel-2 / Landsat) ·hydrology(cuencas, red de drenaje, inundación) ·contours·topographic_profile·least_cost_path·calculate_geometry.
La filosofía es híbrida: execute_arcpy es la base universal (cualquier análisis
de ArcMap 10.x se puede expresar con él) y los wrappers existen solo para lo
repetitivo y de alto valor.
Guía rápida: tu primer plano en 5 pasos
Con el add-in instalado y el servidor registrado en tu cliente IA, esto es el camino corto de "no he tocado nada" a "tengo un PNG". Pídeselo al agente en lenguaje normal; entre paréntesis va la herramienta que acabará usando.
- Abre ArcMap y pulsa Iniciar en la barra arcmap-mcp. Es el único paso manual, y sin él no hay puente.
- «¿Está vivo el puente?» (
ping). Debe devolver la versión del add-in, el documento abierto y el número de capas. Si dicePUENTE CAIDO, vuelve al paso 1; si diceocupado, ArcMap está trabajando y te dice en qué y desde cuándo. - «Añade esta capa y dime qué hay dentro» (
add_layer,list_layers,list_fields). A partir de aquí el agente ya conoce tus datos y sus campos. - «Simbolízala y encuádrala» (
set_graduated_symbologypara rangos,set_unique_values_symbologypara categorías,set_raster_symbologysi es ráster; luegozoom_to_layer). - «Expórtame la vista» (
export_view_png, oexport_pdfpara el layout). Si quieres ver el resultado sin salir del chat,get_canvas_screenshotdevuelve la imagen en línea.
Dos atajos que ahorran disgustos desde el primer día. Si vas a trabajar sobre .mxd que
no conoces, pasa antes describe_mxd o audit_folder: leen los ficheros sin
abrirlos, así que te d
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
107.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
107.4kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
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.
ai-job-search
68.6kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
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.
