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
Read and update your Everway trips and itineraries from any MCP-compatible AI assistant.
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
The Ferryhopper MCP server is a connector for LLMs and AI Agents in maritime travel that exposes ferry routes, schedules, and booking options. It enables AI assistants to search ports and connections across 33 countries and 190+ ferry operators, provide real-time ferry itineraries with indicative prices, and assist users with planning island-hopping or multi-leg journeys by processing natural language queries about ferry times, passenger counts, and travel durations.
Provides AI assistants with direct access to Mapbox developer APIs and documentation.
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-
- AlicenseAqualityAmaintenanceEnables AI assistants to access Swiss public transport data including journey planning, real-time departures, disruptions, occupancy forecasts, ticket prices, and train formations via a standardized MCP interface.117MIT
- FlicenseAqualityCmaintenanceProvides read-only access to live Bay Area transit data, including routes, stops, real-time departures, vehicle positions, and service alerts, for use by large language models.6-







