Mcp Datagovmy — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Datagovmy (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP Endpoint: https://mcp.techmavie.digital/datagovmy/mcp
Analytics Dashboard: https://mcp.techmavie.digital/datagovmy/analytics/dashboard
MCP (Model Context Protocol) server for Malaysia's open data APIs, with tools for datasets, dashboards, DOSM, weather, floods, parquet files, and GTFS transit data.
This is not an official MCP server from the Government of Malaysia, Jabatan Digital Negara, or the Ministry of Digital.
data-gov-my/datagovmy-metaGTFS location search now uses Nominatim (OpenStreetMap) only.
NOMINATIM_CONTACT_EMAILUse the hosted endpoint directly:
https://mcp.techmavie.digital/datagovmy/mcpExample MCP client config:
{
"mcpServers": {
"malaysia-opendata": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/datagovmy/mcp"
}
}
}No API keys or geocoding credentials are needed.
Detailed VPS instructions live in deploy/DEPLOYMENT.md.
npm install
npm run build
npm run start:httpsearch_alllist_datasets_cataloguesearch_datasets_cataloguefilter_datasets_catalogueget_dataset_filtersget_dataset_detailslist_dashboardssearch_dashboardsget_dashboard_detailsget_dashboard_chartslist_dosm_datasetsget_dosm_datasetparse_parquet_fileget_parquet_infofind_dashboard_for_parquetget_weather_forecastget_weather_warningsget_earthquake_warningsget_flood_warningslist_transport_agenciesget_transport_dataget_gtfs_staticget_gtfs_realtime_vehicle_positionparse_gtfs_staticparse_gtfs_realtimeget_transit_routesget_transit_stopsget_transit_arrivalssearch_transit_stops_by_locationfind_nearest_transit_stopshelloMore detail and usage guidance lives in TOOLS.md and PROMPT.md.
# Install dependencies
npm install
# Run the HTTP server in development mode
npm run dev:http
# Build and run the production server locally
npm run build
npm run start:http
# Verify the server
curl http://localhost:8080/health
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'The hosted server exposes:
/analytics for JSON stats/analytics/tools for tool usage stats/analytics/dashboard for the HTML dashboard| Variable | Default | Description |
|---|---|---|
PORT | 8080 | HTTP server port |
HOST | 0.0.0.0 | Bind address |
API_BASE_URL | https://api.data.gov.my | Malaysia Open Data API base URL |
CACHE_TTL | 3600000 | Metadata cache TTL in ms |
AXIOS_TIMEOUT | 30000 | HTTP timeout in ms |
GITHUB_FETCH_BATCH_SIZE | 20 | Concurrent GitHub metadata fetches |
GH_PAT | empty | Optional GitHub token for higher GitHub API rate limits |
ANALYTICS_RESET_KEY | empty | Secret key for analytics reset/import endpoints |
ANALYTICS_DIR | /app/data | Analytics storage directory |
FIREBASE_DATABASE_URL | empty | Firebase Realtime Database URL for analytics persistence |
FIREBASE_CREDENTIALS_PATH | .credentials/firebase-service-account.json | Firebase service account path |
NOMINATIM_CONTACT_EMAIL | empty | Optional contact email appended to Nominatim queries for self-hosted deployments |
Example .env:
GH_PAT=your_github_pat_here
[email protected]
ANALYTICS_RESET_KEY=your_analytics_reset_key_here
ANALYTICS_DIR=/app/data
FIREBASE_DATABASE_URL=your_firebase_database_url_here
FIREBASE_CREDENTIALS_PATH=.credentials/firebase-service-account.jsonThe server now depends on public Nominatim for GTFS location-name searches. The code includes:
User-Agentemail support via NOMINATIM_CONTACT_EMAILIf you expect sustained geocoding traffic, consider self-hosting a compatible geocoder or routing through your own approved service.
src/
index.ts
http-server.ts
config.ts
datacatalogue.tools.ts
dashboards.tools.ts
dosm.tools.ts
flood.tools.ts
gtfs.tools.ts
parquet.tools.ts
transport.tools.ts
unified-search.tools.ts
weather.tools.ts
firebase-analytics.ts
utils/
deploy/
DEPLOYMENT.md
nginx-mcp.conf# Docker logs
docker compose logs -f
# Local health check
curl http://localhost:8080/health
# Hosted MCP tool list
curl -X POST https://mcp.techmavie.digital/datagovmy/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'MIT. See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.