MCP Server

ExplorersMap

net.explorersmap/explorersmap
Maps & Location Travel & Hospitality Public & reachable MCP 2026-07-28

What this MCP does

Tracks visited countries, regions, and places, organizes trips, records visit dates, and provides travel statistics, badges, and rankings.

add_country
Add country
Mark a country as visited. Accepts an ISO-2 code or the country name. Idempotent.
Idempotent
Input schema
{'type': 'object', 'required': ['country'], 'properties': {'notes': {'type': 'string', 'description': 'Optional private note.'}, 'country': {'type': 'string', 'description': 'ISO-2 code or name, e.g. "PT" or "Portugal".'}}}
add_place
Add place
Mark a specific place as visited — a monument, museum, airport, city, park and so on. Pass an id from search_places.
Idempotent
Input schema
{'type': 'object', 'required': ['place'], 'properties': {'notes': {'type': 'string', 'description': 'Optional private note kept with this visit. Only the account owner sees it.'}, 'place': {'type': 'string', 'description': 'A place id from search_places, e.g. "monument:eiffel-tower-fr".'}}}
add_places_to_trip
Add places to trip
Attach places you have already marked to a trip. Pass visit ids from list_visited.
Input schema
{'type': 'object', 'required': ['tripId', 'visitIds'], 'properties': {'tripId': {'type': 'string', 'description': 'From list_trips.'}, 'visitIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Visit ids, e.g. "place:museum:Q1954384". Countries and regions are not attachable.'}}}
add_region
Add region
Mark a state, province or département as visited. Accepts a region id (FR-95) or a name plus country. Idempotent.
Idempotent
Input schema
{'type': 'object', 'required': ['region'], 'properties': {'level': {'enum': ['passed', 'visited', 'slept', 'lived'], 'type': 'string', 'description': 'How well you know it. Default visited.'}, 'notes': {'type': 'string', 'description': 'Optional private note kept with this visit. Only the account owner sees it.'}, 'region': {'type': 'string', 'description': 'Region id like "FR-95", or a name like "Gironde".'}, 'country': {'type': 'string', 'description': 'Country, to disambiguate a name used in several places.'}}}
create_trip
Create trip
Create a trip with a title and date range. Private by default.
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'What the trip is called, e.g. "Iberia 2026".'}, 'dateTo': {'type': 'string', 'description': 'Last day of the trip, YYYY-MM-DD.'}, 'dateFrom': {'type': 'string', 'description': 'First day of the trip, YYYY-MM-DD.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': 'Default private.'}}}
delete_trip
Delete trip
Permanently delete a trip. The places in it stay marked on the map — only the grouping is removed. Requires the exact trip id and confirm:true.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['tripId', 'confirm'], 'properties': {'tripId': {'type': 'string', 'description': 'The exact id from list_trips. Titles and labels are not accepted.'}, 'confirm': {'type': 'boolean', 'description': 'Must be true. Ask the user first — this cannot be undone from here.'}}}
get_badges
Get badges
Achievements this account has earned, newest first.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
get_rank
Get rank
This account's position on a global leaderboard, with the value it was ranked on and how many explorers are ranked in total. Boards: overall score, renown, countries, regions or places. Use it to answer "where do I rank" or to compare progress over time.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'board': {'enum': ['score', 'renown', 'countries', 'regions', 'places'], 'type': 'string', 'description': 'Which board. Default score.'}}}
get_stats
Get stats
A summary of this account's map: how many countries, territories, regions and places are marked, the Explorer score, and the share of the world explored. Answers "how many countries have I been to", and is the quickest way to see where the user stands before suggesting what to add next.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
list_trips
List trips
The user's trips, newest first. Paged: check `total` against `returned` and follow `nextOffset` to read the rest.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Rows per page, default 100, max 200.'}, 'offset': {'type': 'number', 'description': 'Skip this many. Use nextOffset from the previous page.'}}}
list_visited
List visited
Everything marked as visited, newest first. Paged: check `total` against `returned` and follow `nextOffset` to read the rest. Filter by type to keep the response small.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['country', 'region', 'place'], 'type': 'string', 'description': 'Which kind to list.'}, 'limit': {'type': 'number', 'description': 'Rows per page, default 100, max 500.'}, 'offset': {'type': 'number', 'description': 'Skip this many. Use nextOffset from the previous page.'}}}
remove_country
Remove country
Unmark a country, undoing add_country. Accepts an ISO-2 code or the country name. Unmarking something that was never marked is not an error. This lowers the user's score, so confirm before removing anything they did not name.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['country'], 'properties': {'country': {'type': 'string', 'description': 'ISO-2 code or name.'}}}
remove_place
Remove place
Unmark a specific place such as a monument, museum, airport or city, undoing add_place. Accepts a place id from search_places or the exact place name. This lowers the user's score, so confirm before removing anything they did not name.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['place'], 'properties': {'place': {'type': 'string', 'description': 'A place id, or its exact name.'}}}
remove_region
Remove region
Unmark a state, province or département, undoing add_region. Accepts a region id like "FR-95", or a region name plus its country. Unmarking something that was never marked is not an error. This lowers the user's score, so confirm before removing anything they did not name.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['region'], 'properties': {'region': {'type': 'string', 'description': 'Region id like "FR-95", or a region name like "Gironde".'}, 'country': {'type': 'string', 'description': 'Country of that region, to disambiguate a name used in several countries.'}}}
search_places
Search places
Find places in the 90,000-entry database — cities, airports, monuments, museums, parks, heritage sites and more. Use this to get an id before add_place. Matching is on part of the name, so short beats formal: "Louvre" finds it, "Musee du Louvre" may not. Types overlap (the Louvre is filed under heritage, not museum), so a type filter narrows rather than decides — anything it excludes comes back under otherTypes.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'type': {'type': 'string', 'description': 'Prefer a type, e.g. "monument", "museum", "airport", "city", "heritage", "park". Other-type matches still come back, under otherTypes.'}, 'limit': {'type': 'number', 'description': 'Max results, default 10.'}, 'query': {'type': 'string', 'description': 'Part of the name.'}, 'country': {'type': 'string', 'description': 'Narrow by country (ISO-2 or name).'}}}
set_trip_visibility
Set trip visibility
Publish a trip on the user's public profile, or take it private again. Private trips are visible only to the account owner. Always ask before making a trip public, since it then shows the trip's title, dates and places to anyone.
Idempotent
Input schema
{'type': 'object', 'required': ['tripId', 'visibility'], 'properties': {'tripId': {'type': 'string', 'description': 'From list_trips.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': "public shows the trip on the user's profile; private hides it again."}}}
set_visit_dates
Set visit dates
Set the travel dates on something already marked as visited. Does not change score.
Idempotent
Input schema
{'type': 'object', 'required': ['visitId', 'dates'], 'properties': {'dates': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISO dates, YYYY-MM-DD.'}, 'visitId': {'type': 'string', 'description': 'The id from list_visited, e.g. "PT" or "reg:FR-95".'}}}
whoami
Whoami
Who the connected ExplorersMap account belongs to, and how much of today's fair-use quota is left.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Changed
create_trip
Sept. 22, 2026, 2:40 a.m.
Changed
set_visit_dates
Sept. 22, 2026, 2:40 a.m.
Changed
delete_trip
Sept. 22, 2026, 2:40 a.m.
Changed
set_trip_visibility
Sept. 22, 2026, 2:40 a.m.
Changed
add_places_to_trip
Sept. 22, 2026, 2:40 a.m.
Changed
get_rank
Sept. 22, 2026, 2:40 a.m.
Changed
list_trips
Sept. 22, 2026, 2:40 a.m.
Changed
remove_place
Sept. 22, 2026, 2:40 a.m.
Changed
add_place
Sept. 22, 2026, 2:40 a.m.
Changed
search_places
Sept. 22, 2026, 2:40 a.m.
Changed
remove_region
Sept. 22, 2026, 2:40 a.m.
Changed
add_region
Sept. 22, 2026, 2:40 a.m.
Changed
remove_country
Sept. 22, 2026, 2:40 a.m.
Changed
add_country
Sept. 22, 2026, 2:40 a.m.
Changed
list_visited
Sept. 22, 2026, 2:40 a.m.
Changed
get_badges
Sept. 22, 2026, 2:40 a.m.
Changed
get_stats
Sept. 22, 2026, 2:40 a.m.
Changed
whoami
Sept. 22, 2026, 2:40 a.m.
Added
create_trip
Sept. 20, 2026, 2:40 a.m.
Added
set_visit_dates
Sept. 20, 2026, 2:40 a.m.
Added
delete_trip
Sept. 20, 2026, 2:40 a.m.
Added
set_trip_visibility
Sept. 20, 2026, 2:40 a.m.
Added
add_places_to_trip
Sept. 20, 2026, 2:40 a.m.
Added
get_rank
Sept. 20, 2026, 2:40 a.m.
Added
list_trips
Sept. 20, 2026, 2:40 a.m.
Added
remove_place
Sept. 20, 2026, 2:40 a.m.
Added
add_place
Sept. 20, 2026, 2:40 a.m.
Added
search_places
Sept. 20, 2026, 2:40 a.m.
Added
remove_region
Sept. 20, 2026, 2:40 a.m.
Added
add_region
Sept. 20, 2026, 2:40 a.m.