bkk-transit
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bkk-transitPlan a trip from Phaya Thai to Suvarnabhumi Airport by transit"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BKK Transit — Bangkok Open Transit Platform
แพลตฟอร์มข้อมูลขนส่งสาธารณะและระบบวางแผนการเดินทาง กรุงเทพฯ และปริมณฑล
Open Transit Data Platform, Routing Engine, and Real-Time Tracking for the Bangkok Metropolitan Region
คุณสมบัติเด่น • ภาพตัวอย่างหน้าจอ • เริ่มต้นใช้งานใน 3 นาที • ระบบ GPS และแผนที่ • การรับมือเหตุฉุกเฉิน / API ดับ • สถาปัตยกรรม • API Reference • เอกสารประกอบ
📸 ภาพตัวอย่างหน้าจอ (Screenshots Showcase)
1. หน้าจอหลัก & แผนที่โครงข่ายขนส่งสาธารณะ | 2. ตรวจสอบแนวเส้นทางและตำแหน่งรถ |
|
|
แสดงโครงข่ายรถไฟฟ้า รถเมล์ เรือ และตัวกรองหมวดหมู่สาย | แสดงแนวเส้นทาง polyline, ลำดับป้าย, เวลา offset และตำแหน่งรถ |
3. ระบบ GPS เรดาร์ระบุพิกัด & ป้ายใกล้ฉัน | 4. ตารางเวลารถออกถัดไปที่สถานี |
|
|
ปุ่ม GPS เรดาร์ วงแหวนความแม่นยำ และค้นหาป้ายในระยะ 500 ม. | เวลารถออกถัดไป ความถี่เดินรถ และสัญลักษณ์คนพิการ ♿ |
5. ระบบคำนวณและวางแผนการเดินทาง | 6. เอกสาร API โต้ตอบ (Swagger UI) |
|
|
คำนวณสายตรงและจุดต่อรถ พร้อมแสดงเส้นทางบนแผนที่ | ทดสอบและตรวจสอบทุก Endpoint ผ่าน OpenAPI 3.1 มาตรฐาน |
7. เอกสาร API สถาปัตยกรรม ReDoc | 8. หน้าจอสมาร์ทโฟน (Mobile Responsive) |
|
|
เอกสาร 3-panel สำหรับทีม Developer และการ Integrate | รองรับการเปิดใช้งานบนมือถือทุกขนาดหน้าจออย่างลื่นไหล |
Related MCP server: TFL MCP Server for Poke
📌 บทนำและที่มาของโครงการ (Why BKK Transit?)
ข้อเท็จจริงในปัจจุบัน:
ระบบขนส่งสาธารณะของกรุงเทพฯ มีความซับซ้อนสูง ประกอบด้วยรถเมล์ (ขสมก. และรถร่วมเอกชน เช่น Thai Smile Bus), รถไฟฟ้าหลากสี (BTS, MRT, ARL, SRTET), เรือด่วนเจ้าพระยา และเรือคลองแสนแสบ ทว่ายังไม่มี Public API ทางการที่เปิดเผยข้อมูลตำแหน่งรถแบบ Real-time สาธารณะ ข้อมูลส่วนใหญ่กระจายตัวอยู่ในแอปพลิเคชันเอกชนหรือระบบปิดภายใน
สิ่งที่มีและใช้งานได้ถูกต้องตามกฎหมาย:
สำนักงานนโยบายและแผนการขนส่งและจราจร (สนข.) กระทรวงคมนาคม ได้เผยแพร่ชุดข้อมูล GTFS Static ของกรุงเทพฯ และปริมณฑล (สายรถเมล์, เรือ, รถไฟฟ้า, สถานี/ป้าย, เส้นทาง shape, ตารางความถี่) ภายใต้สัญญาอนุญาตเปิด Creative Commons CC-BY 4.0 ผ่านระบบ "นำทาง (Namtang)"
พันธกิจของโครงการ:
BKK Transit ถูกสร้างขึ้นเพื่อเป็นโครงสร้างพื้นฐานข้อมูลเปิด (Open Transit Infrastructure) ระดับมืออาชีพ:
นำเข้าข้อมูล GTFS Static มาตรฐานสากลเข้าสู่ฐานข้อมูลประสิทธิภาพสูง (SQLite สำหรับพัฒนา / PostGIS สำหรับ Production)
ให้บริการผ่าน REST API มาตรฐาน พร้อมเอกสาร Interactive Swagger/OpenAPI
มีหน้าจอแผนที่ Interactive Web Map (Leaflet.js) รองรับ GPS ระบุตำแหน่งตนเอง แบบเรดาร์ ค้นหาป้ายรอบตัว และวางแผนการเดินทาง
ออกแบบเลเยอร์ Real-time เป็นสถาปัตยกรรมแบบ Pluggable เพื่อรองรับการ "เสียบ" GTFS-RT ของจริงได้ทันทีเมื่อเจรจาข้อมูลกับหน่วยงานสำเร็จ โดยไม่ต้องรื้อระบบ
มี ความทนทานต่อความล้มเหลว (Fault Tolerance & Resilience) สูงสุด หาก API ภายนอกหรือระบบ Realtime ขัดข้อง ระบบจะตัดวงจรและทำงานต่อด้วยข้อมูลแคช/ตารางเดินรถได้ทันที 100%
✨ คุณสมบัติเด่น (Features)
หมวดหมู่ | ความสามารถ | รายละเอียดทางเทคนิค |
GTFS Ingestion | ประมวลผลข้อมูลขนส่งทางการ | สตรีมไฟล์ CSV ขนาดใหญ่แบบ Chunk-based, ตรวจสอบ Referential Integrity และสร้าง |
ค้นหาสายและป้าย | ค้นหาแบบสองภาษา (ไทย/อังกฤษ) | ค้นหาเลขสาย, ชื่อสาย, ประเภทพาหนะ (รถเมล์/เรือ/ราง) และชื่อป้ายสถานี ค้นหาเร็วระดับมิลลิวินาที |
GPS & Nearby | ระบุตำแหน่งและหาป้ายใกล้ฉัน | ปุ่ม GPS ค้นหาพิกัดผู้ใช้ แสดงหมุดเรดาร์ Pulsing Blue Dot + วงแหวนความแม่นยำ และดึงป้ายในรัศมี 500 เมตรอัตโนมัติ |
เวลารถออก (ETA) | ตารางเวลา + ความถี่เดินรถ | คำนวณเวลาเข้าป้ายถัดไปจาก Headway ( |
วางแผนการเดินทาง | Route Planning MVP | ค้นหาเส้นทางป้าย→ป้าย ทั้งแบบสายตรง และต่อรถ 1 ครั้ง (Pattern-based Transfer) |
Realtime Abstraction | รองรับหลาย Provider | สลับระหว่าง |
AI & MCP Ready | พร้อมเชื่อมต่อโมเดล AI (ChatGPT, Gemini, Claude) | มี Model Context Protocol (MCP) Server ในตัว และมาตรฐาน |
ความพร้อมใช้งาน | High Availability & Resilience | มี Circuit Breaker และ Graceful Degradation อัตโนมัติเมื่อ Upstream ขัดข้อง |
Offline Demo | ทำงานได้โดยไม่ต้องมีเซิร์ฟเวอร์ | ไฟล์ |
🚀 เริ่มต้นใช้งานใน 3 นาที (Quick Start)
วิธีที่ 1: โหมดพัฒนาเบาพิเศษ (Zero-Dependency Dev Server)
ใช้เพียง Python มาตรฐาน (stdlib) ไม่ต้องติดตั้งไลบรารีภายนอก:
# 1. โคลนคลังโค้ด
git clone https://github.com/your-org/bkk-transit.git
cd bkk-transit
# 2. นำเข้าข้อมูลตัวอย่าง GTFS เข้า SQLite (data/transit.db)
python -m app.gtfs_loader --path data/gtfs_sample --report reports/gtfs_report.json
# หรือใช้ make sample
# 3. สตาร์ท Dev Server
python -m app.devserver --port 8000
# หรือใช้ make dev
# 4. เปิดเบราว์เซอร์: http://localhost:8000วิธีที่ 2: โหมด FastAPI + Uvicorn (พร้อม Interactive Swagger Docs)
เหมาะสำหรับการพัฒนา API และทดสอบ Endpoint:
# 1. สร้าง Virtual Environment
python -m venv .venv
source .venv/bin/activate # บน Windows: .venv\Scripts\activate
# 2. ติดตั้ง Dependencies
pip install -r requirements.txt
# 3. รันเซิร์ฟเวอร์แบบ Hot-Reload
python -m uvicorn app.api.main:app --reload --port 8000
# หรือใช้ make api
# เข้าใช้งาน:
# - หน้าเว็บแผนที่: http://localhost:8000
# - API Swagger Docs: http://localhost:8000/docs
# - API Redoc: http://localhost:8000/redocวิธีที่ 3: โหมด Production ด้วย Docker Compose + PostGIS
เหมาะสำหรับ Production ที่ต้องการดาวน์โหลดข้อมูล GTFS ฉบับเต็มจาก สนข. และเปิดใช้ Spatial Database:
cp .env.example .env # ปรับตั้งค่ารหัสผ่านฐานข้อมูลใน .env
docker compose up -d db # สตาร์ท PostgreSQL + PostGIS
docker compose run --rm loader # ดาวน์โหลด GTFS ฉบับเต็มจาก สนข. และโหลดเข้า DB
docker compose up -d api # สตาร์ท FastAPI Service📍 ระบบ GPS และแผนที่ระบุพิกัด (GPS & Geolocation)
ระบบมีฟังก์ชันระบุตำแหน่งผู้ใช้บนแผนที่อย่างสมบูรณ์แบบ:
ปุ่มค้นหาตำแหน่งลอย (Floating GPS Control): ไอคอนเป้าเล็ง 🎯 อยู่มุมขวาบนของแผนที่ สามารถกดเรียกพิกัดได้ตลอดเวลา
หมุดระบุตำแหน่งเรดาร์ (Pulsing Location Pin): เมื่อได้พิกัด แผนที่จะแสดงจุดวงกลมสีน้ำเงินพร้อมแอนิเมชันคลื่นเรดาร์ขยายตัว (Wave Ripple Effect)
วงแหวนความแม่นยำ (Accuracy Radius): วาดวงกลมรัศมีความคลาดเคลื่อนจริงตามที่ดาวเทียม GPS รายงาน
ค้นหาป้ายรอบตัวอัตโนมัติ (Auto-Discovery): ซูมแผนที่เข้าสู่ตำแหน่งปัจจุบัน (
map.flyTo) และค้นหาป้าย/สถานีรถไฟฟ้า/ท่าเรือในรัศมี 500 เมตร พร้อมคำนวณระยะเดินให้ทันทีความปลอดภัยและข้อกำหนด (HTTPS Requirement):
ตามมาตรฐาน W3C Geolocation API เบราว์เซอร์จะอนุญาตให้ใช้งาน GPS ได้เฉพาะบน HTTPS หรือhttp://localhostเท่านั้น หากรันบน IP ภายนอกต้องติดตั้ง Reverse Proxy SSL เสมอ
(อ่านคู่มือการตั้งค่าและการแก้ปัญหาโดยละเอียดได้ที่ docs/GPS_GEOLOCATION_GUIDE.md)
🛡️ การรับมือเหตุฉุกเฉิน และการป้องกันเมื่อ API โดนตัด (Resilience & Disaster Recovery)
โครงการนี้ถูกออกแบบโดยคำนึงถึงปัญหาความเสถียรของแหล่งข้อมูลภายนอก (Upstream Outage) และสถานการณ์ฉุกเฉินในระบบ Production อย่างรัดกุม:
1. ถ้า API หรือ Feed ของ สนข. / ขสมก. โดนตัดหรือหยุดให้บริการ เราจะรู้ได้อย่างไร และป้องกันอย่างไร?
การตรวจจับล่วงหน้า (Proactive Synthetic Monitoring): มีสคริปต์ตรวจเช็คความพร้อมของ Feed ต้นทางเป็นระยะ (HTTP HEAD, ETag, Content-Length) และตรวจสอบวันหมดอายุของข้อมูล (
feed_end_date) ล่วงหน้า 30 วัน พร้อมส่งแจ้งเตือนผ่าน Discord / LINE / Slack Webhookสถาปัตยกรรมตัดขาด Upstream (Ingestion Architecture): เซิร์ฟเวอร์ ไม่ได้เรียก API ไปยัง สนข. สดๆ ทุก Request แต่ใช้วิธี Ingestion เข้าฐานข้อมูล Local Snapshot (PostGIS/SQLite) ไว้ล่วงหน้า ดังนั้น แม้เว็บ สนข. จะล่ม ระบบ BKK Transit ก็ยังให้บริการได้ 100%
Circuit Breaker สำหรับ Realtime Feed: หาก Feed ตำแหน่งรถ (GTFS-RT) ล่มหรือ Timeout ติดต่อกันเกิน 3 ครั้ง วงจรจะตัดทันทีเพื่อป้องกันเซิร์ฟเวอร์ค้าง และสลับไปใช้ ตารางเดินรถปกติ (Schedule Fallback) พร้อมติดป้ายแจ้งสถานะให้ผู้ใช้ทราบอย่างโปร่งใส
2. ถ้าเซิร์ฟเวอร์หรือฐานข้อมูล Crash จะรับมืออย่างไร?
Docker Auto-Recovery: กำหนด
restart: unless-stoppedและมี Docker Healthcheck Probe คอยตรวจจับสถานะSQLite WAL Mode: เปิดใช้งาน Write-Ahead Logging เพื่อรองรับการอ่านข้อมูลพร้อมกันได้ไม่จำกัด โดยไม่เกิดปัญหา Database Lock
PostgreSQL Connection Pool: ควบคุม Connection ผ่าน
psycopg 3และป้องกัน Memory Leak ด้วยการสตรีมข้อมูลRTO < 3 นาที: สามารถสร้างฐานข้อมูลใหม่จากไฟล์ตัวอย่างหรือ Snapshot สำรองได้ภายในไม่กี่นาที
(อ่านรายละเอียดขั้นตอนปฏิบัติการฉุกเฉินและ Runbook ทั้งหมดได้ที่ docs/OPERATIONS_AND_RESILIENCE.md)
🤖 การเชื่อมต่อกับ AI และ Model Context Protocol (MCP)
ในยุคปัจจุบัน ผู้ใช้งานส่วนใหญ่นิยมพิมพ์สอบถามเส้นทางรถเมล์และการเดินทางผ่าน AI เช่น ChatGPT, Gemini, หรือ Claude ทว่าโมเดลภาษาทั่วไปมัก ตอบข้อมูลเก่าก่อนปฏิรูปสาย หรือมโน (Hallucinate) ลำดับป้ายจอด
BKK Transit จึงถูกออกแบบให้เป็น ฐานข้อมูลความจริง (Ground-Truth Knowledge Base) สำหรับ AI:
รองรับ Model Context Protocol (MCP):
มีเซิร์ฟเวอร์ MCP ในตัว (app/mcp_server.py) ที่รองรับ Claude Desktop, Cursor IDE, Antigravity และ AI Agents ทุกค่าย โดยมี Tools ให้ AI เรียกใช้งาน:search_transit_routes— ค้นหาสายรถเมล์ เรือ รถไฟฟ้าget_route_details— ดึงลำดับป้ายและทิศทางเดินรถที่ถูกต้อง 100%search_stops— ค้นหาป้ายรถเมล์หรือสถานี BTS/MRTfind_nearby_stops— ค้นหาป้ายรอบพิกัด GPSget_next_departures— ตรวจสอบเวลารถออกถัดไปและความถี่plan_transit_journey— วางแผนการเดินทางระหว่างป้าย
สร้าง Custom GPTs บน ChatGPT ผ่าน Actions:
นำ URLhttp://localhost:8000/openapi.jsonไปใส่ใน Custom GPT Action เพื่อสร้าง AI ผู้ช่วยนำทางรถเมล์ไทยได้ทันทีมาตรฐาน
/llms.txtสำหรับ AI Web Search:
มี Endpoint/llms.txtตามมาตรฐานสากล เพื่อให้ Search Engine AI (เช่น Perplexity หรือ SearchGPT) ดึงข้อมูลไปตอบได้อย่างแม่นยำ
(อ่านคู่มือการเชื่อมต่อ AI ทุกแพลตฟอร์มโดยละเอียดได้ที่ docs/AI_INTEGRATION_GUIDE.md)
🏗 สถาปัตยกรรมระบบ (Architecture)
flowchart LR
subgraph Sources["แหล่งข้อมูลภายนอก"]
G["GTFS Static<br/>สนข. Namtang · CC-BY 4.0"]
RT[("Realtime Feeds<br/>GTFS-RT: NECTEC / ขสมก.")]
end
subgraph Ingestion["การนำเข้าและตรวจสอบข้อมูล"]
L["gtfs_loader.py<br/>Stream Ingestion · ValidationReport"]
end
subgraph Storage["การจัดเก็บข้อมูล"]
DB[("SQLite dev / PostgreSQL + PostGIS prod")]
end
subgraph Core["บริการหลัก (Services)"]
S["Stops · Routes · Departures · Planner · Geo · Calendar"]
P["Realtime Provider<br/>Null · Mock · GTFS-RT"]
end
subgraph API_Layer["ชั้น API และการส่งข้อมูล"]
H["api/handlers.py<br/>Framework-agnostic Logic"]
F["FastAPI Backend<br/>/api/* · /docs"]
D["devserver.py<br/>Python Stdlib"]
B["scripts/build_demo.py<br/>Standalone Snapshot Builder"]
end
subgraph Clients["ส่วนแสดงผล"]
UI["Web Map UI<br/>Leaflet.js + GPS Radar Pin"]
Demo["dist/demo.html<br/>Single-file Offline Demo"]
end
G --> L
L --> DB
DB --> S
RT -.-> P
S --> H
P --> H
H --> F
H --> D
H --> B
F --> UI
B --> Demo🔌 API Reference
Base URL สำหรับการทดสอบในเครื่อง: http://localhost:8000
ทุก Endpoint ทำงานผ่าน HTTP Method GET และตอบกลับเป็น JSON UTF-8
Endpoint | คำอธิบาย | พารามิเตอร์สำคัญ | ตัวอย่างคำสั่ง |
| ตรวจสอบสถานะการทำงาน (Liveness Probe) | — |
|
| ข้อมูลสัญญาอนุญาต สถิติจำนวนสาย/ป้าย และเวอร์ชัน Feed | — |
|
| ค้นหารายชื่อสายรถเมล์ เรือ รถไฟฟ้า |
|
|
| รายละเอียดสาย: ทิศทาง ลำดับป้าย พิกัดเส้นทาง (shape) |
|
|
| พิกัดตำแหน่งรถ Realtime ของสายนั้น |
|
|
| รายชื่อป้ายในกรอบพิกัด หรือดึงข้อมูลภาพรวม |
|
|
| ค้นหาป้ายจากชื่อ (รองรับภาษาไทย/อังกฤษ) |
|
|
| ค้นหาป้ายใกล้พิกัดพิกัด GPS ที่ระบุ |
|
|
| ข้อมูลป้ายและรายชื่อสายที่แล่นผ่าน |
|
|
| เวลารถออกถัดไปจากป้าย (Schedule + Realtime) |
|
|
| วางแผนการเดินทางระหว่างป้าย (ตรงหรือต่อ 1 ครั้ง) |
|
|
⚙️ ตัวแปรสภาพแวดล้อม (Environment Variables)
กำหนดค่าได้ผ่านไฟล์ .env หรือส่งผ่าน Environment ของ Container:
ตัวแปร | ค่าเริ่มต้น | รายละเอียด |
|
| URL ฐานข้อมูล ( |
| URL ของ สนข. (Namtang) | ลิงก์ดาวน์โหลด GTFS Static .zip ทางการ |
|
| เลือกระบบ Realtime: |
|
| URL ของ GTFS-RT VehiclePositions Protobuf feed |
|
| URL ของ GTFS-RT TripUpdates Protobuf feed |
|
| โดเมนที่อนุญาตให้เรียก API ผ่านเว็บเบราว์เซอร์ |
🧪 การทดสอบและควบคุมคุณภาพ (Testing & Quality)
โครงการนี้มี Unit Test ครอบคลุมทั้ง Ingestion Loader, Geo Math, Routing Planner, Realtime Provider และ HTTP Endpoints:
# รันชุดทดสอบทั้งหมด
make test
# หรือ: python -m unittest -v
# ตรวจสอบรูปแบบโค้ด (Linting)
make lint
# หรือ: ruff check app tests📚 เอกสารประกอบ (Documentation)
เอกสาร | รายละเอียด |
คู่มือปฏิบัติการฉุกเฉิน (Runbook): การรับมือเมื่อ API โดนตัด, การตั้งระบบแจ้งเตือน, Circuit Breaker | |
คู่มือระบบระบุตำแหน่ง GPS: การทำงานของ W3C Geolocation, การตั้งค่า HTTPS, การทดสอบด้วย DevTools | |
คู่มือการเชื่อมต่อ AI & MCP: เชื่อมต่อ Claude Desktop, Cursor, ChatGPT Custom GPTs, และ Gemini | |
ข้อกำหนดสัญญา API ฉบับเต็ม พร้อมตัวอย่าง JSON Request/Response ทุกเส้นทาง | |
สถาปัตยกรรมระบบโดยละเอียด Data Flow Diagram และการออกแบบฐานข้อมูล | |
ที่มาของข้อมูล GTFS, คุณภาพข้อมูล, ข้อจำกัดที่พบ และรอบการอัปเดต | |
คู่มือการติดตั้งบน Production, การตั้งค่า Caddy HTTPS, Backup & Restore | |
รายงานการศึกษาความเป็นไปได้และข้อจำกัดเชิงเทคนิคของระบบขนส่งมวลชนไทย | |
แผนการพัฒนาในอนาคต (Phase 0 ถึง Phase 4) | |
Architecture Decision Records (บันทึกการตัดสินใจทางสถาปัตยกรรม 0001–0006) | |
การให้เกียรติแหล่งข้อมูลและสัญญาอนุญาต (Attribution & Legal Notices) |
📄 สัญญาอนุญาตและลิขสิทธิ์ (License & Attribution)
Source Code: เผยแพร่ภายใต้สัญญาอนุญาต MIT License © 2026 Synergy Technology Co., Ltd. (SynTech)
Transit Data: ข้อมูลการเดินรถและเส้นทางขนส่งมวลชน เผยแพร่ภายใต้สัญญาอนุญาต Creative Commons Attribution 4.0 International (CC-BY 4.0) โดย สำนักงานนโยบายและแผนการขนส่งและจราจร (สนข.) กระทรวงคมนาคม ผ่านระบบ "นำทาง (Namtang)"
Basemap Tiles: แผนที่ฐาน © OpenStreetMap contributors
This server cannot be deployed
Maintenance
Related MCP Connectors
Provide real-time transportation data including bus arrivals, train service alerts, carpark availa…
Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.
Read-only public transit departures, stop search, and city coverage for bus and train users.
Mobility, geocoding and nearby urban services for AI agents.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables AI clients to access Boston's MBTA public transit data, including real-time predictions, schedules, route planning, and service alerts.321Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to access real-time Transport for London data, including tube/bus arrivals, line status, journey planning, and disruptions.1-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query live Transport for London data, including service status, arrivals, journey planning, bike points, crowding, and fares.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables local AI clients to search Houston METRO routes, stops, nearby stops, realtime arrivals, and service alerts through natural language.MIT







