Skip to main content
Glama
lis186

Taiwan Holiday MCP Server

by lis186
api-reference.md12.1 kB
# API 參考文件 Taiwan Holiday MCP Server 提供完整的台灣假期查詢 API,基於 Model Context Protocol (MCP) 標準。 ## 概述 ### 基本資訊 - **協議版本**: MCP 1.0 - **伺服器版本**: 1.0.0 - **支援的年份範圍**: 2017-2026 - **資料來源**: [TaiwanCalendar](https://github.com/ruyut/TaiwanCalendar) - **更新頻率**: 即時(基於政府公告) ### 連接資訊 ```json { "name": "taiwan-holiday-mcp", "version": "1.0.0", "capabilities": { "tools": {}, "resources": {} } } ``` ## MCP 工具 (Tools) ### 1. check_holiday 檢查指定日期是否為台灣假期。 #### 請求格式 ```json { "method": "tools/call", "params": { "name": "check_holiday", "arguments": { "date": "2024-10-10" } } } ``` #### 參數 | 參數名 | 類型 | 必填 | 描述 | 格式 | |--------|------|------|------|------| | `date` | string | ✅ | 要查詢的日期 | `YYYY-MM-DD` 或 `YYYYMMDD` | #### 參數驗證 - **日期格式**: 必須符合正規表達式 `^(\d{4}-\d{2}-\d{2}|\d{8})$` - **日期有效性**: 必須是有效的日期(例如:2024-02-30 無效) - **年份範圍**: 2017-2026 #### 回應格式 **成功回應:** ```json { "success": true, "data": { "date": "2024-10-10", "isHoliday": true, "name": "國慶日", "description": "中華民國國慶日", "type": "國定假日" }, "timestamp": "2025-06-11T10:30:00.000Z" } ``` **非假期回應:** ```json { "success": true, "data": { "date": "2024-10-11", "isHoliday": false, "name": null, "description": null, "type": "工作日" }, "timestamp": "2025-06-11T10:30:00.000Z" } ``` #### 回應欄位說明 | 欄位 | 類型 | 描述 | |------|------|------| | `success` | boolean | 請求是否成功 | | `data.date` | string | 查詢的日期 (YYYY-MM-DD 格式) | | `data.isHoliday` | boolean | 是否為假期 | | `data.name` | string\|null | 假期名稱 | | `data.description` | string\|null | 假期描述 | | `data.type` | string | 日期類型 ("國定假日", "工作日") | | `timestamp` | string | 回應時間戳 (ISO 8601) | ### 2. get_holidays_in_range 獲取指定日期範圍內的所有台灣假期。 #### 請求格式 ```json { "method": "tools/call", "params": { "name": "get_holidays_in_range", "arguments": { "start_date": "2024-10-01", "end_date": "2024-10-31" } } } ``` #### 參數 | 參數名 | 類型 | 必填 | 描述 | 格式 | |--------|------|------|------|------| | `start_date` | string | ✅ | 開始日期 | `YYYY-MM-DD` 或 `YYYYMMDD` | | `end_date` | string | ✅ | 結束日期 | `YYYY-MM-DD` 或 `YYYYMMDD` | #### 參數驗證 - **日期格式**: 同 `check_holiday` - **日期範圍**: `end_date` 必須大於或等於 `start_date` - **範圍限制**: 建議查詢範圍不超過 2 年 #### 回應格式 ```json { "success": true, "data": { "holidays": [ { "date": "2024-10-10", "name": "國慶日", "description": "中華民國國慶日", "type": "國定假日" } ], "summary": { "totalHolidays": 1, "dateRange": "2024-10-01 to 2024-10-31", "startDate": "2024-10-01", "endDate": "2024-10-31" } }, "timestamp": "2025-06-11T10:30:00.000Z" } ``` #### 回應欄位說明 | 欄位 | 類型 | 描述 | |------|------|------| | `data.holidays` | array | 假期列表 | | `data.holidays[].date` | string | 假期日期 | | `data.holidays[].name` | string | 假期名稱 | | `data.holidays[].description` | string | 假期描述 | | `data.holidays[].type` | string | 假期類型 | | `data.summary.totalHolidays` | number | 假期總數 | | `data.summary.dateRange` | string | 查詢範圍描述 | | `data.summary.startDate` | string | 開始日期 | | `data.summary.endDate` | string | 結束日期 | ### 3. get_holiday_stats 獲取指定年份或年月的台灣假期統計資訊。 #### 請求格式 **年度統計:** ```json { "method": "tools/call", "params": { "name": "get_holiday_stats", "arguments": { "year": 2024 } } } ``` **月度統計:** ```json { "method": "tools/call", "params": { "name": "get_holiday_stats", "arguments": { "year": 2024, "month": 10 } } } ``` #### 參數 | 參數名 | 類型 | 必填 | 描述 | 範圍 | |--------|------|------|------|------| | `year` | integer | ✅ | 查詢年份 | 2017-2026 | | `month` | integer | ❌ | 查詢月份 | 1-12 | #### 回應格式 **年度統計:** ```json { "success": true, "data": { "year": 2024, "totalHolidays": 115, "totalWorkdays": 251, "monthlyBreakdown": { "1": { "holidays": 3, "workdays": 22 }, "2": { "holidays": 7, "workdays": 21 }, "3": { "holidays": 2, "workdays": 19 }, "4": { "holidays": 6, "workdays": 20 }, "5": { "holidays": 2, "workdays": 21 }, "6": { "holidays": 3, "workdays": 17 }, "7": { "holidays": 9, "workdays": 22 }, "8": { "holidays": 9, "workdays": 22 }, "9": { "holidays": 17, "workdays": 13 }, "10": { "holidays": 17, "workdays": 14 }, "11": { "holidays": 9, "workdays": 21 }, "12": { "holidays": 31, "workdays": 0 } }, "majorHolidays": [ "春節", "清明節", "勞動節", "端午節", "中秋節", "國慶日", "元旦" ] }, "timestamp": "2025-06-11T10:30:00.000Z" } ``` **月度統計:** ```json { "success": true, "data": { "year": 2024, "month": 10, "totalHolidays": 17, "totalWorkdays": 14, "holidays": [ { "date": "2024-10-10", "name": "國慶日", "type": "國定假日" } ], "weekends": 16, "workingDaysInMonth": 31 }, "timestamp": "2025-06-11T10:30:00.000Z" } ``` ## MCP 資源 (Resources) ### 資源列表 | URI | 名稱 | 描述 | MIME 類型 | |-----|------|------|-----------| | `taiwan-holidays://years` | 支援的年份列表 | 列出所有支援查詢的年份範圍 | `application/json` | | `taiwan-holidays://holidays/{year}` | 年度假期資料 | 指定年份的完整假期資料 | `application/json` | | `taiwan-holidays://stats/{year}` | 年度統計資料 | 指定年份的統計資訊 | `application/json` | ### 1. taiwan-holidays://years #### 請求格式 ```json { "method": "resources/read", "params": { "uri": "taiwan-holidays://years" } } ``` #### 回應格式 ```json { "contents": [ { "uri": "taiwan-holidays://years", "mimeType": "application/json", "text": "{\"supportedYears\":[2017,2018,2019,2020,2021,2022,2023,2024,2025],\"currentYear\":2024,\"dataSource\":\"TaiwanCalendar\",\"lastUpdated\":\"2025-06-11T10:30:00.000Z\"}" } ] } ``` ### 2. taiwan-holidays://holidays/{year} #### 請求格式 ```json { "method": "resources/read", "params": { "uri": "taiwan-holidays://holidays/2024" } } ``` #### 回應格式 ```json { "contents": [ { "uri": "taiwan-holidays://holidays/2024", "mimeType": "application/json", "text": "{\"year\":2024,\"holidays\":[{\"date\":\"2024-01-01\",\"name\":\"元旦\",\"description\":\"中華民國開國紀念日\",\"type\":\"國定假日\"},...],\"totalHolidays\":115,\"lastUpdated\":\"2025-06-11T10:30:00.000Z\"}" } ] } ``` ### 3. taiwan-holidays://stats/{year} #### 請求格式 ```json { "method": "resources/read", "params": { "uri": "taiwan-holidays://stats/2024" } } ``` #### 回應格式 ```json { "contents": [ { "uri": "taiwan-holidays://stats/2024", "mimeType": "application/json", "text": "{\"year\":2024,\"totalHolidays\":115,\"totalWorkdays\":251,\"monthlyBreakdown\":{...},\"majorHolidays\":[...],\"lastUpdated\":\"2025-06-11T10:30:00.000Z\"}" } ] } ``` ## 錯誤處理 ### 錯誤回應格式 ```json { "success": false, "error": "錯誤訊息", "errorType": "ERROR_CODE", "timestamp": "2025-06-11T10:30:00.000Z", "tool": "工具名稱" } ``` ### 錯誤代碼參考 | 錯誤代碼 | 描述 | 常見原因 | |----------|------|----------| | `INVALID_DATE_FORMAT` | 無效的日期格式 | 日期格式不符合 YYYY-MM-DD 或 YYYYMMDD | | `INVALID_DATE` | 無效的日期 | 日期不存在(如 2024-02-30) | | `INVALID_DATE_RANGE` | 無效的日期範圍 | 結束日期早於開始日期 | | `YEAR_OUT_OF_RANGE` | 年份超出範圍 | 年份不在 2017-2025 範圍內 | | `MONTH_OUT_OF_RANGE` | 月份超出範圍 | 月份不在 1-12 範圍內 | | `NETWORK_ERROR` | 網路錯誤 | 無法連接到資料來源 | | `DATA_PARSE_ERROR` | 資料解析錯誤 | 資料格式錯誤或損壞 | | `CACHE_ERROR` | 快取錯誤 | 快取系統故障 | | `UNKNOWN_ERROR` | 未知錯誤 | 其他未分類錯誤 | ### 錯誤處理範例 #### 1. 日期格式錯誤 **請求:** ```json { "name": "check_holiday", "arguments": { "date": "2024/10/10" } } ``` **回應:** ```json { "success": false, "error": "無效的日期格式。請使用 YYYY-MM-DD 或 YYYYMMDD 格式", "errorType": "INVALID_DATE_FORMAT", "timestamp": "2025-06-11T10:30:00.000Z", "tool": "check_holiday" } ``` #### 2. 日期範圍錯誤 **請求:** ```json { "name": "get_holidays_in_range", "arguments": { "start_date": "2024-12-31", "end_date": "2024-01-01" } } ``` **回應:** ```json { "success": false, "error": "結束日期不能早於開始日期", "errorType": "INVALID_DATE_RANGE", "timestamp": "2025-06-11T10:30:00.000Z", "tool": "get_holidays_in_range" } ``` ## 效能特性 ### 快取機制 - **記憶體快取**: 查詢結果會快取在記憶體中 - **快取時間**: 24 小時 TTL - **快取策略**: LRU (Least Recently Used) - **快取大小**: 最多 100 個條目 ### 效能指標 | 操作 | 首次查詢 | 快取查詢 | 併發支援 | |------|----------|----------|----------| | `check_holiday` | < 2 秒 | < 100ms | 10+ | | `get_holidays_in_range` | < 5 秒 | < 200ms | 5+ | | `get_holiday_stats` | < 3 秒 | < 150ms | 8+ | ### 限制 - **查詢範圍**: 建議單次查詢不超過 2 年範圍 - **併發限制**: 同時最多 10 個請求 - **記憶體使用**: < 100MB - **網路超時**: 30 秒 ## 資料格式 ### 日期格式 支援兩種日期格式: 1. **ISO 8601 格式**: `YYYY-MM-DD` (推薦) - 範例: `2024-10-10` - 優點: 國際標準,易讀 2. **緊湊格式**: `YYYYMMDD` - 範例: `20241010` - 優點: 簡潔,適合程式處理 ### 假期類型 | 類型 | 描述 | 範例 | |------|------|------| | `國定假日` | 政府公告的國定假日 | 國慶日、春節 | | `工作日` | 一般工作日 | 平日非假期 | ### 時間戳格式 所有時間戳使用 ISO 8601 格式: - 格式: `YYYY-MM-DDTHH:mm:ss.sssZ` - 時區: UTC - 範例: `2025-06-11T10:30:00.000Z` ## 版本資訊 ### 當前版本 - **API 版本**: 1.0.0 - **MCP 協議版本**: 1.0 - **發布日期**: 2025-06-11 - **相容性**: 向後相容 ### 變更歷史 #### v1.0.0 (2025-06-11) - 初始版本發布 - 支援三個核心工具 - 完整的資源系統 - 智慧快取機制 ## 最佳實踐 ### 1. 效能最佳化 ```typescript // 推薦:使用範圍查詢 const holidays = await get_holidays_in_range("2024-01-01", "2024-12-31"); // 不推薦:多次單日查詢 // for (const date of dates) { // await check_holiday(date); // } ``` ### 2. 錯誤處理 ```typescript try { const result = await check_holiday("2024-10-10"); if (result.success) { console.log(result.data); } else { console.error(`錯誤: ${result.error}`); } } catch (error) { console.error(`網路錯誤: ${error.message}`); } ``` ### 3. 快取利用 ```typescript // 利用快取,避免重複查詢 const cache = new Map(); async function getCachedHoliday(date) { if (cache.has(date)) { return cache.get(date); } const result = await check_holiday(date); cache.set(date, result); return result; } ``` --- **文件版本**: 1.0.0 **最後更新**: 2025-06-11 **維護者**: Taiwan Holiday MCP Team

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/lis186/taiwan-holiday-mcp'

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