ai.latlong/map-mcp
name:ai.latlong/map-mcp
Turn CSV or Excel data into styled choropleth and categorical maps of India from plain language.
- transport:
- remote
- credential class:
- self-provisionable
Owner verification
Not yet verified. Verifying proves you control this server and is free, permanently — it never changes a published score.
Start verification →Tools
- create_uploadshallow
Start a client-direct file upload for large CSV/XLSX files. Returns a presigned put_url and an opaque upload_id. Steps: 1) call create_upload with file_name, 2) HTTP PUT the raw file bytes to put_url using the returned headers, 3) pass upload_id to question_to_map, parse_file, or render_map. Preferred over file_base64 for anything beyond a few KB — the bytes go straight to storage instead of riding inside the tool call.
- geocodeshallow
Geocode addresses from an uploaded CSV or XLSX file into latitude/longitude. Pass a file_key from upload_file. Column selection: if you know it, pass address_column (or address_columns for several). Otherwise the server asks the geo-match service to detect it. When the answer is not unambiguous — several address columns, a weak match, or only structured columns like District/State/PIN that must be combined — the response is status=clarification_required with candidates and ready-to-fire guidance actions. Present the choice to the user and re-call with their answer; never invent a column name. The result overwrites the same file_key as a new version, plus a small preview, not the full rows. Pass that file_key to question_to_map to map the coordinates, or hand the user file_url (a signed download link, when present) to fetch the file directly.
- get_capabilitiesshallow
Return the server's capability matrix (supported map types, geo types, output formats, and classification methods).
- process_uploadshallow
Validate and ingest a file uploaded via create_upload. Runs size, virus, and content-safety checks, parses CSV/XLSX/JSON, and returns an upload_id plus advisory intent (no raw rows). IMPORTANT: to make a map, call question_to_map and pass this upload_id — and pass the SAME upload_id on every follow-up question about this file (e.g. 'now show it by district'). The response includes a ready-to-use next_actions entry with upload_id already filled in; prefer firing that. Rejects infected or injected files (nothing is kept in that case).
- question_to_mapshallow
Render a geographic map from a question. TO MAP A FILE (CSV/XLSX/JSON) — you MUST upload it first, in this order: 1) call create_upload {file_name} -> returns { upload_id, put_url } 2) HTTP PUT the raw file bytes to put_url (use the returned headers) 3) call process_upload {upload_id, ...your intent} -> validates the file 4) call question_to_map {question, upload_id, geo_column?, value_column?} Do NOT call question_to_map with a file path or the raw bytes for an uploaded document — pass the upload_id from step 1. Reuse the SAME upload_id on every follow-up about that file (e.g. 'now show it by district'). Ways to provide data: 1. Uploaded document (preferred): {"question": "show total by pincode", "upload_id": "<from create_upload>", "geo_column": "pincode", "value_column": "total"} 2. Question only (DB): {"question": "ola sales in delhi ncr"} 3. CSV inline (small only): {"question": "show sales", "csv": "state,sales\nMaharashtra,500", "geo_column": "state", "value_column": "sales"} INTENT (all optional; if you know them, pass them — your values win over auto-detection): geo_column, value_column, geo_level (state|district|pincode|rto|city|ac|pc), map_type, state_hint. If you omit upload_id, the server falls back to your most recent upload; passing it is more reliable. If value_column is 'total' and absent from the data, all numeric columns are summed automatically. Supported geo types: state, district, pincode, rto, city, ac, pc.
- reverse_geocodeshallow
Turn latitude/longitude coordinates in an uploaded CSV or XLSX into addresses. Pass a file_key from upload_file. Column selection: pass latitude_column and longitude_column, or latlong_column for a single combined column, or coordinate_pairs for several sets. Otherwise the server detects them. When the answer is not unambiguous — several coordinate columns, a weak match, coordinates outside the supported region, or coarse whole-number values — the response is status=clarification_required. Present the choice to the user and re-call with their answer. Results are written back into the uploaded file: the response carries file_key, a signed file_url, and a small preview. Each pair adds address, pincode, landmark and status columns.
- upload_fileshallow
Upload a CSV or XLSX file for server-side ingestion under policy (auth, size cap, malware scan, injected-intent scan) and receive a file_key. This is the first step before calling question_to_map with your own data. Step 1: Call upload_file with file_name, file_size, and question. The response contains a signed upload_url and a curl command — run the curl command to POST the file bytes. The curl response contains file_key, columns, a row preview, and optionally 'intent' (geo-match service detected geo_column, geo_level, value_column, map_type, confidence) and 'guidance' (a ready-to-fire question_to_map action with all detected parameters pre-filled). Forward the intent fields into question_to_map to skip auto-detection and render immediately. For multi-sheet XLSX: the curl response is 'sheet_selection_required' with a file_key and sheets list. Pass file_key and sheet to question_to_map (or any other tool that accepts file_key) — do not call upload_file again. After upload, pass the returned file_key to question_to_map to render a map from the full dataset. The file_key is reusable — for additional questions on the same file, pass the same file_key again without re-uploading. When the upload response includes 'guidance', use its next_actions directly for a zero-round-trip render.
Embed this server’s score
Tool count and median score across every tool in this server’s corpus — honest in a way a single cherry-picked tool’s badge wouldn’t be.
[](https://vouch.tools/servers/282b3b0c-52c7-4e1c-8326-a294522ddcff)