Ultimaps MCP

oficial

Convierte datos en imágenes de mapas: mapas coropléticos, de categorías y de pines del mundo, países, estados, condados y códigos ZIP.

¿Qué puedes hacer con Ultimaps MCP?

  • Render choropleth maps — Solicita un mapa coloreado por valores numéricos y obtén un PNG clasificado con leyenda y etiquetas.
  • Resaltar regiones específicas — Solicita un mapa con estados, condados o códigos ZIP nombrados y rellenos con colores personalizados, como "Dónde operamos".
  • Agregar marcadores de ubicación — Traza marcadores de latitud/longitud con títulos, colores y posiciones de etiqueta personalizados en cualquier mapa.
  • Validar datos del mapa — Ejecuta una prueba en seco para verificar qué claves de región coinciden, obtén correcciones de errores tipográficos y consulta los valores de corte antes de renderizar.
  • Listar mapas disponibles — Pregunta cuáles de los 187 mapas (países, estados, condados, áreas ZIP) están disponibles mediante list_maps.
  • Obtener identificadores de región — Consulta las claves o nombres exactos de las regiones de un mapa para usarlos en tu solicitud de renderizado mediante get_map_regions.

Documentación

API de Mapas de Imagen

Datos de entrada, imagen de mapa de salida. Una URL genera un mapa de coropletas, de categorías o de pines de cualquier país, estado, condado o área de código postal como PNG. Sin cuenta, sin clave, sin librería de mapas en tu stack.

https://api.ultimaps.com/v1/renders?spec=%7B%22mapId%22%3A%22united-states%22%2C%22regions%22%3A%7B%22US-CA%22%3A%22%231D4ED8%22%2C%22US-TX%22%3A%22%23F59E0B%22%2C%22New%20York%22%3A%22%2310B981%22%7D%2C%22title%22%3A%7B%22text%22%3A%22Where%20we%20operate%22%7D%2C%22style%22%3A%7B%22labels%22%3A%7B%22show%22%3Atrue%7D%7D%2C%22output%22%3A%7B%22width%22%3A1200%7D%7D

Esa es toda la solicitud. El parámetro spec es JSON codificado en URL, y la respuesta es la propia imagen.

US map rendered by the Ultimaps API, every state labelled, with California, Texas and New York filled in

Renderizado en vivo por la URL de la izquierda, almacenado en caché durante 24 horas.

Se integra en cualquier lugar

La URL devuelve la imagen, por lo que funciona en una etiqueta <img>, un README, una página de Notion o una celda de Google Sheets.

GET o POST

GET acepta todas las funciones pero limita la especificación a 6KB, y siempre renderiza PNG sin clave de hasta 1600px. Envía el mismo JSON a POST /v1/renders para un payload más grande, una clave para un lienzo más grande, o una clave Pro para SVG.

Editable después

Cada imagen lleva un encabezado Link que abre el renderizado en Ultimaps Studio como un mapa real. Los renderizados sin clave se abren para cualquier persona con el enlace. Un renderizado con clave se abre solo para alguien conectado al espacio de trabajo de esa clave.

Recetario

Seis solicitudes completas. Cada una está validada contra el esquema de solicitudes en vivo en CI, así que puedes copiarlas tal cual, cambiar el mapId y los valores, y listo. Cada imagen es la respuesta que devolvió la solicitud a su lado, con marca de agua incluida, en el nivel gratuito sin clave.

Resaltar algunas regiones

La solicitud útil más simple. Nombras regiones y les das un color a cada una. Todo lo demás toma el valor predeterminado del mapa.

{
  "mapId": "united-states",
  "regions": {
    "US-CA": "#1D4ED8",
    "US-TX": "#F59E0B",
    "New York": "#10B981"
  },
  "title": {
    "text": "Where we operate"
  },
  "style": {
    "labels": {
      "show": true
    }
  },
  "output": {
    "width": 1200
  }
}
curl https://api.ultimaps.com/v1/renders \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "regions": {
      "US-CA": "#1D4ED8",
      "US-TX": "#F59E0B",
      "New York": "#10B981"
    },
    "title": {
      "text": "Where we operate"
    },
    "style": {
      "labels": {
        "show": true
      }
    },
    "output": {
      "width": 1200
    }
  }' \
  -o map.png

Map of the United States titled "Where we operate", with California blue, Texas orange and New York green, every other state in the theme default and labelled with its abbreviation

Mapa de los Estados Unidos titulado "Where we operate", con California en azul, Texas en naranja y Nueva York en verde, cada otro estado en el tema predeterminado y etiquetado con su abreviatura

  • Las claves de región son flexibles. "US-CA", "California" y "CA" llegan a la misma región.
  • Los colores son cadenas hexadecimales. Las regiones que omitas mantienen el tema predeterminado.
  • "style.labels.show" imprime el nombre de cada región. No hay forma de etiquetar solo las regiones que coloreaste.

Abrir este renderizado en una nueva pestaña

Coropletas a partir de números

Dale a la API valores brutos y ella elige las clases, los colores y la leyenda. Esta es la solicitud que la mayoría de la gente quiere.

{
  "mapId": "united-states",
  "choropleth": {
    "values": {
      "California": 39.5,
      "Texas": 30.5,
      "Florida": 22.6,
      "New York": 19.6,
      "Pennsylvania": 13,
      "Illinois": 12.5,
      "Ohio": 11.8,
      "Georgia": 11,
      "North Carolina": 10.8,
      "Michigan": 10
    },
    "type": "groups",
    "palette": "blues",
    "classes": 5,
    "method": "quantile",
    "noDataColor": "#EEEEEE",
    "format": {
      "decimals": 1,
      "suffix": "M"
    }
  },
  "legend": {
    "position": "left"
  },
  "title": {
    "text": "Population by state, 2025"
  },
  "style": {
    "labels": {
      "show": true,
      "content": "value"
    }
  },
  "output": {
    "width": 1600,
    "scale": 1
  }
}
curl https://api.ultimaps.com/v1/renders \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "choropleth": {
      "values": {
        "California": 39.5,
        "Texas": 30.5,
        "Florida": 22.6,
        "New York": 19.6,
        "Pennsylvania": 13,
        "Illinois": 12.5,
        "Ohio": 11.8,
        "Georgia": 11,
        "North Carolina": 10.8,
        "Michigan": 10
      },
      "type": "groups",
      "palette": "blues",
      "classes": 5,
      "method": "quantile",
      "noDataColor": "#EEEEEE",
      "format": {
        "decimals": 1,
        "suffix": "M"
      }
    },
    "legend": {
      "position": "left"
    },
    "title": {
      "text": "Population by state, 2025"
    },
    "style": {
      "labels": {
        "show": true,
        "content": "value"
      }
    },
    "output": {
      "width": 1600,
      "scale": 1
    }
  }' \
  -o map.png

Choropleth map of US state population in 2025, shaded across five blue quantile classes with the break labels in a legend and each value printed in millions on its state

Mapa de coropletas de la población estatal de EE. UU. en 2025, sombreado en cinco clases de cuantiles azules con las etiquetas de corte en una leyenda y cada valor impreso en millones sobre su estado

  • Omite "type", "classes" y "method" y la API los detecta a partir de tus datos.
  • "palette" acepta cualquiera de las 26 paletas integradas. "noDataColor" pinta las regiones que tus datos no cubren.
  • "format" controla las etiquetas de corte en la leyenda, no el formato de imagen.

Abrir este renderizado en una nueva pestaña

Pines

Marcadores de latitud y longitud. Los pines se combinan con todo lo demás, así que puedes colocarlos sobre una coropleta o sobre un mapa simple.

La salida SVG necesita una clave Pro. Omite "format" para PNG en cualquier nivel.

{
  "mapId": "united-states",
  "style": {
    "theme": "paper",
    "defaultRegionColor": "#F1F5F9"
  },
  "locations": [
    {
      "title": "Austin HQ",
      "lat": 30.2672,
      "lon": -97.7431,
      "color": "#1D4ED8"
    },
    {
      "title": "Denver",
      "lat": 39.7392,
      "lon": -104.9903,
      "labelPosition": "right"
    },
    {
      "title": "Seattle",
      "lat": 47.6062,
      "lon": -122.3321
    }
  ],
  "output": {
    "width": 1400,
    "format": "svg"
  }
}
curl https://api.ultimaps.com/v1/renders \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "style": {
      "theme": "paper",
      "defaultRegionColor": "#F1F5F9"
    },
    "locations": [
      {
        "title": "Austin HQ",
        "lat": 30.2672,
        "lon": -97.7431,
        "color": "#1D4ED8"
      },
      {
        "title": "Denver",
        "lat": 39.7392,
        "lon": -104.9903,
        "labelPosition": "right"
      },
      {
        "title": "Seattle",
        "lat": 47.6062,
        "lon": -122.3321
      }
    ],
    "output": {
      "width": 1400,
      "format": "svg"
    }
  }' \
  -o map.svg

Map of the United States on a pale theme with labelled pins on Austin, Denver and Seattle, the Austin pin in blue and the other two in the default red

Mostrado como PNG — la solicitud pide SVG. Mismo mapa de cualquier manera.

  • Cada pin tiene su propio color, lado de etiqueta y visibilidad de etiqueta.
  • Los pines se colocan por coordenadas. La API no geocodifica direcciones.

SVG necesita una clave Pro. La ruta GET sin clave devuelve solo PNG.

Verifica una solicitud antes de renderizarla

La ejecución en seco devuelve JSON en lugar de una imagen: qué claves coincidieron, cuáles no, qué se corrigió y cómo quedaron los cortes. No consume cuota.

{
  "mapId": "united-states",
  "choropleth": {
    "values": {
      "Calfornia": 39.5,
      "Texas": 30.5,
      "Florida": 22.6,
      "Atlantis": 1
    }
  },
  "dryRun": true
}
curl https://api.ultimaps.com/v1/renders \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "choropleth": {
      "values": {
        "Calfornia": 39.5,
        "Texas": 30.5,
        "Florida": 22.6,
        "Atlantis": 1
      }
    },
    "dryRun": true
  }'
  • El error tipográfico "Calfornia" se devuelve corregido a California. "Atlantis" se devuelve sin coincidencia.
  • Usa esto mientras conectas tus datos, luego desactiva "dryRun".

Abrir el JSON de ejecución en seco que esto devuelve

Fallar con claves incorrectas en lugar de adivinar

Por defecto, las claves sin coincidencia se omiten. Configura "onUnmatched" en "error" y la API devuelve un 400 con sugerencias por clave, que es lo que quieres en un trabajo programado.

{
  "mapId": "united-states",
  "choropleth": {
    "values": {
      "California": 39.5,
      "Texassss": 30.5,
      "Atlantis": 1
    }
  },
  "onUnmatched": "error"
}
curl https://api.ultimaps.com/v1/renders \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "choropleth": {
      "values": {
        "California": 39.5,
        "Texassss": 30.5,
        "Atlantis": 1
      }
    },
    "onUnmatched": "error"
  }' \
  -o map.png
  • El 400 es un documento de problema RFC 9457. Ramifica en "code", no en el mensaje.

Abrir el 400 que esto devuelve

Referencia completa de campos, incluyendo las 26 paletas, los cuatro métodos de corte, temas, capas adicionales y formato de números: la referencia de la API.

Mapas que puedes renderizar

187 mapas, desde mapas mundiales y continentales hasta condados de EE. UU. y áreas de códigos postales. El mapId es el slug del mapa en este sitio, y nunca cambia una vez publicado.

united-states-canada france-departments india europe canada united-states united-arab-emirates united-kingdom-counties world

Claves y límites

Una clave aumenta los límites de velocidad y el tamaño del lienzo. Una clave Pro elimina la marca de agua y desbloquea SVG. Crea una en Studio bajo Workspace, luego API. Las claves se muestran una sola vez.

curl https://api.ultimaps.com/v1/renders \
  -H "Authorization: Bearer $ULTIMAPS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mapId": "united-states",
    "choropleth": {
      "values": {
        "California": 39.5,
        "Texas": 30.5,
        "Florida": 22.6,
        "New York": 19.6,
        "Pennsylvania": 13,
        "Illinois": 12.5,
        "Ohio": 11.8,
        "Georgia": 11,
        "North Carolina": 10.8,
        "Michigan": 10
      },
      "type": "groups",
      "palette": "blues",
      "classes": 5,
      "method": "quantile",
      "noDataColor": "#EEEEEE",
      "format": {
        "decimals": 1,
        "suffix": "M"
      }
    },
    "legend": {
      "position": "left"
    },
    "title": {
      "text": "Population by state, 2025"
    },
    "style": {
      "labels": {
        "show": true,
        "content": "value"
      }
    },
    "output": {
      "width": 1600,
      "scale": 1
    }
  }' \
  -o map.png
NivelAutenticaciónFormatosAtribuciónLienzoLímite de velocidadMensual
Sin claveningunaPNGmarca de agua completa≤ 1600 px, escala 130/hora por IP, ráfaga 5/minsin tope mensual
Clave gratuitaBearer um_live_…PNGmarca de agua completa≤ 1600 px, escala ≤ 210/min, 50/día500 renderizados
Clave ProBearer um_live_…PNG, SVGninguna≤ 4000 px, escala ≤ 430/min, 1,000/día5,000 renderizados

La cuota mensual es un estado de facturación y devuelve 402, nunca reintentable. Los límites de velocidad y concurrencia devuelven 429 con Retry-After. Las ejecuciones en seco nunca consumen cuota. Consulta GET /v1/usage para ver tu situación.

Desde Claude, Codex o cualquier cliente MCP

Pide un mapa en el chat y la imagen vuelve en la conversación. @ultimaps/mcp es esta API como herramientas MCP sobre stdio, sin cuenta: render_map, list_maps y get_map_regions.

claude mcp add ultimaps -- npx -y @ultimaps/mcp
codex mcp add ultimaps -- npx -y @ultimaps/mcp

Los clientes que leen un archivo de configuración toman los mismos dos valores. Esto es claude_desktop_config.json.

{
  "mcpServers": {
    "ultimaps": {
      "command": "npx",
      "args": ["-y", "@ultimaps/mcp"],
      "env": { "ULTIMAPS_API_KEY": "" }
    }
  }
}

Deja ULTIMAPS_API_KEY vacío para el nivel sin clave, mismos límites que la tabla anterior, o complétalo para la cuota y salida de tu plan.

No en v1

v1 renderiza imágenes. No hace nada de esto:

  • Publicar mapas interactivos o incrustables
  • Salida PDF
  • Geocodificar direcciones a coordenadas
  • Leer la geometría detrás de un mapa

Si necesitas una de estas cosas, dinos cuál y te avisaremos cuando exista. Lo que la gente pide aquí es lo que construimos después.

Referencia

Referencia de la API

Cada endpoint y campo, en vivo contra la API en ejecución.

Códigos de error

Cada código, su estado HTTP y si se debe reintentar.

openapi.json

Contrato OpenAPI 3.1. Genera un cliente a partir de él.

llms-full.txt

Toda la API como un solo archivo de texto plano para agentes de codificación.

@ultimaps/mcp

El servidor MCP. Tres herramientas, stdio, sin necesidad de cuenta.

Preguntas frecuentes

¿Hay una API de coropletas?

Sí, esa es la función principal de esta API. Publica un conjunto de claves de región y números y obtienes un mapa clasificado, coloreado y con leyenda como PNG. La API elige el método de corte, el número de clases y la paleta a partir de tus datos a menos que los configures tú mismo.

¿Cómo genero una imagen de mapa desde una URL?

Pon tu JSON de solicitud en el parámetro de consulta spec de GET /v1/renders y la respuesta es el propio PNG. Esa URL funciona en una etiqueta img, una imagen de markdown, un bloque de imagen de Notion o una fórmula IMAGE() de Google Sheets, sin clave y sin cuenta.

¿Puedo usar la API de imágenes de mapas sin una clave de API?

Sí. El nivel sin clave renderiza PNG de hasta 1600 por 1600 píxeles a 30 renderizados por hora por IP, con una marca de agua de Ultimaps. Una clave aumenta los límites, y una clave Pro elimina la marca de agua y añade SVG.

¿Es esta una API de mapas de condados? ¿Puedo obtener límites de condados de ella?

Renderiza mapas de condados como imágenes, incluyendo los 3,143 condados de EE. UU., pero no sirve geometría de límites. Si necesitas GeoJSON o shapefiles para procesarlos tú mismo, usa Census TIGER o Natural Earth. Esta API devuelve imágenes.

¿Geocodifica direcciones?

No. Los pines se colocan por latitud y longitud, y los colores de región se emparejan por clave o nombre de región. La geocodificación es una función de Studio, no de la API.

¿Hay un servidor MCP?

Sí. Instala @ultimaps/mcp en Claude Code, Codex, Claude Desktop, Cursor, VS Code o cualquier otro cliente MCP y expone render_map, list_maps y get_map_regions sobre stdio. Se ejecuta en Node.js 20 o superior, no necesita cuenta, y lee ULTIMAPS_API_KEY cuando configuras una.

¿Puedo obtener SVG en lugar de PNG?

Sí, con una clave Pro. Configura output.format a svg. Las claves sin clave y gratuitas devuelven PNG.

¿Qué pasa si mis nombres de región no coinciden?

Las claves se emparejan sin distinguir mayúsculas contra códigos de región, títulos, alias comunes y títulos normalizados, así que US-CA, California y CA llegan a la misma región, y los errores tipográficos inequívocos se corrigen y reportan. Por defecto, las claves sin coincidencia se omiten y se reportan en un encabezado de respuesta. Configura onUnmatched a error y la solicitud falla con sugerencias por clave en su lugar.

¿Cómo pongo un mapa en un README de GitHub?

Usa la URL GET sin clave como imagen de markdown. GitHub la proxifica a través de Camo, y como la API envía un encabezado de caché de 24 horas, la imagen se actualiza diariamente en lugar de congelarse.

¿Puedo renderizar un mapa en el servidor?

Sí. Cada renderizado ocurre en nuestros servidores, así que no hay navegador, ni Chrome sin cabeza, ni librería de mapas en tu stack. Una sola llamada HTTP devuelve la imagen terminada.