GO

Google Street View Virtual Location MCP Server

Explore immersive virtual locations with an MCP server integrating Google Maps, Street View, PixAI, StabilityAI, ComfyUI and Bluesky for LLM simulation.

Quick Install
npx -y @mfukushim/map-traveler-mcp

Overview

This MCP (Model Context Protocol) server creates an environment for a virtual avatar to navigate and report back from Google Maps / Street View. It bridges LLM-driven agents (Claude Desktop, LibreChat, Smithery, etc.) with map services, image synthesis backends (PixAI, StabilityAI, ComfyUI, Gemini nano-banana) and a social feed (Bluesky) so an LLM can “travel”, synthesize context-aware images, and publish or read social posts during the journey.

For developers, the server provides a set of callable MCP tools that expose location state, Street View photos, synthesized avatar images, and SNS integration. It supports both stdio-style MCP operation and Streamable-HTTP, and can be configured to use different image generation pipelines. Typical use cases include guided virtual tours, LLM roleplay agents that explore real-world locations, and experiments combining geospatial context with image synthesis and social feed interactions.

Features

  • Integrates Google Maps / Street View as the primary spatial context provider
  • Synthesizes travel scene images and avatar composites via PixAI, StabilityAI, ComfyUI or Gemini nano-banana
  • Exposes MCP-callable tools for location queries, movement, avatar config, and SNS (Bluesky) I/O
  • Supports Streamable-HTTP and stdio MCP interfaces (compatible with Smithery.ai and other MCP clients)
  • Multi-user capable; session-level database API configuration via Smithery.ai interface
  • Optional realtime or skip-based movement modes for simulated travel control
  • Includes sample role scripts (traveler, SNS-enabled traveler, small game scenarios)

Installation / Configuration

Install and test quickly with npx (example):

# Run latest published package
npx -y @mfukushim/map-traveler-mcp

If you need the older stdio-only behaviour, pin a previous release:

# stdio-only compatible version
npx -y @mfukushim/[email protected]

Typical environment variables and configuration you should provide (examples):

# Example environment variables (names are illustrative)
export GOOGLE_MAPS_API_KEY="your-google-maps-key"
export STREET_VIEW_API_KEY="$GOOGLE_MAPS_API_KEY"
export PIXAI_API_KEY="your-pixai-key"
export STABILITY_API_KEY="your-stabilityai-key"
export COMFYUI_URL="http://localhost:8188"
export BLUESKY_TOKEN="your-bluesky-session-token"
export SMITHERY_CONFIG_PATH="./smithery-config.json"

Configuration notes:

  • Specify which image backend to use (PixAI / Stability / ComfyUI / Gemini nano-banana) in the server config or Smithery session settings.
  • For multi-user operation, supply a per-session database API via the Smithery.ai config interface.
  • Ensure Google Maps APIs (Geocoding, Places, Street View) are enabled in your Google Cloud project.

Available Tools

The MCP server exposes a set of callable tools (functions) for clients. Key functions:

FunctionInputsPurpose
get_traveler_view_info(includePhoto, includeNearbyFacilities)booleansReturns current location info; optionally includes Street View images and nearby POIs; can trigger avatar image synthesis.
get_traveler_location()Returns address and nearby facilities for the travel avatar.
set_traveler_location(address)stringPlace the avatar at a specific address or named place.
set_traveler_destination_address(address)stringSet a navigation destination for the avatar.
reach_a_percentage_of_destination(timeElapsedPercentage)numberAdvance progress toward destination (use with moveMode=skip).
start_traveler_journey() / stop_traveler_journey()Begin or stop realtime travel (use with moveMode=realtime).
set_avatar_prompt(prompt) / reset_avatar_prompt()stringConfigure the prompt used to generate the avatar image.
get_sns_feeds(), post_sns_writer(message), reply_sns_writer(message,id), add_like(id)stringsRead/post/reply/like on Bluesky feeds; posts are tagged so they can be identified as bot-generated.
get_setting(), tips()Inspect server settings and receive guidance for missing configuration.

There are also built-in prompt resources (role.txt, roleWithSns.txt, carBattle.txt, japanMapChallenge*.txt) you can import into an LLM client so it behaves as a traveler or runs small scenarios.

Use Cases

  • Guided virtual tour via an LLM:
    • Start the server and connect a Claude Desktop or LibreChat client.
    • Instruct the LLM: “Let’s go to Shibuya Crossing” — the client calls set_traveler_destination_address, then start_traveler_journey. Use get_traveler_view_info(includePhoto:true) to fetch Street View and generated avatar photos for narration.
  • Avatar-backed image storytelling:
    • Configure Gemini nano-banana (recommended for fast semantic masking) or StabilityAI/ComfyUI.
    • Call get_traveler_view_info(includePhoto:true) to produce composite travel images that show the avatar within the captured scene.
  • Social feed-enabled exploration:
    • Use roleWithSns.txt so the LLM reads Bluesky posts in a custom feed and posts travel updates automatically. Use get_sns_feeds(), post_sns