The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Singapore MCP by Olano listing page.
Ask Claude or Codex questions about Singapore property, MRT/LRT, buses, companies, weather, the economy, public services, and official financial reference data.
291 read-only tools · 8 Agent Skills · 7 plugins · stdio and Streamable HTTP
Try it right now, without installing anything. Message @OlanoSGBot on Telegram and ask a Singapore question in plain English. It is free to use and needs no API key. See Try it on Telegram.
Built and maintained in Singapore by Olano — the olano.ai platform for applied AI, and olano.sg, our Singapore AI studio. Singapore MCP is the studio's open contribution to the local AI community, and it is free to use under the MIT licence.
Singapore MCP is an independent community project. It is not affiliated with, endorsed by, or an official product of the Singapore Government or any government agency. “Official” below describes an upstream data source, not this software.
Singapore MCP is a read-only bridge between an AI client and Singapore's official public data: data.gov.sg, OneMap, LTA DataMall, and SingStat. Every answer keeps its source agency, dataset identifier, observation period, units, and freshness caveats, so you can check the work. Most of it runs with no API key at all.
The monorepo separates provider access, reusable analysis, and user-facing workflows. Install the aggregate server for the complete experience or a focused executable when you only need one provider.
| Package | Role | Credentials |
|---|---|---|
@olano/mcp-singapore | Aggregate server: every provider, catalog, insight, rail, finance, analytics, prompt, resource, and cross-agency workflow | Depends on the selected tool |
@olano/mcp-datagov | data.gov.sg catalog, metadata, rows, and real-time feeds | Optional data.gov.sg key |
@olano/mcp-onemap | OneMap address search, reverse geocoding, and routing | OneMap token |
@olano/mcp-lta | LTA DataMall bus arrivals, traffic, parking, and taxi feeds | LTA DataMall Account Key |
@olano/mcp-weather | Forecasts, temperature, rainfall, and PSI | Optional data.gov.sg key |
@olano/mcp-catalog | Curated Singapore datasets, 27 ACRA entity shards, and SingStat tables | Optional data.gov.sg key |
@olano/mcp-insights-sg | Prompt discovery, semantic routing, period-aware comparisons, and derived public-data insights | Depends on the routed source |
@olano/mcp-rail-sg | MRT/LRT stations, codes, lines, exits, interchanges, and nearest-location tools | None; OneMap token for address lookup |
@olano/mcp-finance-sg | Official mortgage reference-rate history and transparent local mortgage calculations | Optional data.gov.sg key |
@olano/mcp-analytics | Deterministic local statistics, comparisons, correlations, and text sparklines | None |
@olano/mcp-core | Shared transport, safe HTTP client, caching, retries, and MCP result helpers | None |
@olano/sg-cli | Search, inspect, route, and invoke the complete suite from a terminal | Depends on the selected tool |
Focused stdio/HTTP executables are available for the aggregate, data.gov.sg, OneMap, LTA, weather, and rail packages. The other packages are reusable registration libraries composed by the aggregate server.
Ask these in an MCP client, or use olano-sg examples [category] to browse the packaged prompt
catalog. Results depend on upstream coverage and, for a few tools, on the optional keys in
Credentials and caching. Not installed yet? Ask a few of these on
Telegram first with @OlanoSGBot, or go straight to
Quick start.
Olano and show the UEN and entity status.”Bishan and group them by carpark type.”The first example is a single MCP operation. hdb_resale_stats applies the exact town and flat-type
filters, selects the latest available matching month by default, returns the transaction rows, and
calculates the range, median, Q1, Q3, and price per square metre inside the server:
Use latestMonths, startMonth, or endMonth to choose a different period. A direct dataset
download is not required. This operation is available in the aggregate server's all and
property profiles; it is not part of the focused @olano/mcp-datagov row-reader package.
1 Fullerton Road and state whether distance is straight-line or walking.”Nanyang and show the official dataset fields.”Maxwell and profile the published fields.”These are official reference-rate statistics and educational calculations, not live lender offers, credit decisions, or personal financial advice.
sg_cross_dataset.”These are where the eight packaged Agent Skills and the analytics tools earn their keep. Each one spans several agencies or several periods, so the answer has to align units, match periods, and keep every source attached. Ask them in a client that has the Agent Skills installed — the Claude Code plugin or the Claude Desktop extension — and Claude will chain the tools itself.
Property and affordability
Economy and cross-series analysis
Business and sector research
Mobility and location
Data quality and method
The fastest way to see what this server does is to ask it something. @OlanoSGBot is a free Telegram bot, built by Olano and backed by the Singapore MCP tools in this repository. No install, no Node.js, no API key, and no account beyond the Telegram one you already have.
@OlanoSGBot inside Telegram.Questions that work well in a chat window:
Answers keep their source agency and observation period, the same as they do in an MCP client. The
bot remembers your conversation so that follow-up questions work; send /forget whenever you
want it to delete the memory and conversation data it holds for you.
The bot is a hosted service rather than a local install. It runs as an Olano-hosted agent on a server in Singapore; each user's conversation and memory is stored separately, scoped to their account on the messaging platform, so no user — and no agent session — can reach another user's data. Composing a reply sends the relevant message content to a third-party language-model provider, which may process it outside Singapore. Read Privacy before sending anything sensitive.
For everyday use, for the complete 291-tool suite, and for the eight Agent Skills, install the server in your own AI client with Quick start. That route runs on your own machine and sends nothing to Olano.
New to MCP? An MCP server is a small helper program that your AI app runs on your own computer so it can look things up for you. You install it once, and after that you just ask questions in plain English. This one runs locally and reads official Singapore public data; it has no Olano account, telemetry, or analytics. See Privacy.
Find your app in the table and follow only that section. The default install gives you the complete Olano Singapore suite. You do not need to pick a category, and you do not need an API key.
| Your app | Follow this | How |
|---|---|---|
| Claude Desktop app — the Chat tab | Claude Desktop app | Download one file, click it |
| Claude Code — terminal or the Code tab | Claude Code | Two /plugin commands |
| Codex app | Codex app | Add a server in Settings |
| Codex CLI | Codex CLI | One codex mcp add command |
Just want to see it work first? You do not have to install anything at all — message @OlanoSGBot on Telegram instead. See Try it on Telegram.
Not sure which one you have? If you type questions into a chat window, you are using the Claude
Desktop app. If you run claude in a terminal, or you use the Code tab inside the desktop app,
you are using Claude Code. Claude Code gets the better install, because it can load the Agent Skills
as well as the tools.
Installing the Claude Desktop extension? Nothing to install first. Claude Desktop ships its own Node.js runtime and the extension carries everything else. Skip straight to Claude Desktop app.
Every other route runs the server with npx, which comes with Node.js. You need Node.js 20 or
newer.
Download the LTS installer from nodejs.org and run it.
Open a terminal — Terminal on macOS, PowerShell on Windows — and check the version:
You should see v20. or higher, for example v22.14.0. If you get "command not found" or "not
recognized", close the terminal, open a new one, and try again. If it still fails, Node.js did not
install correctly.
You do not need to download this repository, clone anything, or run npm install. npx fetches
the published package for you the first time it runs.
This section is for the Chat tab of the Claude Desktop app. If you use the Code tab, follow Claude Code instead — you get the eight Agent Skills there too.
One file, one click, no terminal and no Node.js.
Download the extension.
⬇ Download olano-singapore.mcpb
It is about 2 MB and contains the whole server. Every published version is also listed on the releases page.
Install it. Double-click the downloaded file. Claude Desktop opens a review dialog showing what the extension adds. Select Install.
If double-clicking does nothing, open Claude Desktop and drag the file onto the Settings window, or go to Settings → Extensions → Advanced settings → Install Extension… and pick it.
Claude Desktop will note that the extension is not signed. That is expected for this project.
Leave every setting blank and finish. The four optional boxes are for free government API keys you probably do not have yet. Everything works without them, and you can add them later from Settings → Extensions.
Ask a question. No restart needed.
Show me the latest two-hour weather forecast for Singapore, with timestamps.
That is it, can already. To update later, download the file again and install it over the top.
Already have Claude Code, Codex, Cursor, or another coding agent that can edit files on your computer? Paste this and it will do the whole job:
This route needs Node.js on your computer. Route A does not.
Open the settings file. In Claude Desktop, open Settings → Developer → Edit Config. That
button opens claude_desktop_config.json in your text editor and creates it if it is missing.
| System | File |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
On macOS the Settings window opens from Claude in the menu bar, not from the chat window. On Windows, check the Claude icon in the system tray. If the file does not exist, create it.
Paste the configuration.
If the file is empty or brand new, paste this entire block — the outer { and } matter:
If the file already has other servers, keep them and add only the singapore entry, with a
comma between entries:
The same file is available at examples/claude-desktop.json.
Windows installs npx as a .cmd script, which some builds of Claude Desktop cannot start
directly. If the plain version above shows an error, wrap it in cmd /c:
Save the file and fully restart Claude Desktop. Closing the window is not enough. Quit the app completely — Claude → Quit on macOS, or right-click the tray icon and choose Quit on Windows — then open it again.
Confirm it worked. Click the + button next to the message box and look under
Connectors. You should see singapore listed with its tools. Then ask a question:
Show me the latest two-hour weather forecast for Singapore, with timestamps.
The first question may take 20–30 seconds while npx downloads the package. After that it is
fast.
If singapore does not appear, see If something is not working.
Reference details are in Claude Desktop.
This covers both the
claudeterminal command and the Code tab in the Claude Desktop app.
Use the plugin. It installs the complete MCP server and all eight Olano Agent Skills, which teach Claude when to reach for which Singapore tool, so answers come back better sourced. It also gives you a safe place to add the optional API keys later.
Add the Olano marketplace. Type this at the Claude Code prompt, exactly as shown, including
the leading /:
This only registers the catalogue. Nothing is installed yet.
Install the complete plugin:
Choose User scope when it asks, so the plugin works in every project. If the summary says
Run /reload-plugins to activate., run that command too; otherwise the plugin is already live.
Confirm and ask a question. Run:
You should see singapore connected. Then try:
List every station on the Thomson-East Coast Line in order and identify the interchanges.
The first call may take 20–30 seconds while the package downloads. After that it is fast.
Paste this into Claude Code and it will run the setup and check it for you:
This does the same two steps without an interactive session, at user scope. It is safe to re-run whenever you want to refresh the Olano marketplace:
Start a new Claude Code session afterwards, or run /reload-plugins in an open one.
Start a new session and run /mcp. This installs every MCP tool but none of the packaged Agent
Skills, so Claude gets the same data with less guidance on how to use it. The plugin above is the
better default.
The Codex app and Codex CLI share the same MCP configuration, so you only need to install the server once.
Open Settings → MCP servers → Add server.
Enter singapore as the name, choose STDIO, use npx as the command, and enter these
arguments:
Save, select Restart, and type /mcp in a new conversation to confirm that singapore is
connected.
Already installed it with the Codex CLI? Then there is nothing else to add. Restart the app and it will use the same configuration.
Add the complete MCP server:
Confirm that it is enabled:
Start a new Codex session and run /mcp, then ask a question.
Prefer to ask Codex to do the installation? Paste this prompt:
The command intentionally has no --profile argument. With no profile selected,
@olano/mcp-singapore loads the complete suite.
Find the row that matches what you see. The Node.js rows apply only to the npx routes — the Claude
Desktop extension has no such dependency.
| What you see | What to do |
|---|---|
Double-clicking the .mcpb file does nothing | Open Claude Desktop first, then drag the file onto its Settings window, or use Settings → Extensions → Advanced settings → Install Extension…. |
| Claude Desktop warns the extension is not signed | Expected. This project does not sign its bundles yet. Download only from the releases page. |
| The extension installed but Claude ignores it | Open Settings → Extensions and confirm it is enabled. Extensions apply to new messages, not to a conversation already in progress. |
singapore is not listed at all | On the configuration-file route, you did not fully quit and reopen the app. Closing the window is not enough — quit it completely, then reopen. |
| The server shows as failed or disconnected | Run node --version in a terminal. If it is missing or below v20, install Node.js LTS and restart the app — or switch to the extension, which needs neither. |
| It fails on Windows | Switch the config to "command": "cmd" with "args": ["/c", "npx", "-y", "@olano/mcp-singapore"], then restart the app. |
| Claude Desktop says the config file is invalid | A missing or extra comma, or a missing outer {. Paste your file into a JSON validator, or copy examples/claude-desktop.json over it and start again. |
| The first question is very slow | Expected on the npx routes; the package downloads on first run. The extension has no first-run download. |
Claude Code says /plugin is not a known command | Update Claude Code: npm install -g @anthropic-ai/claude-code@latest, or brew upgrade claude-code. Then restart your terminal. |
| The plugin installed but the tools are missing | Run /reload-plugins in the session, or start a new session. Then run /mcp again. |
| A tool reports a missing environment variable | That tool needs a free key from OneMap or LTA DataMall. Add it in Settings → Extensions, or see Credentials and caching. Everything else works without. |
| Claude answers from memory instead of using a tool | Ask for the source explicitly, for example "using the Singapore MCP tools, show the latest PSI readings with timestamps". |
Check the exact state of a Claude Code install at any time:
Still stuck? Open an issue with your app name,
your operating system, how you installed, and the output of node --version.
The quick-start commands above install everything. Later, experienced users can choose a focused profile to send fewer tool definitions to the model.
| Profile | Good for |
|---|---|
property | HDB, private property, neighbourhoods, amenities, and mortgages |
mobility | MRT/LRT, buses, roads, parking, taxis, routing, and COE |
business | Companies, UENs, formations, sectors, retail, and tourism |
economy | GDP, prices, jobs, income, population, and trade |
civic | Weather, health, education, childcare, safety, and services |
finance | Official rates, mortgage scenarios, FX, income, and inflation |
all | The complete Singapore suite |
Each profile has its own Claude Code plugin. Install one the same way as the complete plugin:
Or select a profile from a terminal, where --profile narrows the MCP server directly:
For Claude Desktop, add "--profile", "property" to the args array in the config file. The
one-click extension always loads the complete suite; use the configuration-file route if you want a
profile there.
Olano and show the UEN and entity status.”More examples are available in Example questions or from:
New here? Stop now and try a question. The rest of this README documents packages, transports, credentials, data sources, and development.
Add it to a client that accepts the common mcpServers format:
Remove credentials you do not use and never commit real values. The server starts without any credential; only tools that require one will return a missing-credential error.
The aggregate defaults to all. To reduce the tool definitions sent to a model, select a focused
production profile without losing MCP prompts or resources:
The stable profiles are mobility, property, business, economy, civic, and finance.
singapore_tool_profiles is always available and returns each profile's prefix contract, exact live
tool count, and optional tool-name inventory. The same definitions power olano-sg profiles and
olano-sg profile <name>. An unknown profile fails at startup instead of silently falling back to
all.
The MCP endpoint is http://127.0.0.1:3000/mcp. Localhost is the default bind address. Add TLS,
authentication, request limits, and operational monitoring before exposing it to a network.
Focused servers use the same flags:
The npm package is @olano/sg-cli; its executable is olano-sg.
ask and its query alias use a deterministic local router. They recommend tools, extract obvious
arguments, and report missing inputs; they do not send the question to an external model or silently
execute the recommendation. Use tool for an explicit invocation.
For client-specific reference, updates, and validation, see Claude Desktop, Claude Code plugins, and Codex and OpenAI plugins.
The aggregate server packages reusable MCP prompts:
research-singaporeresearch-neighbourhoodresearch-companyanalyze-propertyanalyze-mobilityIt also exposes read-only resources at singapore://about, singapore://sources, and
singapore://examples. Tool-based discovery is available through singapore_prompt_categories,
singapore_prompt_examples, singapore_prompt_for_tool, and singapore_ask.
The repository includes eight reusable workflows for clients that support Agent Skills:
research-singapore — general locations, mobility, economy, population, environment, and public
services research;analyze-singapore-property — HDB/private-property evidence, neighbourhood, transport, amenities,
and educational mortgage scenarios;research-singapore-business — ACRA/UEN lookup, business formations, sectors, labour, inflation,
exchange rates, retail, tourism, and trade context;analyze-singapore-mobility — MRT/LRT, bus, road, parking, taxi, routing, and COE analysis;analyze-singapore-economy — period- and unit-aware economic indicator analysis;research-singapore-civic — weather, health, education, population, safety, and public services;analyze-singapore-finance — official rates and transparent mortgage and affordability scenarios;
anddevelop-with-singapore-mcp — profile selection, exact tool calls, credentials, transports, and
troubleshooting.See skills/README.md for installation and usage guidance.
| Variable | Purpose |
|---|---|
DATA_GOV_SG_API_KEY | Optional data.gov.sg key for production use and provider limits |
ONEMAP_TOKEN | OneMap bearer token for authenticated OneMap tools and rail address lookup |
LTA_DATAMALL_API_KEY | LTA DataMall subscriber Account Key for dynamic transport APIs |
OLANO_SG_CACHE_DIR | Optional absolute directory for the persistent public-response cache |
OLANO_SG_PROFILE | Optional aggregate tool profile; defaults to all |
Every provider uses an in-memory TTL cache. Setting OLANO_SG_CACHE_DIR additionally persists
eligible public responses between processes. Cache entries use provider-specific TTLs and hashed
keys, are partitioned by a hash of the request-header identity, and omit the entire query string from
stored source metadata. Response payloads can still contain addresses, company searches, or other
request results. Do not share one cache directory across untrusted tenants; protect it as application
data and clear it when retention requirements demand it. singapore_cache_info reports whether it is
enabled.
The suite keeps source agency, dataset/table identifier, source URL, retrieval time, observation period, units, and freshness caveats wherever the upstream format allows it.
Rail tools additionally disclose the exact LTA snapshot date and source URL through
rail_source_metadata. API availability, data accuracy, rate limits, licences, and upstream terms
remain controlled by the respective providers. Applications must comply with those terms and retain
required attribution.
Olano integrates only the free official mortgage reference-rate dataset described above. It does
not expose live SGX quotes, lender product offers, or insurance premiums because no stable free
official API with suitable production and redistribution terms has been verified. It does not scrape
comparison sites or label third-party quote data as official Singapore data. Use
finance_singapore_data_availability for the current boundary and official reference links.
The servers are read-only. Zod validates inputs; upstream origins and paths are fixed in code; requests use timeouts, bounded response sizes, retries, rate spacing, and caching; and tools return explicit errors for missing credentials. Derived tools disclose assumptions and do not turn area, company, crime, property, or finance data into unsupported personal conclusions.
Requires Node.js 20 or newer.
Inspect the aggregate server interactively:
Build and verify the Claude Desktop bundle. check:mcpb unpacks the packed .mcpb outside the
repository and starts it with the exact command its own manifest declares, so a dependency that only
resolves through the monorepo fails here rather than on a user's machine:
See Architecture, Claude Desktop, Contributing, and Security.
Source code is released under the MIT License. Government data remains subject to the licence and terms published by each source agency.