开放数据API服务

马来西亚开放数据API的MCP(Model Context Protocol)服务器,提供数据集、仪表板、DOSM、天气、洪水、parquet文件和GTFS交通数据的工具。

  • by hithereiamaliff
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 hithereiamaliff/mcp-datagovmy

使用说明

马来西亚开放数据MCP

MCP端点: https://mcp.techmavie.digital/datagovmy/mcp

分析仪表板: https://mcp.techmavie.digital/datagovmy/analytics/dashboard

马来西亚开放数据API的MCP(模型上下文协议)服务器,配备数据集、仪表板、DOSM、天气、洪水、拼花文件和GTFS交通数据工具。

这是 不 马来西亚政府、Jabatan Digital Negara或数字部的官方MCP服务器。

特性

  • 跨数据集和仪表板的统一搜索
  • 从以下位置获取实时元数据 data-gov-my/datagovmy-meta
  • 纯JavaScript拼花解析,具有原始、摘要和最新周期模式
  • GTFS静态和实时运输工具
  • GTFS位置搜索的零凭证地理编码
  • 内置分析端点和仪表板

地理编码

GTFS位置搜索现在使用 仅限提名(OpenStreetMap).

  • 无需谷歌地图、GrabMaps或AWS凭据
  • 托管的MCP URL在无凭据的情况下按原样工作
  • 请求被限制和缓存,以便对公共提名服务更友好
  • 自托管运营商可以选择设置 NOMINATIM_CONTACT_EMAIL

快速开始

托管服务器

直接使用托管端点:

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

MCP客户端配置示例:

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

不需要API密钥或地理编码凭据。

自托管

详细的VPS使用说明 部署/DEPLOYMENT.md.

npm install
npm run build
npm run start:http

工具概述

搜索和元数据

  • 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

文件和仪表板

  • parse_parquet_file
  • get_parquet_info
  • find_dashboard_for_parquet

天气和洪水

  • get_weather_forecast
  • get_weather_warnings
  • get_earthquake_warnings
  • get_flood_warnings

运输和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

杂项

  • hello

更多详细信息和使用指南请参阅 TOOLS.md 和 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"}'

分析

托管服务器公开:

  • /analytics JSON统计数据
  • /analytics/tools 用于工具使用统计信息
  • /analytics/dashboard 用于HTML仪表板

配置

核心环境变量

变量 默认值 描述
PORT 8080 HTTP服务器端口
HOST 0.0.0.0 绑定地址
API_BASE_URL https://api.data.gov.my 马来西亚开放数据API基础URL
CACHE_TTL 3600000 元数据缓存TTL(毫秒)
AXIOS_TIMEOUT 30000 HTTP超时(毫秒)
GITHUB_FETCH_BATCH_SIZE 20 并发GitHub元数据获取
GH_PAT empty 用于更高GitHub API速率限制的可选GitHub令牌
ANALYTICS_RESET_KEY 空 分析重置/导入端点的密钥
ANALYTICS_DIR /app/data 分析存储目录
FIREBASE_DATABASE_URL empty 用于分析持久性的Firebase实时数据库URL
FIREBASE_CREDENTIALS_PATH .credentials/firebase-service-account.json Firebase服务帐户路径
NOMINATIM_CONTACT_EMAIL empty 可选的联系电子邮件附加到自托管部署的Nominim查询中

示例 .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

提名备注

服务器现在依赖于公共提名进行GTFS位置名称搜索。该代码包括:

  • 习俗 User-Agent
  • 可选的 email 通过支持 NOMINATIM_CONTACT_EMAIL
  • 序列化请求,每二层有一个请求
  • 正负结果缓存

如果您希望持续的地理编码流量,请考虑自行托管兼容的地理编码器或通过您自己批准的服务进行路由。

项目结构

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。看 许可证.

致谢