MCP Server: Google Maps + Fitness Routes
Purpose
This MCP server turns queries on route-finding and fitness activities into live Google Maps calls and returns structured context for an AI assistant. It can:
- turn a query to “to burn X calories” into a followable route
- fetch walking directions from Google Maps
- optionally find nearby places to use as waypoints
The goal is to make the AI’s answer location-aware and goal-aware (calories → distance → real route).
Data Sources / APIs
- Google Maps Geocoding API
- Google Maps Directions API
- Google Maps Places API
These are used to resolve text locations to coordinates, get real route distance/duration, and optionally find nearby places.
Requirements
- Python 3.10+
- A Google Maps Platform API key with the above APIs enabled
- Packages from
requirements.txt
Environment Variables
Create a .env file in the project root (This file can be pasted by copying .env.example):
GOOGLE_MAPS_API_KEY=YOUR_KEY_HERE
DEFAULT_ORIGIN=Memorial Student Center, College Station, TX
DEFAULT_DESTINATION=Century Tree, College Station, TX
Notes:
- Replace
YOUR_KEY_HEREwith an actual API key from Google Maps in Google Cloud Platform. DEFAULT_ORIGINis used when the query does not specify a start.- You can change these to locations relevant to you.
Server Entry / How to Query
This MCP server is meant to be called by an MCP-capable client (for example Claude Desktop) that sends a natural-language query. The server receives the query, detects the intent (fitness route, directions, nearby place), fetches external data from Google Maps, and returns a structured context object that the AI can use to answer the user.
Using with Claude Desktop
If you want Claude Desktop to call this MCP server, add a new file (or update) called claude_desktop_config.json if it doesn't exist to register the server, for example:
{
"mcpServers": {
"maps-routes": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\fitness-routes",
"run",
"main.py"
]
}
}
}
Notes:
- Change
"C:\\path\\to\\fitness-routes"to actual route to this folder
Installation and Run
python -m venv .venv
.\.venv\Scripts\activate # For Windows
# source .venv/bin/activate # For Linux/MacOS
pip install -r requirements.txt
python main.py
This starts the MCP server. When you go into Claude, click on "Search and Tools" and make sure the MCP server titled "map-routes" is fully enabled.
How It Works
- The server receives a query/tool call.
- It detects intent, for example: a fitness route request.
- It converts calories → approximate distance (documented assumption).
- It calls Google Maps (geocoding, directions, places) to build a real route.
- It returns a context package that an AI can use directly.
Example Prompts
- Route to burn 300 calories.
- Give me a walking route from the Memorial Student Center that burns 400 calories.
- Plan a walking loop near the Memorial Student Center so I end where I start.
- Find a nearby gym from Texas A&M, College Station.
- I have 30 minutes to walk right now, starting at the Memorial Student Center.
More Prompts
- Route to burn 500 calories from Texas A&M, College Station.
- I need a 4 km walk starting near the Memorial Student Center.
- Make the route cycling instead of walking, from the Memorial Student Center to the Century Tree.
- Give me walking directions from the Memorial Student Center to the Century Tree.
- Find a nearby park I can walk to in College Station.
- Give me a route I can finish in under an hour, starting at the Memorial Student Center.
- Give me a route to the closest coffee shop from Texas A&M, College Station.
- What’s the best walking route to campus landmarks from Texas A&M, College Station.
Assumptions
- Calorie burn is approximated with a fixed value in code (e.g. 50 kcal/km for walking). This is to keep the MCP logic simple and predictable.
- When the user does not provide origin/destination, the server falls back to the defaults from
.env. - Google Maps API must be enabled in the Google Cloud project for the calls to succeed.
Troubleshooting
If the response contains
"error": "REQUEST_DENIED"or similar, check:- API key is present
- Billing is enabled
- Directions/Geocoding/Places are enabled
If the response is empty, ensure
.envis loaded and the server was started in the same environment.
Built With
- github
- google-directions
- google-geocoding
- google-maps
- google-places
- httpx
- python
- python-dotenv

Log in or sign up for Devpost to join the conversation.