Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OneMap MCP ServerFind the nearest MRT stations to Marina Bay Sands"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OneMap MCP Server v2
A Python-based MCP (Model Context Protocol) server that provides comprehensive access to Singapore's OneMap APIs. Built with FastMCP for easy integration with AI assistants and Microsoft AI Foundry.
Features
This server exposes 35+ tools across 10 API categories:
Search - Address and location search
Reverse Geocode - Convert coordinates to addresses (WGS84 and SVY21)
Routing - Public transport, driving, walking, cycling, barrier-free routes
Coordinate Converters - EPSG 4326 (WGS84), EPSG 3414 (SVY21), EPSG 3857
Themes - Access 100+ thematic layers for locations, amenities, boundaries
Planning Area - Singapore's 55 planning area information
Population Query - Demographics and statistics by planning area
Nearby Transport - Find nearby MRT/LRT stations and bus stops
Static Map - Generate static map images with optional overlays
Prerequisites
Python 3.11+
OneMap Account (register at OneMap API)
Installation
Local Development
Clone the repository:
cd onemap-mcpCreate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtCreate
.envfile with your credentials:
cp .env.example .env
# Edit .env with your OneMap credentialsRun the server:
python server.pyEnvironment Variables
Create a .env file with:
ONEMAP_EMAIL=your_email@example.com
ONEMAP_EMAIL_PASSWORD=your_passwordDocker Deployment
Build the Docker image:
docker build -t onemap-mcp .Run the container:
docker run -d \
-e ONEMAP_EMAIL="your_email@example.com" \
-e ONEMAP_EMAIL_PASSWORD="your_password" \
--name onemap-mcp \
onemap-mcpAvailable Tools
Search & Geocoding
Tool | Description |
| Search for addresses, buildings, postal codes |
| Get address from WGS84 coordinates |
| Get address from SVY21 coordinates |
Routing
Tool | Description |
| Walking, driving, cycling, barrier-free routes |
| Bus and MRT routes with fare info |
Coordinate Conversion
Tool | Description |
| WGS84 → Web Mercator |
| WGS84 → SVY21 |
| SVY21 → WGS84 |
| SVY21 → Web Mercator |
| Web Mercator → WGS84 |
| Web Mercator → SVY21 |
Themes
Tool | Description |
| List all 100+ thematic layers |
| Get info about a specific theme |
| Check if theme was updated |
| Retrieve theme data |
Planning Areas
Tool | Description |
| Get all 55 planning area polygons |
| List planning area names |
| Get planning area for a location |
Population Data
Tool | Description |
| Population by age |
| Ethnic group distribution |
| Employment statistics |
| Income distribution |
| Education levels |
... and more |
Transport
Tool | Description |
| Find nearby MRT/LRT stations |
| Find nearby bus stops |
Static Maps
Tool | Description |
| Generate map images with overlays |
Usage Examples
Search for a location
# Search for Marina Bay Sands
result = await search(search_value="Marina Bay Sands")Get route directions
# Driving route from Changi to Orchard
result = await route_walk_drive_cycle(
start_lat=1.3644,
start_lon=103.9915,
end_lat=1.3048,
end_lon=103.8318,
route_type="drive"
)Find nearby MRT stations
result = await get_nearby_mrt_stations(
latitude=1.3521,
longitude=103.8198,
radius_in_meters=1000
)Project Structure
onemap-mcp/
├── server.py # FastMCP server with all tools
├── mcp.json # MCP manifest
├── tools.json # Tool definitions for AI Foundry
├── onemap/
│ ├── __init__.py
│ └── utils.py # HTTP client and utility functions
├── .env # Your credentials (not in git)
├── .env.example # Template for credentials
├── Dockerfile
├── requirements.txt
└── README.mdDeployment to Azure
Azure Container Apps
# Build and push to Azure Container Registry
az acr build --registry <registry-name> --image onemap-mcp:latest .
# Deploy to Container Apps
az containerapp create \
--name onemap-mcp \
--resource-group <resource-group> \
--image <registry-name>.azurecr.io/onemap-mcp:latest \
--env-vars ONEMAP_EMAIL=<email> ONEMAP_EMAIL_PASSWORD=<password>Microsoft AI Foundry Integration
Deploy the server to a publicly accessible endpoint
Use the
tools.jsonfile to configure tool definitionsConfigure
ONEMAP_EMAILandONEMAP_EMAIL_PASSWORDenvironment variables
License
MIT
Resources
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.