Neutrollized/google-maps-mcp-server
If you are the rightful owner of google-maps-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This document provides a comprehensive overview of a Google Maps Platform MCP server setup using the googlemaps Python package.
Google Maps Platform MCP server
This uses the googlemaps Python package (which hasn't been updated since 2023, but does appear to still be active)
Setup
For this example, you will need a Google Maps Platform API key. I restricted my APIs to the following:
- Directions API
- Distance Matrix API
- Geocoding API
- Places API
You may need to expand on this if you wish to add more functionality. Here is the Google Maps Platform API Picker to help you decided what you need. You will also need an set an additional environment variable, GOOGLE_MAPS_API_KEY
.
Of course, there will be a cost to using the Maps API as well. It's got a pretty generous free-tier, depending on what you're using, just don't go crazy with it ;)
Running the FastMCP server
fastmcp run server.py --transport stdio
You can substitute stdio
with streaming-http
or sse
(deprecated) depending on your deployment method.
NOTE: if you use the fastmcp
option, it ignores the if __name__ == "__main__"
, so you need to pass --transport
and any other settings you wish to override.
Unit tests
pytest -v tests/
Client test
Run server with:
fastmcp run server --transport streaming-http
Run client with:
python tests/client_list_tools.py
- sample output:
[Tool found]: get_directions
[Tool found]: get_distance
[Tool found]: get_geocode
[Tool found]: find_place
[Tool found]: place_nearby
[Tool found]: place_details
How to use/connect
Agent Development Kit (ADK)
model="gemini-2.5-flash"
google_maps_api_key=os.getenv("GOOGLE_MAPS_API_KEY")
maps_agent = LlmAgent(
name="maps_agent",
model=model,
instruction=(
"You are an AI Google Maps assistant. Your primary function is to find places that meet the user's criteria. Include with your findings the name of the place, its rating, and its address. Limit the results to a maximum of 10. Use only the tools provided to you."
),
tools=[
MCPToolset(
connection_params=StdioServerParameters(
command='fastmcp',
args=[
"run",
"maps_agent/server.py"
],
env={
"GOOGLE_MAPS_API_KEY": google_maps_api_key
},
),
#tool_filter=['tool1', 'tool2']
)
],
)
And here's a more detailed prompt example I give my agent:
MAPS_AGENT_PROMPT="""
System Role: You are an AI Google Maps assistant. Your primary function is to find places that meet the user's criteria. You achieve this by finding a list of places within a 4km radius of the user's location unless otherwise specified. Include with your findings the name of the place, its rating, and its address. Limit the results to a maximum of 10.
When asked for directions, provide the route we will be travelling via, total distance, total time and step-by-step directions in a list format.
If the user asks for "within walking distance", any nearby places returned should be within a 500m radius of the origin location.
Use only the tools provided to you.
"""