About myopendata
myopendata is a Malaysia open-data MCP server and CLI for people and agents querying public datasets, dashboards, statistics, weather, flood alerts, and transit data. It combines these sources in one keyless binary, though it implements a documented subset of the upstream tools.
Key features
- 01Unified dataset and dashboard search
- 02Dataset and dashboard details
- 03DOSM dataset access
- 04Weather and flood warnings
- 05GTFS routes and stops
- 06CLI and stdio MCP server
Use cases
- 01Find datasets or dashboards by topic
- 02Check Malaysia weather and flood warnings
- 03Look up GTFS transit routes and stops
MCP support
It runs as a stdio MCP server and exposes tools for searching and retrieving datasets, dashboards, DOSM data, weather, warnings, and GTFS transit information.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
16Saved tool list · updated 5d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | Maximum number of results to return. |
| query | string | Yes | Search query text. |
Details
From the project READMEmyopendata
myopendata reads Malaysia's open data: a unified search across the dataset catalogue and dashboards, dataset and dashboard details, Department of Statistics Malaysia (DOSM) datasets, weather forecasts and warnings, flood warnings, and GTFS transit routes and stops. One binary serves a command-line interface and a stdio MCP server.
This is a clean-room rebuild covering a labelled core subset of the documented tools (16 of 32); parquet, raw GTFS parsing, arrivals and location-search tools are not included. It is not an official Government of Malaysia server.
No API key is needed. The service is keyless, so myopendata works
with nothing configured. The API base URL can be overridden with
MYOPENDATA_API_URL; when it is not set, calls go to
https://api.data.gov.my.
Install
npx @reneturcios/myopendata list-datasets
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/myopendata
The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.
CLI
myopendata search-all "e-payment statistics" --limit 10
myopendata list-datasets --limit 5
myopendata search-datasets population
myopendata dataset population_malaysia
myopendata list-dashboards
myopendata search-dashboards health
myopendata dashboard kawasanku
myopendata list-dosm
myopendata dosm population
myopendata weather-forecast --location "Kuala Lumpur"
myopendata weather-warnings
myopendata flood-warnings
myopendata transport-agencies
myopendata transit-routes prasarana --category rapid-rail-kl
myopendata transit-stops ktmb
myopendata hello Ada
myopendata --version
Commands print the upstream JSON payload; hello prints a greeting
string. Exit codes: 0 on success, 1 when a call fails (including
an upstream API error), 2 for usage errors.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/myopendata mcp
MCP client configuration:
{
"mcpServers": {
"myopendata": {
"command": "npx",
"args": ["-y", "@reneturcios/myopendata", "mcp"]
}
}
}
To point the server at a different compatible host, add
MYOPENDATA_API_URL to the client's env for this server.
Tools
| Tool | Input | What it returns |
|---|---|---|
search_all | query (required), limit (optional) | Unified search results across datasets and dashboards. |
list_datasets_catalogue | limit (optional) | Datasets in the data catalogue. |
search_datasets_catalogue | query (required), limit (optional) | Catalogue datasets matching the query. |
get_dataset_details | id (required) | Details for one dataset. |
list_dashboards | limit (optional) | Available dashboards. |
search_dashboards | query (required), limit (optional) | Dashboards matching the query. |
get_dashboard_details | name (required) | Details for one dashboard. |
list_dosm_datasets | limit (optional) | DOSM datasets. |
get_dosm_dataset | id (required) | One DOSM dataset. |
get_weather_forecast | location (optional) | The weather forecast payload. |
get_weather_warnings | (none) | Current weather warnings. |
get_flood_warnings | (none) | Current flood warnings. |
list_transport_agencies | (none) | Transport agencies with GTFS data. |
get_transit_routes | provider (required), category (optional) | Transit routes for a GTFS provider. |
get_transit_stops | provider (required), category (optional) | Transit stops for a GTFS provider. |
hello | name (optional) | A greeting string. Health-check style tool for connectivity testing. |
Known GTFS providers in the upstream documentation include
mybas-johor, ktmb, and prasarana; common names are a feature of
the original server and are not normalised by this rebuild — pass
the provider id directly.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.