Skip to main content
Glama

Taiwan FDA Drug Search MCP Server

usage_examples.py8.55 kB
""" 台灣FDA藥品查詢MCP服務器使用示例 本文件展示了如何使用台灣FDA藥品查詢MCP服務器的各項功能 """ import asyncio import json from typing import List, Dict from fastmcp import Client import tempfile import os async def basic_search_example(): """基本查詢示例:搜索阿斯匹林""" print("=== 基本查詢示例:搜索阿斯匹林 ===\n") # 這個示例需要與實際的MCP服務器配合使用 # 實際使用時需要先獲取驗證碼 # 步驟1: 獲取驗證碼 print("步驟1: 獲取驗證碼") print("需要先調用 get_captcha_image 工具獲取驗證碼圖片") print("並手動識別圖片中的4位數字\n") # 步驟2: 查詢藥品 print("步驟2: 查詢藥品") search_query = { "english_name": "aspirin", "captcha": "1234" # 這裡需要替換為實際識別的驗證碼 } print(f"查詢參數: {json.dumps(search_query, ensure_ascii=False, indent=2)}\n") # 步驟3: 下載仿單 print("步驟3: 下載仿單(如果查詢成功並獲得GUID)") print("需要從查詢結果中提取GUID,然後調用download_insert工具\n") async def advanced_search_example(): """進階查詢示例""" print("=== 進階查詢示例 ===\n") # 進階查詢示例:組合多個條件 advanced_query = { "license_no": "", # 許可證號(可選) "cname": "", # 中文品名(可選) "ename": "metformin", # 英文品名 "agent_name": "默沙東", # 申請商名稱(可選) "ingredient": "", # 有效成分(可選) "captcha": "5678" # 驗證碼 } print("進階查詢參數:") print(json.dumps(advanced_query, ensure_ascii=False, indent=2)) print("\n此查詢會搜索英文品名包含'metformin'且申請商為'默沙東'的藥品\n") async def batch_download_example(): """批量下載示例""" print("=== 批量下載示例 ===\n") # 假設從多次查詢中獲得了多個GUID guids = [ "guid1-abc123-def456", "guid2-xyz789-uvw012", "guid3-mno345-pqr678" ] # 批量下載參數 batch_params = { "guids": guids, "output_dir": "/tmp/drug_inserts" } print("批量下載參數:") print(json.dumps(batch_params, ensure_ascii=False, indent=2)) print(f"\n將下載 {len(guids)} 個仿單到 {batch_params['output_dir']}\n") async def complete_workflow_example(): """完整工作流程示例""" print("=== 完整工作流程示例 ===\n") # 模擬完整的工作流程 workflow_steps = [ "1. 調用 get_captcha_image() 獲取驗證碼", "2. 人工識別驗證碼圖片中的數字", "3. 調用 search_drugs_by_english_name() 進行查詢", "4. 從查詢結果中提取GUID", "5. 調用 download_insert() 下載仿單", "6. (可選)批量下載更多仿單" ] print("完整工作流程:") for step in workflow_steps: print(f" {step}") print("\n示例代碼序列:") print(""" # 1. 獲取驗證碼 captcha_result = await client.call_tool("get_captcha_image", {}) # 2. 查詢藥品(假設驗證碼為"4321") search_result = await client.call_tool("search_drugs_by_english_name", { "english_name": "aspirin", "captcha": "4321" }) # 3. 從結果中提取GUID並下載 # (需要根據實際返回格式解析GUID) guid = "extracted_guid_from_search_results" download_result = await client.call_tool("download_insert", { "guid": guid, "output_path": "/tmp/aspirin_insert.pdf" }) """) async def error_handling_example(): """錯誤處理示例""" print("=== 錯誤處理示例 ===\n") # 常見錯誤情況和解決方案 error_scenarios = [ { "錯誤": "驗證碼格式錯誤", "輸入": {"captcha": "12"}, # 少於4位 "錯誤訊息": "驗證碼必須是4位數字", "解決": "重新獲取驗證碼並輸入完整的4位數字" }, { "錯誤": "英文品名為空", "輸入": {"english_name": "", "captcha": "1234"}, "錯誤訊息": "英文品名不能為空", "解決": "提供有效的英文品名關鍵字" }, { "錯誤": "查無結果", "輸入": {"english_name": "nonexistent_drug", "captcha": "1234"}, "錯誤訊息": "未找到符合條件的藥品資訊", "解決": "檢查英文品名是否正確,嘗試使用更常見的藥品名稱" }, { "錯誤": "GUID無效", "輸入": {"guid": "invalid_guid", "output_path": "/tmp/test.pdf"}, "錯誤訊息": "下載仿單時發生錯誤", "解決": "檢查GUID是否從查詢結果中正確提取" } ] for i, scenario in enumerate(error_scenarios, 1): print(f"{i}. {scenario['錯誤']}") print(f" 輸入: {json.dumps(scenario['輸入'], ensure_ascii=False)}") print(f" 錯誤: {scenario['錯誤訊息']}") print(f" 解決: {scenario['解決']}\n") async def best_practices_example(): """最佳實踐示例""" print("=== 最佳實踐 ===\n") best_practices = [ { "類別": "驗證碼處理", "建議": [ "每次查詢前都重新獲取驗證碼", "仔細識別驗證碼,避免輸入錯誤", "如果驗證碼不清楚,使用重新獲取功能" ] }, { "類別": "查詢優化", "建議": [ "使用常見的英文藥品名稱進行查詢", "對於中成藥,可以嘗試中文品名查詢", "組合多個查詢條件提高精確度" ] }, { "類別": "批量處理", "建議": [ "大量查詢時使用進階查詢功能", "批量下載時設置適當的延遲", "為批量操作準備足夠的磁盤空間" ] }, { "類別": "錯誤恢復", "建議": [ "實現重試機制處理網路錯誤", "保存查詢結果避免重複查詢", "為關鍵操作實現備份方案" ] } ] for practice in best_practices: print(f"【{practice['類別']}】") for suggestion in practice['建議']: print(f" • {suggestion}") print() async def performance_tips(): """性能優化建議""" print("=== 性能優化建議 ===\n") tips = [ "1. 查詢策略", " • 使用精確的查詢條件減少返回結果", " • 優先使用英文品名進行查詢(通常更準確)", " • 避免過於寬泛的關鍵字", "", "2. 批量操作", " • 集中處理相似的查詢請求", " • 合理設置批量下載的間隔時間", " • 監控磁盤使用情況", "", "3. 錯誤處理", " • 實現智能重試機制", " • 分類處理不同類型的錯誤", " • 記錄失敗的操作用於後續分析", "", "4. 資源管理", " • 及時清理臨時文件", " • 避免同時進行過多的並發操作", " • 合理使用緩存減少重複查詢" ] for tip in tips: print(tip) print() def main(): """主函數:運行所有示例""" print("台灣FDA藥品查詢MCP服務器 - 使用示例\n") print("=" * 50) # 運行異步示例 async def run_examples(): await basic_search_example() await advanced_search_example() await batch_download_example() await complete_workflow_example() await error_handling_example() await best_practices_example() await performance_tips() # 運行示例 asyncio.run(run_examples()) print("=" * 50) print("示例展示完畢!") print("\n注意:這些是概念性示例,實際使用時需要:") print("1. 與MCP服務器建立連接") print("2. 替換示例中的參數值") print("3. 處理實際的返回結果") if __name__ == "__main__": main()

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/benjamin920101/fda-taiwan-mcp'

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