@altronis/sgdata-mcp

@altronis/sgdata-mcp

Comprehensive Singapore government data MCP server - typed tools for SG datasets (data.gov.sg and more) for any AI agent. NPM: https://www.npmjs.com/package/@altronis/sgdata-mcp HOMEPAGE: https://altronis.sg

Category
访问服务器

README

@altronis/sgdata-mcp

A Singapore government data MCP server. 87 tools — 24 curated datasets + 7 SingStat tables + 6 live real-time feeds, CLI mode, data visualization, cross-dataset queries, natural language queries. Covering ACRA + HDB + URA + COE + CPI + GDP + employment + IRAS + MAS FX + MOE + ECDA + tourism + retail + population + crime + health + energy + hawkers + air quality + weather + carparks + live dengue. No API keys. Runs anywhere MCP runs. Full write-up: https://altronis.sg/blog/sgdata-mcp

npm version license: MIT node MCP

@altronis/sgdata-mcp is an MCP server that lets Claude, Cursor, Continue, or any other MCP-compatible client query Singapore government open data directly from data.gov.sg — corporate registry, real estate, labour, prices, public services, capital flows, crime, health, demographics, energy, and more.

It runs as a local stdio process on your machine. No hosted backend, no API keys. Small curated datasets cache locally at ~/.sgdata-mcp/sgdata.sqlite; large datasets (ACRA, HDB resale) and real-time feeds query data.gov.sg server-side so they never download a whole dataset onto your disk.

v0.5.0: 13 new tools + a smaller footprint. Real-time feedssg_psi (air quality), sg_weather_forecast, sg_air_temperature, sg_rainfall, sg_carpark_availability, and sg_dengue_clusters (live NEA clusters — current dengue, vs the frozen weekly-bulletin feed). SingStat tablessg_household_income, sg_wages, sg_deaths, sg_marriages, sg_divorces, sg_trade, sg_labour_force. sg_search_datasets now actually searches (data.gov.sg's q param is a no-op upstream, so it filters a cached catalog locally). ACRA + HDB-resale tools query server-side (datastore_search) instead of ingesting the full 56 MB / 23 MB datasets — no more multi-GB local cache. FX tools fixed (upstream metadata endpoint 404s; they now read live data via datastore_search).

⚠️ sg_acra_formations_by_ssic is a heavy tool. ACRA's SSIC+year filter can't be pushed server-side, so it crawls 27 shards with rate-limit backoff — expect ~1–3 minutes, and for older years the count is a lower bound (bounded: true). For fast formation counts by SSIC use the SingStat sg_formations_history / sg_formations_compare / sg_formations_monthly tools instead.

v0.4.1: sg_dataset_query no longer hangs on very large datasets (size-gated server-side paging via datastore_search + a 60s ingest guard); sg_fx_rate / sg_fx_history now accept ISO currency codes (USD, GBP, JPY, EUR, …); sg_tourism_latest now emits data_freshness (its upstream stops at 2014); and the _history tools return an available label list on a no-match so callers can self-correct.

v0.4.0 highlights: data_freshness metadata block emitted on every _latest tool — last_period, last_record_date, age_days, and a categorical level of fresh / ok / stale / frozen so agents can detect when an upstream data.gov.sg feed has gone silent. Fixes silent stale-data on sg_disease_latest (MOH stopped publishing the Weekly Infectious Disease Bulletin via data.gov.sg around epi week 2022-W52).

v0.3.2: Monthly business formations + cessations + net growth tools via SingStat Table Builder. Track month-by-month company creation vs closure for any SSIC industry. 74 tools total.

v0.3.1: Annual formation counts by industry via SingStat Table Builder.

v0.3.0: 8 new datasets, CLI mode, ASCII sparkline visualization, cross-dataset correlation queries, natural language query routing.

Data freshness

@altronis/sgdata-mcp is only as fresh as data.gov.sg. Some datasets are updated weekly (COE bidding, CPI), some monthly (unemployment, CPI sub-items), some quarterly (URA private property), and some have effectively stopped updating. Starting in v0.4.0 every _latest tool returns a data_freshness block so you can detect drift programmatically:

{
  "datasetId": "d_ca168b2cb763640d72c4600a68f9909e",
  "epi_week": "2022-W52",
  "cases": [...],
  "data_freshness": {
    "last_period": "2022-W52",
    "last_record_date": "2023-01-01",
    "age_days": 1234,
    "level": "frozen",
    "warning": "Upstream dataset appears frozen — latest record is 2022-W52..."
  }
}

Known frozen datasets (as of v0.4.1):

Tool Upstream dataset Last update Recommended action
sg_disease_latest, sg_disease_trend, sg_disease_list MOH Weekly Infectious Disease Bulletin 2022-W52 Cross-check moh.gov.sg weekly bulletin PDFs. PRs welcome to swap in a live source.
sg_tourism_latest, sg_tourism_history STB Annual Tourism Receipts 2014 Cross-check stb.gov.sg / SingStat for newer receipts. PRs welcome.

If you find another upstream feed has gone silent, please open an issue — we'll add it to this table and surface the warning in the tool description.


What you can ask Claude

Drop this server into Claude Desktop and you immediately unlock questions like:

  • "Find all AI/ML companies (SSIC 62019) incorporated in Singapore in 2025."
  • "What's the median resale price of 4-room HDB flats in Punggol over the last 6 months?"
  • "What is the latest COE Category A premium, and how has it trended over 12 months?"
  • "How many dengue cases were reported this week?"
  • "What's Singapore's unemployment rate? Show me the trend."
  • "Compare GDP growth vs crime rates over the last 5 years."
  • "How many scam cases were recorded in 2024?"
  • "What is Singapore's population and how fast is it growing?"
  • "How much electricity did Singapore generate last month?"
  • "Are birth rates declining? Show me the last 12 months."
  • "What were Singapore's tourism receipts by component?"
  • "Find hawker centres near Tampines."
  • "Which CPI categories are running hottest vs headline inflation?"
  • "Look up DBS Bank by UEN 196800306E."

Your model picks the right tool, fills in the filters, and returns structured rows. You never write a URL.


Quick start

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "sg-data": {
      "command": "npx",
      "args": ["-y", "@altronis/sgdata-mcp"]
    }
  }
}

Restart Claude Desktop. The 74 sg_* tools appear in the MCP tools menu.

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "sg-data": {
      "command": "npx",
      "args": ["-y", "@altronis/sgdata-mcp"]
    }
  }
}

Claude Code

claude mcp add sg-data -- npx -y @altronis/sgdata-mcp

CLI mode (new in v0.3.0)

Query Singapore data directly from the terminal — no MCP client needed:

# Natural language query
npx @altronis/sgdata-mcp query "What is Singapore's unemployment rate?"
npx @altronis/sgdata-mcp query "How many dengue cases this week?"
npx @altronis/sgdata-mcp query "Latest COE prices"

# Call a specific tool
npx @altronis/sgdata-mcp tool sg_crime_compare '{"year":"2024"}'
npx @altronis/sgdata-mcp tool sg_hawker_search '{"query":"bedok"}'

# List available tools and datasets
npx @altronis/sgdata-mcp list
npx @altronis/sgdata-mcp datasets

Standalone (kick the tyres)

# Run the MCP server directly
npx -y @altronis/sgdata-mcp

# Smoke-test via stdio
printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | npx -y @altronis/sgdata-mcp

What's in the box

Datasets (24)

# Dataset Agency Tools
1 ACRA Corporate Entities (~2M+) ACRA 3
2 HDB Resale Flat Prices (2017+) HDB 2
3 COE Bidding Results LTA 3
4 MOE Schools MOE 3
5 HDB Carpark Information HDB 3
6 GDP YoY Growth (quarterly) SingStat 3
7 Consumer Price Index (monthly) SingStat 3
8 MOM Median Gross Monthly Income MOM 2
9 Employment by Sector (annual) SingStat 3
10 URA Private Residential Transactions URA 3
11 International Visitor Arrivals STB 3
12 Retail Sales Index (monthly) SingStat 3
13 MAS Exchange Rates (monthly avg) MAS 3
14 IRAS Tax Collection (annual) IRAS 3
15 ECDA Childcare & Kindergarten Centres ECDA 3
16 Unemployment Rate (quarterly) MOM 2
17 Population Indicators (annual) SingStat 2
18 Infectious Disease Cases (weekly) MOH 3
19 Electricity Generation (monthly) EMA 2
20 Live-Births by Sex/Ethnicity (monthly) SingStat 2
21 Crime Cases Recorded (annual) SPF 3
22 Tourism Receipts (annual) STB 2
23 Government Hawker Centres NEA 2
24 Business Entity Formations & Cessations ACRA/DOS 6

Plus 3 generic fallback tools, 1 visualization tool, 2 cross-dataset tools, and 1 natural language query tool. Total: 74 tools.


New in v0.3.0

Data visualization — sg_visualize

Generate ASCII sparkline charts and summary statistics from any time series. Returns sparklines, min/max/mean/latest, period-over-period change, and chart-ready JSON for frontend rendering.

SG Unemployment Rate (SA): ▁█████▄▄████
Latest: 2 % | Change: +0 (+0%) | Range: 1.8–2 | Mean: 1.97

Cross-dataset queries — sg_cross_dataset

Compare any two datasets side-by-side over time. Automatically aligns different time granularities (monthly, quarterly, annual):

{
  "dataset_a": "cpi_monthly",
  "dataset_b": "retail_sales",
  "limit": 5
}

Returns aligned rows with both values for correlation analysis.

Natural language queries — sg_ask

Ask questions in plain English — the tool routes to the right dataset automatically:

"What is Singapore's unemployment rate?" → sg_unemployment_latest
"How many dengue cases?" → sg_disease_latest
"COE prices" → sg_coe_latest
"Crime statistics" → sg_crime_latest

CLI mode — no MCP client needed

Query data directly from your terminal:

sgdata-cli query "Singapore population growth"
sgdata-cli tool sg_crime_compare '{"year":"2024"}'
sgdata-cli datasets

Tools (74)

Meta tools

Tool Description
sg_ask Natural language query — ask any question about Singapore data in plain English
sg_visualize ASCII sparkline + summary stats + chart-ready JSON from any numeric series
sg_cross_dataset Compare two datasets over time with automatic period alignment
sg_list_datasets List all 24 curated datasets with IDs, names, and agencies

Generic tools — any data.gov.sg dataset

Tool Description
sg_search_datasets Full-text discovery across all data.gov.sg datasets
sg_dataset_schema Column labels, agency, format for any dataset ID
sg_dataset_query Query any dataset with filters, auto-downloads and caches

Curated dataset tools (67)

ACRA (3): sg_acra_search_entities, sg_acra_get_entity, sg_acra_formations_by_ssic

HDB Resale (2): sg_hdb_resale_search, sg_hdb_resale_stats

COE (3): sg_coe_latest, sg_coe_history, sg_coe_demand_supply

MOE Schools (3): sg_moe_search_schools, sg_moe_school_by_name, sg_moe_schools_near

HDB Carparks (3): sg_hdb_carpark_lookup, sg_hdb_carparks_by_address, sg_hdb_carparks_by_type

GDP (3): sg_gdp_latest, sg_gdp_history, sg_gdp_industry_compare

CPI (3): sg_cpi_latest, sg_cpi_history, sg_cpi_yoy

Income (2): sg_median_income_lookup, sg_median_income_history

Employment (3): sg_employment_by_sector, sg_employment_sector_history, sg_employment_growth

URA Property (3): sg_ura_private_txn_latest, sg_ura_private_txn_history, sg_ura_new_sale_pipeline

Visitor Arrivals (3): sg_visitors_latest, sg_visitors_history, sg_visitors_top_sources

Retail Sales (3): sg_retail_sales_latest, sg_retail_sales_history, sg_retail_sales_yoy

MAS FX (3): sg_fx_rate, sg_fx_history, sg_fx_basket

IRAS Tax (3): sg_iras_collection, sg_iras_collection_history, sg_iras_tax_mix

ECDA Childcare (3): sg_ecda_search_centres, sg_ecda_centres_near, sg_ecda_vacancy_summary

Unemployment (2): sg_unemployment_latest, sg_unemployment_history

Population (2): sg_population_latest, sg_population_history

Disease/Health (3): sg_disease_latest, sg_disease_trend, sg_disease_list

Electricity (2): sg_electricity_latest, sg_electricity_history

Births (2): sg_births_latest, sg_births_history

Crime (3): sg_crime_latest, sg_crime_history, sg_crime_compare

Tourism (2): sg_tourism_latest, sg_tourism_history

Hawker Centres (2): sg_hawker_search, sg_hawker_stats

Business Formations & Cessations (6): sg_formations_latest, sg_formations_history, sg_formations_compare, sg_formations_monthly, sg_cessations_monthly, sg_net_formations


Architecture

┌─────────────────┐    spawn    ┌──────────────────────┐
│ Claude Desktop  │ ──────────▶ │ sgdata-mcp (node)   │
│ /Cursor/Code    │ ◀── stdio ─▶│ runs on your machine │
└─────────────────┘             └──────┬───────────────┘
                                       │ HTTPS (first fetch only)
                                       ▼
                              api.data.gov.sg/v2/...
                                       │
                                       ▼
                            ~/.sgdata-mcp/sgdata.sqlite
                            (shared local SQLite cache)

Caching policy

  • Location. ~/.sgdata-mcp/sgdata.sqlite by default.
  • Override. Set SGDATA_MCP_CACHE_DIR=/custom/path.
  • Refresh cadence. Per-dataset — daily for ECDA, weekly for HDB/COE/disease, monthly for ACRA/CPI/GDP/FX/retail/visitors/births/electricity, quarterly for MOE/URA/employment/unemployment, annually for IRAS/income/crime/population/tourism.
  • Wipe. rm ~/.sgdata-mcp/sgdata.sqlite — next query rebuilds.
  • Disk. ~480 MB with ACRA, under 20 MB without.

Comparison

@altronis/sgdata-mcp sgdata-mcp (by vdineshk)
Tools 74 5
Coverage Corporate registry, real estate, prices, labour, tourism, FX, tax, public services, crime, health, demographics, energy Real-time weather, traffic, carpark availability
CLI mode Yes No
Data visualization Yes (sparklines + chart-ready JSON) No
Cross-dataset queries Yes No
NL query routing Yes No
Caching Yes (SQLite) No
API keys None None

Both packages complement each other — install both for the full picture.


Disclaimer

This tool fetches and caches data from data.gov.sg. While we take care to preserve data integrity during ingestion, you should independently verify any data before making decisions based on it.

  • Data accuracy. All data originates from Singapore government agencies via data.gov.sg. We do not alter source values, but column mappings, wide-to-long transformations, and caching may introduce discrepancies. Always cross-check critical figures against the official source.
  • Not professional advice. This tool is not a substitute for professional financial, legal, medical, or policy advice. GDP figures, crime statistics, disease counts, property prices, and other data are provided for informational purposes only.
  • Staleness. Cached data may be hours to weeks behind the source depending on the dataset's refresh window. Check ingestedAt timestamps if freshness matters.
  • No warranty. This software is provided "as is" under the MIT licence, without warranty of any kind.

FAQ

Do I need an API key? No. data.gov.sg open datasets are public.

Where is the data stored? On your machine, in ~/.sgdata-mcp/sgdata.sqlite.

How often is data refreshed? Per-dataset, from daily to annually.

Is this production-ready? Yes. 74 tools, all tested against live data. File issues on GitHub if you hit anything sharp.

Can I add my own dataset? Yes — either use the generic tools for ad-hoc queries, or open a PR adding a handler under src/datasets/.


License

MIT

Attribution

Contains information from data.gov.sg under the Singapore Open Data Licence v1.0.


Contributing

Found a bug? Want a dataset added? Open an issue or PR on GitHub.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选