What makes it more than a map lookup is that movement is bound to real roads and real durations, divided down by MT_TIME_SCALE — tell it to leave for Tokyo Station and it is en route, so "where are you now?" has a different answer each time you ask. The photographs are real Street View; the avatar composited into them is generated, and the project forces an anime style on purpose so the pictures cannot pass as genuine.
An environment for a virtual traveller. Give it a destination and it moves along real roads at a scaled-down pace, reporting where it is with Street View photography — optionally with a generated avatar composited into the shot, and optionally posting the trip to Bluesky.
- The traveller's current location, its address, and the facilities near it
- A Street View photo of where it stands, with the avatar composited in when image generation is configured
- A destination set by exact address or by a name Google Maps recognises, and a journey started and stopped along real roads
- Two movement modes: realtime, where the trip takes scaled real travel time, and skip, where you jump to a percentage of the way there
- The traveller's name and personality set and read back, and the avatar's generation prompt changed or reset to default
- Bluesky posting, replying and liking, plus reading the custom feed and your own mentions
- Five ready-made prompts as MCP resources: a plain traveller role, an SNS-aware one, a document-courier story, and two AI-versus-AI landscape challenges
- A tips tool that says which features are still unconfigured, and a settings read-out
Node.js 22, launched with npx @mfukushim/map-traveler-mcp over stdio — or as Streamable HTTP, where per-session settings ride in a base64 config query parameter. A practice mode runs with no keys at all. For real travel, MT_GOOGLE_MAP_KEY with Street View Static, Places (New), Time Zone and Directions enabled on it; those calls are billable. Image generation is optional and pluggable: MT_GEMINI_IMAGE_KEY is the recommended route because its semantic mask composites without a background remover, while the pixAI, Stability.ai and ComfyUI paths also need the rembg CLI with Python 3.7 to 3.11. State lives in SQLite — MT_SQLITE_PATH locally, or MT_TURSO_URL with MT_TURSO_TOKEN remotely. Bluesky is optional and posts on its own, so give it a dedicated account through MT_BS_ID, MT_BS_PASS and MT_BS_HANDLE. MT_TIME_SCALE, default 4, sets how much faster than reality the travel runs, and MT_FILTER_TOOLS trims the tool list.
One command — npx -y @mfukushim/map-traveler-mcp
