Skip to main content
Glama
monthop-gmail

Fuel Radar MCP Server

จากข้อมูลสาธารณะ (Open Data) สู่ความพร้อมทาง AI (AI-Ready)

Status MCP Docker Open in GitHub Codespaces

โปรเจกต์นี้สาธิตกระบวนการยกระดับ ข้อมูลสาธารณะ (Open Data) ให้เป็น AI-Ready Data (Level 6) ตามโมเดล 5+1 Star Open Data พร้อม MCP Server ที่ทำให้ AI Agent เข้าถึงข้อมูลได้ทันที

โดยใช้ข้อมูลรายงานสถานะน้ำมันจากชุมชนของ thaipumpradar.com เป็นกรณีศึกษา


แนวคิด: 5+1 Star Open Data Model

★       Level 1: PDF, DOCX              → มนุษย์อ่านได้
★★      Level 2: Excel, CSV             → มีโครงสร้าง
★★★     Level 3: JSON, XML + Metadata   → รูปแบบเปิด
★★★★    Level 4: REST API               → เข้าถึงแบบ Real-time
★★★★★   Level 5: RDF, Linked Data       → เชื่อมโยงเชิงความหมาย
★★★★★★  Level 6: AI-Ready Data          → พร้อมใช้กับ AI/ML ทันที  ← เป้าหมายของโปรเจกต์นี้

รายละเอียดเพิ่มเติม: research/open_data_model.md


Architecture Overview

┌─────────────────────┐     ┌──────────────────────┐     ┌─────────────────────┐
│   Data Source        │     │   ETL Pipeline       │     │   AI-Ready Output   │
│                      │     │                      │     │                     │
│  thaipumpradar.com   │────▶│  process_radar.py    │────▶│  radar_clean.jsonl  │
│  (REST API)          │     │  - Fetch             │     │  radar_clean.parquet│
│                      │     │  - Validate (≥0.3)   │     │  datacard.md        │
└─────────────────────┘     │  - Clean & Normalize │     └────────┬────────────┘
                             └──────────────────────┘              │
                                                                   ▼
                             ┌──────────────────────┐     ┌─────────────────────┐
                             │   AI Agent           │     │   MCP Server        │
                             │                      │◀───▶│                     │
                             │  Claude, Cursor,     │     │  search_fuel_status │
                             │  หรือ AI อื่น ๆ       │     │  get_fuel_summary   │
                             └──────────────────────┘     │  (port 3000)        │
                                                          └─────────────────────┘

โครงสร้างโครงการ (Project Structure)

.
├── .devcontainer/             # GitHub Codespaces config
│   └── devcontainer.json
├── pipeline/                  # Data Pipeline & MCP Server
│   ├── process_radar.py       # ETL: ดึง → ตรวจสอบ → ทำความสะอาด → บันทึก
│   ├── datacard.md            # Data Card: metadata ของชุดข้อมูล
│   ├── mcp_server.py          # MCP Server แบบ Stdio (Legacy/Windows)
│   └── mcp_server_modern.py   # MCP Server แบบ HTTP/SSE (Modern/Docker)
├── data/                      # ข้อมูลที่ผ่านการประมวลผล
│   ├── raw.json               # ข้อมูลดิบจาก API
│   ├── radar_clean.jsonl      # สำหรับ AI/RAG (1 record ต่อ 1 บรรทัด)
│   └── radar_clean.parquet    # สำหรับ Analytics (columnar format)
├── demo/                      # ตัวอย่างการใช้งาน
│   ├── demonstrate_ai.py      # สคริปต์สาธิต AI Analysis + Mock RAG
│   └── demonstration_results.md
├── research/                  # เอกสารวิจัยและกรอบการทำงาน
│   ├── open_data_model.md     # โมเดล 5+1 Star Open Data
│   ├── thaipumpradar_analysis_th.md  # วิเคราะห์แหล่งข้อมูล
│   ├── ai_ready_audit.md      # เกณฑ์ตรวจสอบ AI-Ready Checklist
│   ├── ai_governance_framework.md    # กรอบธรรมาภิบาล AI & Data
│   ├── how_to_add_mcp_tools.md      # คู่มือเพิ่ม MCP Tools + Prompt Templates
│   ├── rag_explained.md            # RAG vs MCP อธิบายให้แยกออก
│   ├── data_ingestion_explained.md # Data Ingestion vs ETL vs Pipeline
│   ├── glossary.md                # พจนานุกรมศัพท์ 50+ คำ
│   ├── how_to_test_mcp_tools.md   # วิธีทดสอบ/Debug MCP Tools
│   └── common_mistakes.md         # ข้อผิดพลาดที่มักเจอ + วิธีแก้
├── Dockerfile                 # Container image (Python 3.12)
├── docker-compose.yml         # Multi-service deployment
└── requirements.txt           # Python dependencies

วิธีการติดตั้งและใช้งาน (Getting Started)

Prerequisites

  • Docker & Docker Compose (สำหรับรันแบบ Container)

  • หรือ Python 3.12+ (สำหรับรันในเครื่อง)

วิธีที่ 1: GitHub Codespaces (เริ่มใช้งานได้ทันที)

  1. กดปุ่ม "Open in GitHub Codespaces" ด้านบน

  2. รอให้ Codespace สร้างเสร็จ — MCP Server จะเริ่มทำงานอัตโนมัติ

  3. ดู URL ของ MCP Server ที่แท็บ Ports (port 3000) จะได้ URL ในรูปแบบ:

    https://<codespace-name>-3000.app.github.dev/mcp
  4. ตั้ง visibility ของ port เป็น Public เพื่อให้ AI Client ภายนอกเชื่อมต่อได้

วิธีที่ 2: Docker Compose (แนะนำสำหรับรันในเครื่อง)

# Clone repo
git clone https://github.com/monthop-gmail/poc-XYZradar-to-ai-ready.git
cd poc-XYZradar-to-ai-ready

# รัน MCP Server
docker-compose up -d --build

MCP Server พร้อมใช้งานที่ http://localhost:3000/mcp

การตั้งค่า MCP ในแอป AI (Claude Desktop, Cursor, Windsurf, etc.)

เมื่อ MCP Server ทำงานแล้ว ให้ตั้งค่า URL ตามวิธีที่ใช้:

วิธีการรัน

MCP URL

Codespaces

https://<codespace-name>-3000.app.github.dev/mcp

Docker Compose (ในเครื่อง)

http://localhost:3000/mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "fuel-radar": {
      "url": "https://<codespace-name>-3000.app.github.dev/mcp"
    }
  }
}

Cursor (Settings → MCP Servers → Add):

URL: https://<codespace-name>-3000.app.github.dev/mcp

Claude Code (CLI):

claude mcp add fuel-radar https://<codespace-name>-3000.app.github.dev/mcp

แทนที่ <codespace-name> ด้วยชื่อ Codespace ของคุณ หรือใช้ http://localhost:3000/mcp หากรันในเครื่อง

หลังจากเพิ่มแล้ว AI จะสามารถเรียกใช้ search_fuel_status() และ get_fuel_summary() ได้ทันที

วิธีที่ 3: Stdio (สำหรับ Claude Desktop / AI Client)

# ติดตั้ง dependencies
pip install pandas pyarrow requests fastapi uvicorn sse-starlette mcp[cli]

# รัน ETL เพื่อดึงข้อมูลล่าสุด
python pipeline/process_radar.py

# รัน MCP Server แบบ Stdio
python pipeline/mcp_server.py --transport stdio

ตัวอย่างการตั้งค่าใน claude_desktop_config.json:

{
  "mcpServers": {
    "fuel-radar": {
      "command": "python",
      "args": ["/absolute/path/to/pipeline/mcp_server.py", "--transport", "stdio"]
    }
  }
}

MCP Tools ที่พร้อมใช้งาน

เมื่อเชื่อมต่อ MCP Server แล้ว AI Agent จะเรียกใช้เครื่องมือเหล่านี้ได้ทันที:

search_fuel_status(query)

ค้นหาสถานะน้ำมันตามชื่อปั๊ม, จังหวัด, หรืออำเภอ

query: "กรุงเทพ"

→ Found 5 reports:
  - ปั๊ม ปตท. สาขาลาดพร้าว (กรุงเทพมหานคร): Diesel: out, B95: available
  - ปั๊ม Shell สาขาสุขุมวิท (กรุงเทพมหานคร): Diesel: available, B95: available
  ...

get_fuel_summary()

ดูภาพรวมสถานะน้ำมันทั่วประเทศ และจังหวัดที่มีน้ำมันขาดช่วงมากที่สุด

→ Summary:
  - Total: 50
  - Diesel Out: 12
    - เชียงใหม่: 4 reports
    - กรุงเทพมหานคร: 3 reports
    - ขอนแก่น: 2 reports

อยากเพิ่ม MCP Tool? ดูคู่มือ How to Add MCP Tools พร้อม Prompt Templates สำหรับให้ AI ช่วยเขียนโค้ด


Data Pipeline (ETL)

pipeline/process_radar.py ทำงานตามขั้นตอน:

  1. Fetch — ดึงข้อมูลจาก thaipumpradar.com/api/reports/feed

  2. Validate — กรองเฉพาะรายงานที่มี Confidence Score >= 0.3 (production ใช้ >= 0.7)

  3. Clean — เลือกเฉพาะฟิลด์ที่จำเป็น 11 ฟิลด์ (stationName, brandId, province, diesel, ฯลฯ)

  4. Save — บันทึกเป็น 2 รูปแบบ:

    • JSONL — เหมาะสำหรับ AI/RAG (อ่านทีละบรรทัด, ใช้กับ LangChain, LlamaIndex)

    • Parquet — เหมาะสำหรับ Analytics (columnar, ใช้กับ Pandas, DuckDB, Spark)

รายละเอียดชุดข้อมูล: pipeline/datacard.md


เอกสารวิจัยและกรอบการทำงาน (Research & Governance)

เอกสาร

เนื้อหา

open_data_model.md

อธิบายโมเดล 5+1 Star Open Data ตั้งแต่ Level 1-6

thaipumpradar_analysis_th.md

วิเคราะห์โครงสร้างข้อมูลจาก API และแผนทำ AI-Ready

ai_ready_audit.md

Checklist ตรวจสอบว่าข้อมูลผ่านเกณฑ์ AI-Ready หรือไม่

ai_governance_framework.md

กรอบธรรมาภิบาล AI & Data ตามมาตรฐาน PDPA และ DGS

how_to_add_mcp_tools.md

คู่มือเพิ่ม MCP Tools + Prompt Templates สำหรับใช้ AI ช่วยเขียนโค้ด

rag_explained.md

อธิบาย RAG vs MCP vs Keyword Search — โปรเจกต์นี้อยู่ตรงไหน

data_ingestion_explained.md

อธิบาย Data Ingestion vs ETL vs Pipeline — แต่ละคำหมายถึงอะไร

glossary.md

พจนานุกรมศัพท์ 50+ คำ — Data, AI, MCP, Docker, Governance

how_to_test_mcp_tools.md

วิธีทดสอบและ Debug MCP Tools ก่อน Deploy

common_mistakes.md

18 ข้อผิดพลาดที่มักเจอ พร้อมวิธีแก้ไข


สิ่งที่ทีมงานจะได้รับ

  • เข้าใจมาตรฐาน AI-Ready: เห็นภาพว่า Level 6 มีองค์ประกอบอะไรบ้าง

  • ต้นแบบ Pipeline: โค้ด ETL + MCP Server ที่นำไปปรับใช้กับแหล่งข้อมูลอื่นได้ทันที

  • เพิ่มมูลค่าข้อมูล: เปลี่ยน "ข้อมูลดิบ" ให้เป็น "ฐานความรู้" (Knowledge Base) สำหรับ AI Agent

  • กรอบ Governance: มีแนวทางดูแลข้อมูลและ AI ตามมาตรฐานสากล


Tech Stack

Component

Technology

Language

Python 3.12

Data Processing

Pandas, PyArrow

MCP Server

FastMCP (mcp[cli])

Web Framework

FastAPI, Uvicorn

Streaming

SSE (Server-Sent Events)

Container

Docker, Docker Compose

Data Formats

Parquet, JSONL


จัดทำขึ้นโดย Antigravity เพื่อสาธิตการเปลี่ยนผ่านข้อมูลสาธารณะสู่ยุค AI อย่างเป็นรูปธรรม

-
license - not tested
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/monthop-gmail/poc-XYZradar-to-ai-ready'

If you have feedback or need assistance with the MCP directory API, please join our Discord server