Back to Browse

Singapore MCP Server

Developer ToolsUse Caution4.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

Singapore public data, transport, rail, property, business, economy, weather, and analytics.

About

Singapore public data, transport, rail, property, business, economy, weather, and analytics.

Security Report

4.2
Use Caution4.2High Risk

Singapore MCP is a well-structured, read-only data aggregation server for public Singapore government datasets with appropriate authentication via environment variables. The code demonstrates good security practices (input validation with Zod, no hardcoded credentials, safe HTTP clients with timeouts). However, there are moderate concerns around environment variable exposure in error messages, broad OneMap API access without scoped permissions, and some input validation gaps in path/parameter handling that warrant attention. Supply chain analysis found 1 known vulnerability in dependencies (1 critical, 0 high severity). Package verification found 1 issue (1 critical, 0 high severity).

4 files analyzed · 9 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

Unverified package source

We couldn't verify that the installable package matches the reviewed source code. Proceed with caution.

What You'll Need

Set these up before or after installing:

Optional data.gov.sg API key for production limits.Required

Environment variable: DATA_GOV_SG_API_KEY

Optional OneMap token for geocoding, routing, themes, and address-based rail lookup.Required

Environment variable: ONEMAP_TOKEN

Optional LTA DataMall Account Key for dynamic transport APIs.Required

Environment variable: LTA_DATAMALL_API_KEY

Optional private directory for the persistent public-response cache.Optional

Environment variable: OLANO_SG_CACHE_DIR

Optional aggregate tool profile: all, mobility, property, business, economy, civic, or finance.Optional

Environment variable: OLANO_SG_PROFILE

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-olano-ai-mcp-singapore": {
      "env": {
        "ONEMAP_TOKEN": "your-onemap-token-here",
        "OLANO_SG_PROFILE": "your-olano-sg-profile-here",
        "OLANO_SG_CACHE_DIR": "your-olano-sg-cache-dir-here",
        "DATA_GOV_SG_API_KEY": "your-data-gov-sg-api-key-here",
        "LTA_DATAMALL_API_KEY": "your-lta-datamall-api-key-here"
      },
      "args": [
        "-y",
        "@olano/singapore-mcp-monorepo"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

🇸🇬 Singapore MCP

Open-source Model Context Protocol servers, tools, prompts, resources, skills, and a CLI for Singapore public data and services.

Built and maintained in Singapore by Olano.

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.

What ships

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.

PackageRoleCredentials
@olano/mcp-singaporeAggregate server: every provider, catalog, insight, rail, finance, analytics, prompt, resource, and cross-agency workflowDepends on the selected tool
@olano/mcp-datagovdata.gov.sg catalog, metadata, rows, and real-time feedsOptional data.gov.sg key
@olano/mcp-onemapOneMap address search, reverse geocoding, and routingOneMap token
@olano/mcp-ltaLTA DataMall bus arrivals, traffic, parking, and taxi feedsLTA DataMall Account Key
@olano/mcp-weatherForecasts, temperature, rainfall, and PSIOptional data.gov.sg key
@olano/mcp-catalogCurated Singapore datasets, 27 ACRA entity shards, and SingStat tablesOptional data.gov.sg key
@olano/mcp-insights-sgPrompt discovery, semantic routing, period-aware comparisons, and derived public-data insightsDepends on the routed source
@olano/mcp-rail-sgMRT/LRT stations, codes, lines, exits, interchanges, and nearest-location toolsNone; OneMap token for address lookup
@olano/mcp-finance-sgOfficial mortgage reference-rate history and transparent local mortgage calculationsOptional data.gov.sg key
@olano/mcp-analyticsDeterministic local statistics, comparisons, correlations, and text sparklinesNone
@olano/mcp-coreShared transport, safe HTTP client, caching, retries, and MCP result helpersNone
@olano/sg-cliSearch, inspect, route, and invoke the complete suite from a terminalDepends 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.

Quick start

MCP over stdio

npx -y @olano/mcp-singapore

Add it to a client that accepts the common mcpServers format:

{
  "mcpServers": {
    "singapore": {
      "command": "npx",
      "args": ["-y", "@olano/mcp-singapore"],
      "env": {
        "DATA_GOV_SG_API_KEY": "optional-data-gov-key",
        "ONEMAP_TOKEN": "your-onemap-token",
        "LTA_DATAMALL_API_KEY": "your-lta-account-key",
        "OLANO_SG_CACHE_DIR": "/absolute/path/to/olano-sg-cache"
      }
    }
  }
}

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.

Smaller server-side tool profiles

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:

npx -y @olano/mcp-singapore --profile mobility
OLANO_SG_PROFILE=property npx -y @olano/mcp-singapore

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.

MCP over Streamable HTTP

npx -y @olano/mcp-singapore --transport http --host 127.0.0.1 --port 3000

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:

npx -y @olano/mcp-rail-sg --transport http --port 3001
npx -y @olano/mcp-weather --transport http --port 3002

CLI

The npm package is @olano/sg-cli; its executable is olano-sg.

npx -y @olano/sg-cli list
npx -y @olano/sg-cli search rail
npx -y @olano/sg-cli examples
npx -y @olano/sg-cli examples property
npx -y @olano/sg-cli ask "Compare recent HDB resale prices in Bedok"
npx -y @olano/sg-cli datasets economy
npx -y @olano/sg-cli prompts
npx -y @olano/sg-cli tool weather_two_hour_forecast '{}'

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.

Example questions

Ask these in an MCP client, or use olano-sg examples [category] to browse the packaged prompt catalog. Results depend on upstream coverage and any credentials shown above.

Companies and ACRA

  • “Find the official public ACRA records matching Olano and show the UEN and entity status.”
  • “Look up this exact UEN across all ACRA shards; make any match uncertainty explicit.”
  • “Compare monthly business formations and cessations, then calculate net formations.”
  • “How have formations changed for two SSIC sectors over matched periods?”

HDB and private property

  • “Show recent 4-room HDB resale transactions in Bedok and calculate the median and quartiles.”
  • “Compare HDB resale price per square metre between Tampines and Jurong East.”
  • “Find HDB carparks whose address contains Bishan and group them by carpark type.”
  • “Show bounded private-property transaction evidence for a project or district.”
  • “Build a property-area brief for Queenstown with OneMap location context.”

COE, buses, roads, parking, and taxis

  • “What is the latest Category B COE premium, quota, number of bids, and bid-to-quota ratio?”
  • “Show the last 12 Category A bidding exercises and changes from the prior premium.”
  • “When are the next buses arriving at this bus stop?”
  • “List current traffic incidents and nearby traffic-camera images.”
  • “Show live LTA carpark availability and taxi availability.”

MRT and LRT

  • “What are the MRT/LRT codes and line connections for Paya Lebar?”
  • “List every station on the Thomson-East Coast Line.”
  • “Which official station exits belong to City Hall?”
  • “Find the five nearest rail stations to latitude 1.29027, longitude 103.851959.”
  • “Find rail stations near 1 Fullerton Road and state whether distance is straight-line or walking.”
  • “List MRT/LRT interchanges and show the date of each bundled source snapshot.”

Weather, PSI, rainfall, and dengue

  • “Show the current two-hour forecast for Singapore areas.”
  • “What are the latest temperature and rainfall readings by station?”
  • “Show the 24-hour forecast, four-day outlook, and latest PSI readings.”
  • “Find current dengue-cluster records and include the dataset freshness.”

Education and childcare

  • “Find MOE schools matching Nanyang and show the official dataset fields.”
  • “Find ECDA childcare centres in an area and summarise any published vacancy fields.”
  • “Resolve this address with OneMap before comparing nearby school or childcare records.”

GDP, prices, labour, income, FX, tax, and trade

  • “Show the latest GDP growth observations and compare selected industries.”
  • “Calculate year-on-year CPI change using the same month, not adjacent months.”
  • “Compare retail-sales year-on-year change with CPI over matched monthly periods.”
  • “Show median-income history, employment by sector, and calculated employment growth.”
  • “Show unemployment and resident labour-force participation history.”
  • “Find official MAS exchange-rate observations and preserve each published unit.”
  • “Show IRAS tax-collection history and calculate category shares only where units match.”
  • “Show Singapore merchandise-trade history from SingStat.”

Tourism, population, health, energy, crime, and hawkers

  • “Rank visitor-arrival source markets for the latest published period.”
  • “Show tourism receipts history and warn me if the curated dataset is stale.”
  • “Compare population, live births, deaths, marriages, and divorces over available periods.”
  • “Show disease-case history, its last observation, and a clear frozen-data warning if applicable.”
  • “Show electricity-generation history and the source agency.”
  • “Compare like-for-like recorded-crime series without inferring neighbourhood or individual risk.”
  • “Find NEA hawker centres matching Maxwell and profile the published fields.”

Mortgage reference rates

  • “Show the latest official SORA and published housing-loan reference-rate series.”
  • “Show 24 months of official mortgage reference-rate context and identify the latest period.”
  • “At a user-supplied illustrative rate, calculate the monthly payment on a S$600,000 mortgage.”
  • “Stress-test that mortgage at 2.5%, 3.5%, and 4.5%, with assumptions shown.”

These are official reference-rate statistics and educational calculations, not live lender offers, credit decisions, or personal financial advice.

Cross-series analysis and discovery

  • “Align these quarterly GDP and monthly CPI series to annual periods and explain the aggregation.”
  • “Compare two matched series and return observations, Pearson correlation, and calculation notes.”
  • “Create a text sparkline and chart-ready points for these observations.”
  • “Which Olano tool should answer: ‘How competitive was the latest COE bidding exercise?’”
  • “List prompt categories, then show examples for rail and property.”
  • “Show the compatibility record for sg_cross_dataset.”

Prompts and resources

The aggregate server packages reusable MCP prompts:

  • research-singapore
  • research-neighbourhood
  • research-company
  • analyze-property
  • analyze-mobility

It 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.

Compatibility contract

Version 0.2.0 includes a machine-readable compatibility registry for all 87 capabilities exposed by @altronis/sgdata-mcp@0.5.3. Each record names an Olano tool and marks the implementation as:

  • native — Olano implements the calculation or workflow directly;
  • delegated — a focused Olano tool covers the capability through the named upstream source; or
  • constrained — Olano exposes the safe, supportable building blocks and states what must be done explicitly instead of fabricating a result.

Use singapore_capability_registry to inspect the full mapping or singapore_capability_check to inspect one capability. The contract is checked in CI. Compatibility means coverage of the user need; it does not imply identical output, code, branding, or affiliation.

Olano extends that baseline with OneMap routing and geocoding, live LTA DataMall tools, a dedicated MRT/LRT package, stdio and Streamable HTTP, MCP prompts and resources, deterministic semantic routing, explicit freshness/source metadata, bounded retrieval, period-aware cross-series analysis, an optional persistent public-response cache, a standalone CLI, and packaged Agent Skills.

Packaged Agent Skills

The repository includes three 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.

See skills/README.md for installation and usage guidance.

Credentials and caching

VariablePurpose
DATA_GOV_SG_API_KEYOptional data.gov.sg key for production use and provider limits
ONEMAP_TOKENOneMap bearer token for authenticated OneMap tools and rail address lookup
LTA_DATAMALL_API_KEYLTA DataMall subscriber Account Key for dynamic transport APIs
OLANO_SG_CACHE_DIROptional absolute directory for the persistent public-response cache
OLANO_SG_PROFILEOptional 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.

Official upstream sources and attribution

The suite keeps source agency, dataset/table identifier, source URL, retrieval time, observation period, units, and freshness caveats wherever the upstream format allows it.

  • data.gov.sg developer guide — Singapore public datasets published by their named agencies, including ACRA, HDB, URA, MOE, ECDA, IRAS, STB, EMA, SPF, MOH, and NEA datasets used by the curated catalog.
  • OneMap API documentation — Singapore Land Authority address, geocoding, and routing services.
  • LTA DataMall — Land Transport Authority dynamic transport APIs and downloadable rail datasets.
  • SingStat Table Builder — Singapore Department of Statistics economic, business, labour, trade, and population tables.
  • Meteorological Service Singapore — official weather context; the implemented real-time feeds are retrieved through data.gov.sg.
  • Official bank interest rates dataset — SingStat-published series sourced from the Monetary Authority of Singapore, including SORA and published bank interest-rate statistics.
  • Singapore Open Data Licence — licence applying to covered data.gov.sg materials.

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.

Financial-data boundary

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.

Safety and engineering

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.

Development

Requires Node.js 20 or newer.

npm install
npm run format:check
npm run lint
npm test
npm run build

Inspect the aggregate server interactively:

npx @modelcontextprotocol/inspector node packages/singapore/dist/cli.js

See Architecture, Contributing, and Security.

Licence

Source code is released under the MIT License. Government data remains subject to the licence and terms published by each source agency.

Reviews

No reviews yet

Be the first to review this server!

Singapore MCP Server - Singapore public data, transport, rail, property, business, | MCP Marketplace