Make maps of real places in ChatGPT and Claude

Updated 23 October 2026

To make a map in ChatGPT or Claude, add the Ultimaps MCP server by its URL, https://api.ultimaps.com/mcp, then ask for a map. It draws countries, states, counties and US ZIP code areas from real boundary data and returns a finished map with a legend. You don't need an account, a sign-in or an API key.

The map shows up in the conversation with a button that opens it in Ultimaps Studio, the full map editor. There you can edit it by hand, export it, or publish it as an interactive map to share or embed.

MCP server URL
https://api.ultimaps.com/mcp
Your AI assistant

Ask for a map

Ultimaps
Real maps from the Ultimaps MCP server, for one request and one follow-up.

What you can make

Paste a list or a table into the chat, say which map you want, and you get a map back. Labels such as rep names or “Available / Limited / Sold out” become a category map, with your labels in the legend. Numbers become a choropleth, with color breaks picked from the data.

US states colored by five sales reps, with a legend and pins on Los Angeles, Chicago and New York City
Sales territories by rep, with office pins
Choropleth of European countries by GDP per capita in 2024, with each value printed on the map and a color scale legend
Numbers become a choropleth, values on the map
US states colored by 2024 presidential election winner on a dark theme, with a two-item legend
Labels become a category map, dark theme
  • Sales territories. Color a state's counties by rep, label every county and show open territory in gray.
  • Service areas. Shade the counties you serve as core, extended or opening soon, and pin your offices.
  • Status maps. Show which states are available, limited or sold out for franchises, dealers or programs.
  • Footprints. Color the countries where you have offices, distributors or planned launches.
  • Data maps. Turn a table of numbers per state or country into a choropleth, with each value printed on the map.
  • Outline maps. A clean map of a country, state or county set with names, ready to color or print.

Every map can have a title, a legend with its own heading, region labels (names, values or both), pins and one of 10 themes. Region names are matched even with typos or as codes (US-CA, California and CA all work), and anything that doesn't match is reported back, so nothing is dropped silently.

Coverage. More than 180 base maps: the world, every continent, the states and provinces of major countries, the counties of every US state, and US ZIP code areas. ZIP areas are Census ZCTAs, which approximate USPS ZIP codes but are not identical to them. See every map id on the map list.

Every border comes from real geographic boundary data, not from an AI image model, so the regions are where they really are and the same request gives the same map.

Keep going in Ultimaps Studio. Each map comes with an edit link. Open it to recolor regions by hand, move labels or change the legend, export the map for slides and print, or publish it as an interactive map with tooltips to share by link or embed on a website. Publishing needs a free Ultimaps account.

Add Ultimaps to Claude

Ultimaps gives Claude a tool that draws maps of real places: countries, states, counties and US ZIP code areas, colored by your data or by category, with a legend, a title and pins. You add it by URL as a custom connector. There is nothing to install and no sign-in.

In claude.ai and the Claude desktop app

  1. Go to Customize > Connectors.
  2. Click Add custom connector.
  3. Name it Ultimaps and enter the server URL: https://api.ultimaps.com/mcp
  4. If the dialog asks for authentication, choose No sign-in. Leave the OAuth fields empty.
  5. Click Add.
  6. In a chat, click +, open Connectors and make sure Ultimaps is on.

The Free plan allows one custom connector. On a Team or Enterprise plan, an Owner adds the connector under Organization settings > Connectors (Add, then Custom), and members then find it under Customize > Connectors. Claude's own guide: Add a connector that isn't in the directory.

First prompt to try

Color Ohio counties by sales rep. Lucas, Wood and Hancock are Maya, and Cuyahoga, Summit and Stark are Sam. Label every county.

What you get back. The map appears in the conversation in an Ultimaps card, with the matching notes, an Edit in Ultimaps Studio button and an Open image button. Claude also gets a short report: which region names were auto-corrected, which didn't match, and the color plan it used, so it can fix a miss on the next try. Ask for changes in plain words (“make Summit Maya's too and add a title”) and Claude renders the map again. Claude may ask you to allow the tool before the first render.

Then, in Studio. Click Edit in Ultimaps Studio to open the same map in the editor. Edit it by hand, export it, or publish it as an interactive map to share or embed. Publishing needs a free account.

Limits. PNG up to 1600 px wide with a small Ultimaps credit, up to 30 maps an hour (5 a minute) per conversation. Each image link is public to anyone who has it and expires after 30 days. Details in Limits, privacy and API keys.

In Claude Code

One command adds the hosted server. The second form sends an API key for your plan's quota and output.

Claude Code
claude mcp add --transport http ultimaps https://api.ultimaps.com/mcp
# with a key:
claude mcp add --transport http ultimaps https://api.ultimaps.com/mcp \
  --header "Authorization: Bearer um_live_…"

Claude Desktop, running on your computer

You can also run the server on your own computer with the @ultimaps/mcp package (Node.js 20 or newer). Requests then come from your own IP address, and every image is also saved to a file you can open. Download ultimaps-<version>.mcpb from the latest release and open it to install it in one click, or add this to claude_desktop_config.json.

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

Leave ULTIMAPS_API_KEY empty for the keyless tier, or fill it in for your plan's quota and output.

Add Ultimaps to ChatGPT

Ultimaps gives ChatGPT a tool that draws maps of real places: countries, states, counties and US ZIP code areas, colored by your data or by category, with a legend, a title and pins. You add it by URL as a custom MCP server in developer mode. There is nothing to install and no sign-in.

Developer mode and custom MCP servers depend on your ChatGPT plan and workspace settings. OpenAI's help article Developer mode and MCP apps in ChatGPT lists who can use them and where to turn developer mode on.

  1. Turn on Developer mode in ChatGPT's settings, as OpenAI's article describes.
  2. Go to ChatGPT Plugins, select the + button, then Add custom MCP server.
  3. Name it Ultimaps and, under Connection, enter the URL: https://api.ultimaps.com/mcp
  4. For authentication, choose no authentication. Ultimaps doesn't need an account or OAuth.
  5. Review the warning, select I understand and want to continue, then Create as a plugin.
  6. Start a new conversation, type @ in the prompt box and select Ultimaps. Turn it on in each conversation where you want maps.

OpenAI's own steps: Connect and test your plugin.

First prompt to try

Map population in millions: Brazil 212, Colombia 53, Argentina 46, Peru 34, Venezuela 28, Chile 20. Show values on the map.

What you get back. The map appears in the conversation in an Ultimaps card, with the matching notes, an Edit in Ultimaps Studio button and an Open image button. ChatGPT also gets a short report: which region names were auto-corrected, which didn't match, and the color plan it used, so it can fix a miss on the next try. Ask for changes in plain words (“make Chile its own color and add a title”) and ChatGPT renders the map again. ChatGPT may ask you to allow the tool before the first render.

Then, in Studio. Click Edit in Ultimaps Studio to open the same map in the editor. Edit it by hand, export it, or publish it as an interactive map to share or embed. Publishing needs a free account.

Limits. PNG up to 1600 px wide with a small Ultimaps credit, up to 30 maps an hour (5 a minute) per conversation. Each image link is public to anyone who has it and expires after 30 days. Details in Limits, privacy and API keys.

Using Codex? It runs the package on your computer. See Claude Code and Codex.

Cursor, VS Code and other MCP clients

Any client that connects to remote MCP servers takes the same URL, https://api.ultimaps.com/mcp. Clients with a config file take the URL alone. This is Cursor's mcp.json.

mcp.json
{
  "mcpServers": {
    "ultimaps": { "url": "https://api.ultimaps.com/mcp" }
  }
}

If your client can send headers, add Authorization: Bearer <key> for your plan's quota and output. For VS Code, Windsurf and other clients, see the install notes for every client.

Run it on your computer

@ultimaps/mcp runs the same three tools locally over stdio. Requests come from your own IP address, and every image is also saved to a file you can open. It needs Node.js 20 or newer.

Claude Code and Codex

Claude Code and Codex
claude mcp add ultimaps -- npx -y @ultimaps/mcp
codex mcp add ultimaps -- npx -y @ultimaps/mcp

Clients that read a config file (Claude Desktop, Cursor, VS Code) take the same command and arguments. The claude_desktop_config.json version is in Claude Desktop, running on your computer. Without a key, the local package uses the keyless tier: PNG up to 1600 px with attribution, 30 renders an hour. Set ULTIMAPS_API_KEY for your plan's quota and output.

Tools

The server has three tools. You don't call them yourself: your assistant picks them from your request.

ToolWhat it does
render_mapDraws the map: a choropleth (numbers), categories (labels) or explicit colors, plus pins, a title, a legend, region labels, a theme and extra layers. Returns the image, an image link, an edit link into Ultimaps Studio and a report of corrections and unmatched names.
list_mapsLists the base maps, searchable by name or region type ("counties", "germany").
get_map_regionsLists one map's region keys and names, 200 per page.

list_maps and get_map_regions only read the catalog. render_map stores each rendered image at a link, which is why your assistant may ask before running it. Under the tools is the map image API, and the full request format is in the API reference and as a plain function-calling definition.

Example prompts

Each prompt carries its own data, so the first map is right without the assistant looking anything up. Copy one into a chat with Ultimaps turned on.

Sales territories

Color Ohio counties by sales rep. Lucas, Wood and Hancock are Maya, and Cuyahoga, Summit and Stark are Sam. Label every county.

Service areas

Shade the Pennsylvania counties we serve: Allegheny, Butler, Beaver and Washington are core, Westmoreland and Armstrong are extended. Pin our Pittsburgh office.

Status map

Make a franchise status map of US states: Texas, Florida and Ohio are available, Georgia and Arizona are limited, California and New York are sold out. Title it "Franchise availability".

Footprint

World map of our footprint: offices in the US, UK and Germany, distributors in Brazil, Japan and Australia, launching in Mexico and India in 2027. Use the dark theme.

Data map

Map population in millions: Brazil 212, Colombia 53, Argentina 46, Peru 34, Venezuela 28, Chile 20. Show values on the map.

ZIP codes

Highlight these ZIP codes on a map of Colorado: 80202, 80203, 80205, 80206, 80218.

For more on territory maps, see sales territory mapping. For ZIP maps without a chat, see ZIP code maps.

Limits, privacy and API keys

Without a key (ChatGPT, claude.ai and any client that can't send headers)

  • PNG up to 1600 px wide, with a small Ultimaps credit on the image.
  • Up to 30 maps an hour and 5 a minute per conversation. Dry runs count.
  • SVG and PDF aren't returned in chat. Export them from Ultimaps Studio through the edit link.

With a key. Clients that can send headers, such as Claude Code, take Authorization: Bearer <key> and get your plan's quota and output. Keys are created in Studio under Workspace > API, and the map image API page lists each plan's limits.

Pricing. The server, the keyless tier and Studio editing are free. Ultimaps Pro removes the credit and adds high-resolution PNG, SVG and PDF export, and a one-time purchase removes the credit from a single map.

Image and edit links. Every map comes with an image link that can't be guessed. Anyone who has the link can open the image, and the file is deleted after 30 days. The edit link rebuilds the map in Studio from the stored request for 30 days. Keep figures you don't want shared out of maps you make this way.

What it doesn't do

  • Street maps, neighborhoods, satellite imagery, routing or directions.
  • Custom or hand-drawn boundaries, or two base maps in one image.
  • Address lookup. Pins are placed by latitude and longitude, which your assistant can supply for well-known places.
  • Fictional places. It draws only real geography.

Privacy. Each render request is logged with its content, which is deleted after 30 days. The IP address and user agent are deleted after 90 days. On the hosted server, the IP address is usually your AI provider's server, and the conversation identifier the assistant sends is kept only as a hash, in memory, to share rate limits fairly. Ultimaps doesn't sell this data or use it for advertising. What your assistant stores is governed by its own privacy policy. Full details: privacy policy, Ultimaps API and MCP Server section. Terms: terms of service.

Support. Email [email protected] and include the render id from the map's result.

Frequently Asked Questions

Yes, once you connect a map tool. With the Ultimaps MCP server added, ChatGPT calls a tool that draws the map from real boundary data, so county and state borders are where they really are. Turn on developer mode, add https://api.ultimaps.com/mcp as a custom MCP server with no authentication, then select Ultimaps in a conversation and ask for a map. Paste your data in the same message: rep names by county, statuses by state or numbers by country. ChatGPT gets back a PNG with a legend, shown in an Ultimaps card with an Edit in Ultimaps Studio button, plus a report of any names that didn't match. You don't need an Ultimaps account. Which ChatGPT plans include developer mode is up to OpenAI, so check their help article before you start. The steps are in the ChatGPT section above.

Yes. Add Ultimaps as a custom connector and Claude can draw maps of countries, states, counties and US ZIP code areas from real boundary data. In claude.ai or the Claude desktop app, go to Customize > Connectors, click Add custom connector, enter https://api.ultimaps.com/mcp and choose No sign-in. The Free plan allows one custom connector. In Claude Code, run claude mcp add --transport http ultimaps https://api.ultimaps.com/mcp. Then ask for a map in plain words and paste your data, for example a list of counties and the sales rep for each. The map appears in the chat with a legend and an Edit in Ultimaps Studio button, where you can edit it by hand, export it or publish it as an interactive map. You don't need an Ultimaps account to make maps. Publishing needs a free one.

Add it as a custom MCP server. First turn on developer mode in ChatGPT's settings, as described in OpenAI's help article on developer mode and MCP apps. Then go to ChatGPT Plugins, select the plus button and choose Add custom MCP server. Name it Ultimaps, enter https://api.ultimaps.com/mcp as the connection URL and choose no authentication. Confirm the warning and select Create as a plugin. In a new conversation, type @ and pick Ultimaps, then ask for a map. Turn it on in each conversation where you want maps. ChatGPT's menus have moved several times in 2026, so if a label differs, follow OpenAI's current steps, linked in the ChatGPT section above.

No. Ultimaps draws each map from real geographic boundary data, the same base maps used in Ultimaps Studio. Your assistant only writes the request: which map, which regions, which colors or numbers, and a title. Ultimaps then renders the borders, labels and legend itself. That is why county and state shapes are correct, why names on the map are spelled right, and why the same request gives the same map every time. If a region name in your data doesn't match, the tool reports it with suggestions instead of guessing, so you can fix it before you share the map. It draws only real places: ask for a fantasy kingdom and it won't invent borders.

More than 180 base maps. They include the world, every continent divided by countries, the states, provinces or departments of major countries, the counties of every US state (including a map of all US counties), and US ZIP code areas for every state, DC and Puerto Rico, plus a national 3-digit ZIP prefix map. ZIP areas are Census ZCTAs, which approximate USPS ZIP codes but are not exactly the same. Some maps add extra layers such as cities, roads or rivers. You can ask for a map by name ("Texas counties", "Germany states") and the assistant finds the right one. City neighborhoods, street maps and custom boundaries aren't covered.

No. The hosted server works without an account, a sign-in or a key. Without a key you get PNG maps up to 1600 px wide with a small Ultimaps credit, up to 30 maps an hour and 5 a minute per conversation. Each map comes with an image link that works for 30 days. Clients that can send headers, such as Claude Code, can add an Ultimaps API key as an Authorization: Bearer header to use their plan's quota and output. ChatGPT and claude.ai don't let you set that header in the usual setup, so they use the keyless tier. You need a free Ultimaps account only to publish a map as an interactive map from Studio. The local npm package has the same keyless limits, counted per IP address instead of per conversation.

Your assistant decides what goes into each map request, based on your conversation. Ultimaps logs each request with its content, the map and the outcome. The content is deleted after 30 days, and the IP address and user agent after 90 days. Each rendered image is stored at a link that can't be guessed, and anyone who has that link can open it until the file is deleted after 30 days, so keep confidential figures out of maps you don't want shared. On the hosted server, Ultimaps sees a conversation identifier from the assistant and keeps only a hash of it, in memory, to share rate limits. Ultimaps doesn't sell this data or use it for advertising. What ChatGPT or Claude keep is covered by their own policies. The full text is in the Ultimaps API and MCP Server section of the privacy policy.

MCP (Model Context Protocol) is an open standard that lets AI assistants call outside tools. The Ultimaps MCP server gives an assistant three tools: render_map draws the map, list_maps finds a base map and get_map_regions lists a map's region names. It colors administrative regions by data or category. It doesn't do directions, routing, place search or street maps. It works in any client that supports MCP. Clients that connect to remote servers, such as Cursor, take the URL https://api.ultimaps.com/mcp in their mcp.json. Clients that run local commands, such as VS Code, Claude Code, Codex and Claude Desktop, can run the @ultimaps/mcp npm package instead, which needs Node.js 20 or newer. The install notes for every client are on GitHub.