Map Traveler▌

by mfukushim
Explore virtual travel with Map Traveler, a Google Maps app to navigate routes, customize avatars, and share journeys. D
Integrates with Google Maps to create virtual travel experiences where users can navigate real-world routes with customizable avatars, discover nearby facilities, and share journeys on Bluesky.
best for
- / Exploring destinations before actual travel
- / Creating virtual travel content
- / Interactive location-based storytelling
- / Social sharing of imaginary journeys
capabilities
- / Navigate virtual avatar along real-world map routes
- / Discover nearby facilities and points of interest
- / Generate AI-created travel photos with customizable avatars
- / Share virtual journeys on Bluesky social platform
- / Create composite travel images using semantic masking
what it does
Creates virtual travel experiences on Google Maps where you can control an avatar to explore real-world routes, discover locations, and generate travel photos.
about
Map Traveler is a community-built MCP server published by mfukushim that provides AI assistants with tools and capabilities via the Model Context Protocol. Explore virtual travel with Map Traveler, a Google Maps app to navigate routes, customize avatars, and share journeys. D It is categorized under other, ai ml.
how to install
You can install Map Traveler in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
license
MIT
Map Traveler is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
readme
Virtual Traveling bot environment for MCP
English / Japanese
This is an MCP server that creates an environment for an avatar to virtually travel on Google Maps.
From an MCP client such as Claude Desktop, you can give instructions to the avatar and report on the progress of its journey with photos.
<img alt="img_5.png" src="https://raw.githubusercontent.com/mfukushim/map-traveler-mcp/for_image/tools/img_5.png" width="400"/>Preparing for MCP Registry Support https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/
Added gemini-2.5-flash-image-preview (nano-banana) to travel image generation
Support for nano-banana has been added. Nano-banana's semantic mask allows you to generate composite travel images in a short time without setting remBg.
Although conventional image synthesis is still possible, we recommend using Gemini nano-banana.
Supports both Streamable-HTTP and stdio (compliant with Smithery.ai's config interface)
It can be used as a stdio-type MCP as before, or as Streamable-HTTP.
Although it supports multiple users, the database API must be specified per session using the Smithery.ai config interface.
Since it supports both Streamable-HTTP and stdio, it is expected to work as is with the previous MCP client, but if you use the previous stdio version, please use v0.0.x (v0.0.81).
npx -y @mfukushim/map-traveler-mcp@0.0.81
Now supports librechat https://www.librechat.ai/.
Now supports Smithery https://smithery.ai/server/@mfukushim/map-traveler-mcp (images are excluded because they are heavy to run).
Now verified MseeP https://mseep.ai/app/mfukushim-map-traveler-mcp
Functions
MCP server tools function
The following functions can be used as an MCP server. The available functions vary depending on the settings and execution state.
You can specify the function name directly, but Claude LLM will automatically recognize it, so you can specify the operation in general terms.
Example: "Where are you now?" "Let's leave for Tokyo Station."
- get_traveler_view_info(includePhoto:boolean,includeNearbyFacilities:boolean)
Gets information about the current travel avatar's location.- includePhoto: Gets nearby Google Street View photos. If you have set up an image generation AI, it will synthesize the avatar.
- includeNearbyFacilities: Gets information about nearby facilities.
- get_traveler_location()
Gets information about the current travel avatar's address and nearby facilities. - reach_a_percentage_of_destination() Reach a specified percentage of the destination (moveMode=skip only) timeElapsedPercentage: Percent progress towards destination(0~100)
- set_traveler_location(address: string)
Sets the current travel avatar's location.- address: Address information (exact address, or general name that Google Maps or Claude can recognize, etc.)
- get_traveler_destination_address
Get the destination of the travel avatar you set - set_traveler_destination_address(address: string)
Set the destination of the travel avatar- address: Address information (exact address, or general name that Google Maps or Claude can recognize, etc.)
- start_traveler_journey
Start the journey at the destination.(moveMode=realtime only) - stop_traveler_journey
Stop the journey.(moveMode=realtime only) - set_traveler_info(settings:string)
Set the traveler's attributes. Set the traveler's personality that you want to change dynamically, such as name and personality. However, if you use a role script, the script is more stable.- settings: Setting information such as name and personality.
- get_traveler_info
Get the traveler's attributes. Get the traveler's personality. - set_avatar_prompt(prompt:string)
Set the prompt when generating the travel avatar image. The default is an anime-style woman. The anime style is enforced to prevent fake images.- prompt
- reset_avatar_prompt
Reset avatar generation prompts to default. - get_sns_feeds
Gets Bluesky SNS articles for the specified custom feed (feeds containing a specific tag). - get_sns_mentions
Gets recent mentions (likes, replies) to Bluesky SNS posts that you made yourself. - post_sns_writer(message:string)
Posts an article to Bluesky SNS with the specified custom feed. Set a specific tag so that it can be determined that the post was generated by the travel bot.- message: article
- reply_sns_writer(message:string,id:string)
Reply to the article with the specified id. Set a specific tag so that it can be determined that the post was generated by the travel bot.- message: reply
- id: The ID of the post to reply to
- add_like(id:string)
Add a like to the specified post.- id: The ID of the post to like
- tips
Guides you on how to set up features that have not yet been set. - get_setting
Get environment and image settings.
MCP resources
Has five custom prompt samples. When you import a prompt with Claude Desktop, Claude will act as a traveler. The SNS-compatible version controls SNS input and output while having a travel conversation.
-
role.txt
Claude will act as a traveler. -
roleWithSns.txt
Claude will act as a traveler. It also controls reading and posting to SNS. -
carBattle.txt
This is a small novel game about a story of transporting secret documents from Yokohama to Tokyo. Scenes are automatically generated. Set moveMode=skip to play. -
japanMapChallenge.txt,japanMapChallenge2.txt
Two AIs communicate with each other via SNS and play a challenge game using landscape images.
To play, you need two Bluesky accounts and two Claude Desktops. Also set moveMode=skip. (However, the operation is somewhat unstable.)
japanMapChallenge2 has a challenge reflection rule.
Setting
You will need to obtain and set access keys for multiple APIs, such as for accessing multiple Google maps and generating images. Use of the API may incur charges.
Settings for using with Claude Desktop
- claude_desktop_config.json (stdio type)
{
"mcpServers": {
"traveler": {
"command": "npx",
"args": ["-y", "@mfukushim/map-traveler-mcp"],
"env":{
"MT_GOOGLE_MAP_KEY":"(Google Map API key)",
"MT_GEMINI_IMAGE_KEY": "(Gemini Image Api key)",
"MT_MAX_RETRY_GEMINI": "(Number of retries when generating Gemini images Default: 0)",
"MT_AVATAR_IMAGE_URI": "(Character reference image uri (file:// or https://) when generating Gemini image. Multiple settings can be made by separating them with the '|'. When multiple settings are made, they will be selected randomly.)",
"MT_MAP_API_URL": "(Optional: Map API custom endpoint. Example: direction=https://xxxx,places=https://yyyy )",
"MT_TIME_SCALE": "(Optional:Scale of travel time on real roads duration. default 4)",
"MT_SQLITE_PATH":"(db save path: e.g. %USERPROFILE%/Desktop/traveler.sqlite ,$HOME/traveler.sqlite )",
"MT_TURSO_URL":"(Turso sqlite API URL)",
"MT_TURSO_TOKEN":"(Turso sqlite API access token)",
"MT_REMBG_PATH": "(absolute path of the installed rembg cli)",
"MT_REMBG_URL": "(rembg API URL)",
"MT_REMBG_WO_KEY": "(withoutbg.com rembg API key)",
"MT_PIXAI_KEY":"(pixAi API key)",
"MT_SD_KEY":"(or Stability.ai image generation API key",
"MT_PIXAI_MODEL_ID": "(Optional: pixAi ModelId, if not set use default model 1648918127446573124 ",
"MT_COMFY_URL": "(Option: Generate image using ComfyUI API at specified URL. Example: http://192.168.1.100:8188)",
"MT_COMFY_WORKFLOW_T2I": "(Optional: Path to API workflow file when using text to image with ComfyUI. If not specified: assets/comfy/t2i_sample.json)",
"MT_COMFY_WORKFLOW_I2I": "(Optional: Path of API workflow file when image to image in ComfyUI. If not specified: assets/comfy/i2i_sample.json)",
"MT_COMFY_PARAMS": "(Optional: Variable values to send to the workflow via comfyUI API)",
"MT_FIXED_MODEL_PROMPT": "(Optional: Fixed avatar generation prompt. You will no longer be able to change your avatar during conversations.)",
"MT_BODY_AREA_RATIO": "(Optional: Acceptable avatar image area ratio. default 0.042)",
"MT_BODY_HW_RATIO": "(Optional: Acceptable avatar image aspect ratios. default 1.5~2.3)",
"MT_BODY_WINDOW_RATIO_W": "(Optional: Avatar composite window horizontal ratio. default 0.5)",
"MT_BODY_WINDOW_RATIO_H": "(Optional: Avatar composite window aspect ratio. default 0.75)",
"MT_BS_ID":"(Bluesky sns registration address)",
"MT_BS_PASS":"(bluesky sns password)",
"MT_BS_HANDLE":"(bluesky sns handle name: e.g. xxxxxxxx.bsky.social )",
"MT_FILTER_TOOLS": "(Optional: Directly filter the tools to be used. All are available if not specified. e.g. tips,set_traveler_location)",
"MT_MOVE_MODE": "(Option: Specify whether the movement mode is realtime or skip. default realtime)",
"MT_IMAGE_WIDTH": "(Option: Output image width (pixels) Default is 512)",
"MT_NO_IMAGE": "(Options: true = do not output image, not specified = output image if possible, default is not specified)",
"MT_NO_AVATAR": "(Option: true = Output StreetView image as is without avatar superimposition. Not specified = Superimpose avatar image. Default is not specified.)",
"MT_FEED_TAG": "(Optional: Specify the feed tag when posting to SNS (#required, 15 characters or more) Default is #geo_less_traveler)",
"MT_MAX_SESSIONS": "(Maximum number of sessions when using Streamable-http)",
"MT_SESSION_TTL_MS": "(Session TTL when using Streamable-http)",
"MT_SERVICE_TTL_MS": "(Service TTL when using
---