Claude Marketplaces
SkillsMCP serversMarketplacesDigestTools
Submit

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP servers by category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control
Claude Marketplaces

An independent directory of skills, plugins and MCP servers for Claude Code. Not affiliated with Anthropic.

Browse

  • Skills
  • MCP servers
  • Marketplaces
  • Weekly digest
  • Skill index
  • MCP index
  • Marketplace index

Site

  • About
  • Tools
  • Submit
  • Feedback
  • Privacy
  • llms.txt
  • Plugins reference

Maker

  • Snug
  • Agent Caffeine
  • knobs
  • Wax
  • Vectoys
  • mertduzgun.com
Crafted at
MCP servers/Data & Analytics
hithereiamaliff avatar

Hithereiamaliff Mcp Datagovmy

hithereiamaliff/mcp-datagovmy

Connects Claude to Malaysia's government open data ecosystem through a unified MCP interface. You get search and metadata tools for datasets and dashboards, live parquet file parsing in three modes (raw, summary, latest period), GTFS static and realtime transit data with Nominatim geocoding, plus weather forecasts, earthquake warnings, and flood alerts from the Malaysian Meteorological Department. The hosted endpoint works credential free, or you can self host with optional Firebase analytics persistence. Reach for this when you need programmatic access to DOSM statistics, public transit schedules, environmental warnings, or any of the 200+ datasets in the data.gov.my catalogue without manually wrangling APIs.

GitHub stars
3
tools
31
last updated
Sep 11, 2025
View on GitHubSave

Tools

31 tools

Public tool metadata for what this MCP can expose to an agent.

datagovmy_list_datasets_catalogueLists all datasets from the comprehensive catalogue with rich metadata2 params

Lists all datasets from the comprehensive catalogue with rich metadata

Parameters* required
limitnumber
Number of results to return (1-100)
offsetnumber
Number of records to skip for pagination
datagovmy_search_datasets_catalogue⚠️ CONSIDER USING search_all INSTEAD: This only searches datasets. For comprehensive results across datasets and dashboards, use search_all tool. ⚠️2 params

⚠️ CONSIDER USING search_all INSTEAD: This only searches datasets. For comprehensive results across datasets and dashboards, use search_all tool. ⚠️

Parameters* required
limitnumber
Number of results to return (1-100)
querystring
Search query to match against dataset metadata
datagovmy_filter_datasets_catalogueFilter datasets by various criteria such as frequency, geography, etc.7 params

Filter datasets by various criteria such as frequency, geography, etc.

Parameters* required
dataSourcearray
Filter by data source organization
demographyarray
Filter by demographic coverage
frequencystring
Filter by data frequency (e.g., DAILY, MONTHLY, ANNUAL)
geographyarray
Filter by geographic coverage
limitnumber
Number of results to return (1-100)
offsetnumber
Number of records to skip for pagination
yearRangearray
Filter by year range [start, end]
datagovmy_get_dataset_filtersGet available filter options for datasets

Get available filter options for datasets

No parameter schema in public metadata yet.

datagovmy_get_dataset_detailsGet comprehensive metadata for a dataset by ID1 params

Get comprehensive metadata for a dataset by ID

Parameters* required
idstring
ID of the dataset to retrieve metadata for
datagovmy_list_dosm_datasetsLists available datasets from the Department of Statistics Malaysia3 params

Lists available datasets from the Department of Statistics Malaysia

Parameters* required
dataset_idstring
Optional specific dataset ID to list (e.g., "cpi_core", "cpi_strata")
limitnumber
Maximum number of datasets to return
offsetnumber
Number of datasets to skip
datagovmy_get_dosm_datasetGets data from a specific DOSM dataset3 params

Gets data from a specific DOSM dataset

Parameters* required
idstring
ID of the dataset to retrieve (e.g., "cpi_core", "cpi_strata")
limitnumber
Maximum number of records to return
offsetnumber
Number of records to skip
datagovmy_get_weather_forecastGets weather forecast for Malaysia2 params

Gets weather forecast for Malaysia

Parameters* required
daysnumber
Number of days to forecast (1-7)
locationstring
Location name (e.g., "Kuala Lumpur", "Penang")
datagovmy_get_weather_warningsGets current weather warnings for Malaysia2 params

Gets current weather warnings for Malaysia

Parameters* required
locationstring
Location name to filter warnings
typestring
Type of warning (e.g., "rain", "flood", "all")
datagovmy_get_earthquake_warningsGets earthquake warnings for Malaysia2 params

Gets earthquake warnings for Malaysia

Parameters* required
daysnumber
Number of days to look back (1-30)
magnitudenumber
Minimum magnitude to include
datagovmy_list_dashboardsLists all available dashboards from the Malaysia Open Data platform2 params

Lists all available dashboards from the Malaysia Open Data platform

Parameters* required
limitnumber
Number of results to return (1-100)
offsetnumber
Number of records to skip for pagination
datagovmy_search_dashboards⚠️ CONSIDER USING search_all INSTEAD: This only searches dashboards. For comprehensive results across datasets and dashboards, use search_all tool. ⚠️2 params

⚠️ CONSIDER USING search_all INSTEAD: This only searches dashboards. For comprehensive results across datasets and dashboards, use search_all tool. ⚠️

Parameters* required
limitnumber
Number of results to return (1-100)
querystring
Search query to match against dashboard metadata
datagovmy_get_dashboard_detailsGet comprehensive metadata for a dashboard by name1 params

Get comprehensive metadata for a dashboard by name

Parameters* required
namestring
Name of the dashboard to retrieve metadata for
datagovmy_get_dashboard_chartsGet chart configurations for a specific dashboard1 params

Get chart configurations for a specific dashboard

Parameters* required
namestring
Name of the dashboard to retrieve charts for
datagovmy_search_all⭐⭐⭐ PRIMARY SEARCH TOOL: Always use this first for any data or visualization queries. Searches across both datasets and dashboards with intelligent fallback. ⭐⭐⭐3 params

⭐⭐⭐ PRIMARY SEARCH TOOL: Always use this first for any data or visualization queries. Searches across both datasets and dashboards with intelligent fallback. ⭐⭐⭐

Parameters* required
limitnumber
Number of results to return (1-20)
prioritizestring
Type of content to prioritize in resultsone of dataset · dashboard
querystring
Search query to match against all content
datagovmy_parse_parquet_fileParse and display data from a Parquet file URL2 params

Parse and display data from a Parquet file URL

Parameters* required
maxRowsnumber
Maximum number of rows to return (1-2000)
urlstring
URL of the Parquet file to parse
datagovmy_get_parquet_infoGet metadata and structure information about a Parquet file1 params

Get metadata and structure information about a Parquet file

Parameters* required
urlstring
URL of the Parquet file to analyze
datagovmy_find_dashboard_for_parquetFind the corresponding dashboard for a Parquet file1 params

Find the corresponding dashboard for a Parquet file

Parameters* required
urlstring
URL of the parquet file
datagovmy_parse_gtfs_staticParse GTFS Static data for a specific transport provider. IMPORTANT: For transit queries like "Show me routes from Rapid Penang", use get_transit_routes directly with the provider name. This is a low-level tool - prefer using get_transit_routes or get_transit_stops for most us...3 params

Parse GTFS Static data for a specific transport provider. IMPORTANT: For transit queries like "Show me routes from Rapid Penang", use get_transit_routes directly with the provider name. This is a low-level tool - prefer using get_transit_routes or get_transit_stops for most us...

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
force_refreshboolean
Force refresh the cache
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana")
datagovmy_parse_gtfs_realtimeParse GTFS Realtime data for a specific transport provider. IMPORTANT: For transit queries like "Show me bus locations from Rapid Penang", use this tool directly with the provider name. Common names like "rapid penang", "rapid kuantan", or "mybas johor" are automatically mappe...3 params

Parse GTFS Realtime data for a specific transport provider. IMPORTANT: For transit queries like "Show me bus locations from Rapid Penang", use this tool directly with the provider name. Common names like "rapid penang", "rapid kuantan", or "mybas johor" are automatically mappe...

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
force_refreshboolean
Force refresh the cache
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana")
datagovmy_get_transit_routesGet transit routes from GTFS data. IMPORTANT: For transit route queries like "Show me bus routes for Rapid Penang", use this tool directly with the provider name.3 params

Get transit routes from GTFS data. IMPORTANT: For transit route queries like "Show me bus routes for Rapid Penang", use this tool directly with the provider name.

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana")
route_idstring
Specific route ID to filter by
datagovmy_get_transit_stopsGet transit stops from GTFS data. IMPORTANT: For transit stop queries like "Show me bus stops for Rapid Penang", use this tool directly with the provider name. The tool supports common names like "rapid penang", "rapid kuantan", "ktmb", or "mybas johor" which will be automatic...4 params

Get transit stops from GTFS data. IMPORTANT: For transit stop queries like "Show me bus stops for Rapid Penang", use this tool directly with the provider name. The tool supports common names like "rapid penang", "rapid kuantan", "ktmb", or "mybas johor" which will be automatic...

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana")
route_idstring
Filter stops by route ID (optional)
stop_idstring
Specific stop ID to retrieve (optional)
datagovmy_get_transit_arrivalsGet real-time transit arrivals at a specific stop. IMPORTANT: Use this tool directly for queries like "When will the next bus arrive at my stop?" or "Show me arrival times for Rapid Penang buses at stop X".5 params

Get real-time transit arrivals at a specific stop. IMPORTANT: Use this tool directly for queries like "When will the next bus arrive at my stop?" or "Show me arrival times for Rapid Penang buses at stop X".

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
limitnumber
Maximum number of arrivals to return (default: 10)
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana", or common names like "rapid penang")
route_idstring
Optional: filter arrivals by route
stop_idstring
ID of the stop to get arrivals for
datagovmy_search_transit_stops_by_locationSearch for transit stops near a named location. IMPORTANT: Use this tool for queries like "Show me bus stops near KLCC" or "What buses stop at KL Sentral?" This tool geocodes the location name to coordinates, then finds nearby stops. CRITICAL: For Rapid KL services, ALWAYS use...8 params

Search for transit stops near a named location. IMPORTANT: Use this tool for queries like "Show me bus stops near KLCC" or "What buses stop at KL Sentral?" This tool geocodes the location name to coordinates, then finds nearby stops. CRITICAL: For Rapid KL services, ALWAYS use...

Parameters* required
arrivals_limitnumber
Maximum number of arrivals to include per stop (default: 3)
categorystring
Category for Prasarana data (required only for prasarana provider)
countrystring
Country code to limit geocoding results (default: "my" for Malaysia)
include_arrivalsboolean
Whether to include upcoming arrivals for each stop (default: true)
limitnumber
Maximum number of stops to return (default: 5)
locationstring
Location name to search for (e.g., "KLCC", "KL Sentral", "Penang Airport")
max_distancenumber
Maximum distance in kilometers (default: 5)
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana", or common names like "rapid penang")
datagovmy_find_nearest_transit_stopsFind the nearest transit stops to a given location. IMPORTANT: Use this tool directly for queries like "Where is the nearest bus stop to my location?" or "How do I get to the nearest Rapid Penang bus stop?"6 params

Find the nearest transit stops to a given location. IMPORTANT: Use this tool directly for queries like "Where is the nearest bus stop to my location?" or "How do I get to the nearest Rapid Penang bus stop?"

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
latitudenumber
Latitude of the user's location
limitnumber
Maximum number of stops to return (default: 5)
longitudenumber
Longitude of the user's location
max_distancenumber
Maximum distance in kilometers (default: 5)
providerstring
Provider name (e.g., "mybas-johor", "ktmb", "prasarana", or common names like "rapid penang")
datagovmy_list_transport_agenciesLists available transport agencies with GTFS data2 params

Lists available transport agencies with GTFS data

Parameters* required
limitnumber
Maximum number of agencies to return
offsetnumber
Number of agencies to skip
datagovmy_get_transport_dataGets GTFS data for a specific transport agency3 params

Gets GTFS data for a specific transport agency

Parameters* required
dataset_idstring
ID of the GTFS dataset (e.g., "gtfs_rapidkl", "gtfs_prasarana")
limitnumber
Maximum number of records to return
offsetnumber
Number of records to skip
datagovmy_get_gtfs_staticGets GTFS static data for a specific transport provider4 params

Gets GTFS static data for a specific transport provider

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
limitnumber
Maximum number of records to return
offsetnumber
Number of records to skip
providerstring
Provider name (e.g., "rapidkl", "ktmb", "prasarana")
datagovmy_get_gtfs_realtime_vehicle_positionGets GTFS realtime vehicle position data for a specific transport provider4 params

Gets GTFS realtime vehicle position data for a specific transport provider

Parameters* required
categorystring
Category for Prasarana data (required only for prasarana provider)
limitnumber
Maximum number of records to return
offsetnumber
Number of records to skip
providerstring
Provider name (e.g., "rapidkl", "ktmb", "prasarana")
datagovmy_get_flood_warningsGets current flood warnings for Malaysia3 params

Gets current flood warnings for Malaysia

Parameters* required
districtstring
District name to filter warnings
severitystring
Severity level to filter (e.g., "warning", "alert", "danger")
statestring
State name to filter warnings (e.g., "Selangor", "Johor")
datagovmy_helloA simple test tool to verify that the MCP server is working correctly

A simple test tool to verify that the MCP server is working correctly

No parameter schema in public metadata yet.

Sponsors

SnugThe clipboard manager you and your agent can use, safelyAgent CaffeineClose your lid, come back to finished workWaxBlock anything with supervision, without erasing your iPhoneOpen StepsSponsoredFree and open-source skills that make AI coding agents easier to understand, verify, and control.

Readme

Malaysia Open Data MCP

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.

Features

  • Unified search across datasets and dashboards
  • Live metadata fetching from data-gov-my/datagovmy-meta
  • Pure JavaScript parquet parsing with raw, summary, and latest-period modes
  • GTFS static and realtime transit tools
  • Zero-credential geocoding for GTFS location search
  • Built-in analytics endpoints and dashboard

Geocoding

GTFS location search now uses Nominatim (OpenStreetMap) only.

  • No Google Maps, GrabMaps, or AWS credentials are required
  • The hosted MCP URL works as-is with zero credentials
  • Requests are throttled and cached to be friendlier to the public Nominatim service
  • Self-hosted operators can optionally set NOMINATIM_CONTACT_EMAIL

Quick Start

Hosted server

Use the hosted endpoint directly:

https://mcp.techmavie.digital/datagovmy/mcp

Example MCP client config:

{
  "mcpServers": {
    "malaysia-opendata": {
      "transport": "streamable-http",
      "url": "https://mcp.techmavie.digital/datagovmy/mcp"
    }
  }
}

No API keys or geocoding credentials are needed.

Self-hosted

Detailed VPS instructions live in deploy/DEPLOYMENT.md.

npm install
npm run build
npm run start:http

Tool Overview

Search and metadata

  • search_all
  • list_datasets_catalogue
  • search_datasets_catalogue
  • filter_datasets_catalogue
  • get_dataset_filters
  • get_dataset_details
  • list_dashboards
  • search_dashboards
  • get_dashboard_details
  • get_dashboard_charts
  • list_dosm_datasets
  • get_dosm_dataset

Files and dashboards

  • parse_parquet_file
  • get_parquet_info
  • find_dashboard_for_parquet

Weather and floods

  • get_weather_forecast
  • get_weather_warnings
  • get_earthquake_warnings
  • get_flood_warnings

Transport and GTFS

  • list_transport_agencies
  • get_transport_data
  • get_gtfs_static
  • get_gtfs_realtime_vehicle_position
  • parse_gtfs_static
  • parse_gtfs_realtime
  • get_transit_routes
  • get_transit_stops
  • get_transit_arrivals
  • search_transit_stops_by_location
  • find_nearest_transit_stops

Misc

  • hello

More detail and usage guidance lives in TOOLS.md and PROMPT.md.

Local Development

# 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"}'

Analytics

The hosted server exposes:

  • /analytics for JSON stats
  • /analytics/tools for tool usage stats
  • /analytics/dashboard for the HTML dashboard

Configuration

Core environment variables

VariableDefaultDescription
PORT8080HTTP server port
HOST0.0.0.0Bind address
API_BASE_URLhttps://api.data.gov.myMalaysia Open Data API base URL
CACHE_TTL3600000Metadata cache TTL in ms
AXIOS_TIMEOUT30000HTTP timeout in ms
GITHUB_FETCH_BATCH_SIZE20Concurrent GitHub metadata fetches
GH_PATemptyOptional GitHub token for higher GitHub API rate limits
ANALYTICS_RESET_KEYemptySecret key for analytics reset/import endpoints
ANALYTICS_DIR/app/dataAnalytics storage directory
FIREBASE_DATABASE_URLemptyFirebase Realtime Database URL for analytics persistence
FIREBASE_CREDENTIALS_PATH.credentials/firebase-service-account.jsonFirebase service account path
NOMINATIM_CONTACT_EMAILemptyOptional contact email appended to Nominatim queries for self-hosted deployments

Example .env:

GH_PAT=your_github_pat_here
NOMINATIM_CONTACT_EMAIL=your-email@example.com
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.json

Nominatim Notes

The server now depends on public Nominatim for GTFS location-name searches. The code includes:

  • A custom User-Agent
  • Optional email support via NOMINATIM_CONTACT_EMAIL
  • Serialized requests with a 1 request/second floor
  • Positive and negative result caching

If you expect sustained geocoding traffic, consider self-hosting a compatible geocoder or routing through your own approved service.

Project Structure

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

Troubleshooting

# 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"}'

License

MIT. See LICENSE.

Acknowledgments

  • Malaysia Open Data Portal
  • Department of Statistics Malaysia
  • Malaysian Meteorological Department
  • Nominatim
  • Model Context Protocol

Details

Repository
github.com/hithereiamaliff/mcp-datagovmy
Category
Data & Analytics
Transport
HTTP
Auth
Required
Registry
MCP registry, active

More from hithereiamaliff

  • Malaysia Transit MCP
  • Singapore LTA DataMall MCP Server
  • Singapore LTA DataMall MCP Server
  • Malaysia Open Data MCP Server
  • Hithereiamaliff Mcp Nextcloud36

Related Data & Analytics MCP servers

View all
1bepunk avatarZoogentbepunk/zoogentAI agent orchestrator with Architect AI. Multi-team, web dashboard, 35+ MCP tools.3stars
2carboneio avatarCarbone MCPcarboneio/carbone-mcpGenerate PDF/DOCX/XLSX/PPTX from templates+JSON. Convert Office/HTML/MD to PDF. Universal templating3stars
3cmeans avatarClipboardcmeans/mcp-clipboardRead and write the system clipboard — tables, text, code, JSON, URLs, images, and more.3stars
4thinkchainai avatarUK Air Quality MCP Server from MCPBundlesthinkchainai/mcpbundlesAccess UK air quality data, monitoring sites, and hourly pollutant measurements across regions3stars
5thinkchainai avatarUK Civic & Parliamentary Data MCP Server from MCPBundlesthinkchainai/mcpbundlesQuery UK Parliament, elections, crime stats, ONS census data, and national archives3stars
6thinkchainai avatarUK Environmental Intelligence MCP Server from MCPBundlesthinkchainai/mcpbundlesAccess UK flood warnings, river levels, water quality, Met Office forecasts, and carbon data3stars