Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Open MedKit 是 MonoYan 以 MIT 釋出的開源家庭藥箱管理工具,用 Docker 自架,把自然語言錄入、AI 結構化解析、過期提醒與 MCP 接入串成一條工作流。藥品資料存在本地 SQLite,但 AI 解析與問答會把你輸入的內容送給你設定的 LLM API(預設 OpenAI)。它是藥品整理工具,不是醫療建議系統。
用 AI 摘要這篇文章:
Open MedKit 是一套以 MIT 釋出、用 Docker 自架的家庭藥箱管理工具,作者 MonoYan 一人開發。你對著它說一句「這是一盒 2027 年初過期的布洛芬,還剩大概一半」,它就會把你口語化的描述交給大模型拆成名稱、規格、有效期與數量,寫進本地 SQLite,快過期時再透過 Telegram 或郵件提醒你。它還內建 MCP Server,可以直接在 Claude Code、Cursor 這類 AI 客戶端裡用一句話管理藥箱。但開源、自架、本地資料庫這幾個字,並不代表整套流程都待在你家機器裡。
我的判斷是這樣。如果你是會自己跑 Docker、想把家庭藥品或到期物資整理進一套可自架工作流的折騰黨,Open MedKit 把過去要手動填表的結構化欄位交給大模型做結構化拆解,這個互動省事是真的。但決定你該不該把家裡藥品交給它的,是兩件它不會主動替你扛的事:你輸入的藥品資料會送給你設定的 LLM API 處理,以及它是一個藥品整理與提醒工具、不是醫療建議系統。
TL;DR:Open MedKit 把「對著藥箱說一句話就完成錄入」做成了可自架的開源系統,藥品資料存在本地 SQLite。但它的資料邊界畫在「儲存本地、AI 處理雲端」:AI 解析與問答會把你輸入的內容與庫存送給你設定的 LLM,預設是 OpenAI。要讓 AI 處理也留在本地,得自己把 AI_BASE_URL 指向 Ollama。
Open MedKit 在 GitHub 倉庫的自我定位寫得很清楚:AI-Powered Personal Medicine Manager,家庭藥箱管理工具。欄位、列表、過期判斷與提醒管道,都是圍著藥品設計的。你可以把它底層「自然語言錄入、結構化解析、本地儲存、到期提醒」的邏輯抽象成一套通用庫存工作流,但把它單純當成另一個庫存 App 來用,會錯過它真正該被看清楚的地方,也會忽略它作為藥品管理工具該有的健康資訊邊界。

它真正值得拆開來看的是這條互動鏈路。你在網頁或終端輸入一句口語描述,系統把它交給你設定的 OpenAI 相容 API,模型回傳結構化欄位,確認後寫入本地 SQLite。要找藥的時候也是用問的,像聊天一樣問「有退燒藥嗎」「快過期的有哪些」,系統比對資料庫回覆,並把即將到期的項目透過你設定的通知管道推給你。整條鏈路是輕量的,但每一環都值得知道資料去了哪裡。

很多人看到「自架、本地 SQLite、開源」就直覺認定資料不外送,這是 Open MedKit 最需要被講清楚的地方。作者在 README 的隱私與安全段寫得很明白:藥品資料預設存在你部署環境內的 SQLite,但 AI 解析、圖片辨識與聊天功能,會把你提交的文字或圖片發送到你設定的 OpenAI 相容介面。AI 聊天還會把回答問題所需的目前藥品庫存一起送出去。
換句話說,它的資料邊界畫在「儲存本地、AI 處理雲端」。本地 SQLite 只解決了資料落地這一層,但決定藥品名稱、規格、有效期的解析動作,以及你問「我家還有沒有退燒藥」這類問題的推理動作,全部發生在你設定的 LLM 那一側。預設配置指向 OpenAI,也就是說在你什麼都不改的情況下,你輸入的藥品資訊會經過 OpenAI 的雲端模型。作者也因此在文件裡直白提醒:請避免錄入不希望與模型供應商共享的資訊。
這條「儲存在本地不等於處理在本地」的界線,跟之前聊過的純前端音轉字工具是同一個誠實軸:前端切音檔在本機,但語音辨識仍要送雲端 ASR。Open MedKit 是這個軸的另一個變體,而且它處理的是藥品這類帶有隱私與健康屬性的資料,資料外送的敏感度比一般筆記更高。看清這條線,才能決定你願不願意把家裡的藥品清單交給它。
好消息是 Open MedKit 的 AI 層是可替換的。它相容於任何走 OpenAI 格式(/v1/chat/completions)的 API,OpenAI、Deepseek、或你自己跑的 Ollama 都能接。如果你在意藥品資料外送,把 .env 裡的 AI_BASE_URL 指向同一台機器上的 Ollama 服務,整條解析鏈路就可以做到不入雲端。這是把它從「資料落地但 AI 雲端」推到「資料落地、AI 也落地」的唯一設定,但代價是你要自己準備能跑得動本地模型的硬體。
這個取捨很實際。走雲端 LLM,解析品質穩、硬體門檻低,但你家的藥品清單會經過模型供應商;走本地 Ollama,資料完全不出本機,但你要承擔模型挑選、顯示卡資源與解析品質的變動。Open MedKit 本身不替你做這個選擇,它只提供切換介面,AI_API_KEY、AI_BASE_URL、AI_MODEL 三個欄位填什麼,決定了你的藥品資料走哪一條路。
Open MedKit 的部署負擔在自架工具裡算輕的。前置條件是 Node.js 20 以上與 Docker,作者推薦的 Docker 路線只要一條 docker compose up -d --build 就跑起來,預設開在 http://localhost:3000,藥箱資料落在容器內的 SQLite。技術棧是 React 18 加 TypeScript 與 Vite 的前端、Hono 寫的 Node 後端、better-sqlite3 當資料庫,全部裝進單一 Docker 容器。AI 設定可以部署時留空,之後再在瀏覽器的設定面板補。
這裡的門檻不在部署本身,而在你願不願意長期維護一套自己跑的服務。Docker 跑起來是一回事,機器開著、容器更新、備份那個 SQLite 檔,是另一回事。如果你的需求只是偶爾整理一次藥箱,這套自架方案相對一般手機 App 並不見得更划算,它服務的是本來就在跑 HomeLab、習慣自己裝服務的人。
Open MedKit 內建一個 MCP Server,可以接進 Claude Code、Cursor、Claude Desktop、OpenClaw 這類 AI 客戶端。這代表你不一定要開瀏覽器,也能管理藥箱:在終端或編輯器裡說一句「幫我加個布洛芬」,AI 客戶端就透過 MCP 工具呼叫把藥品寫進本地資料庫。對已經把這些 AI 客戶端當日常工作環境的人,這條接入把管理藥品從一個獨立任務,降階成一句順口交代的指令。
但同一條 MCP 接入也要回到前面的資料邊界來看。MCP 讓 AI 客戶端能讀寫你的藥品庫存,而這些客戶端本身的推理又可能走雲端模型,等於你的藥品資料會被它讀進上下文、再送給該模型的供應商。這不是 Open MedKit 的缺陷,而是 MCP 類工具的共通屬性:愈方便讓 AI 代你操作本地資料,就愈要弄清楚那個 AI 的推理發生在哪裡。
如果你需要的是 LLM API 而不是藥箱管理,可以另看整理過的免費 LLM API 匯集,那屬於不同維度的需求。
| 比較項目 | Open MedKit | 手機庫存 App | 雲端 AI 筆記工具 |
|---|---|---|---|
| 部署型態 | Docker 自架,資料在本機 SQLite | App 商店安裝,資料多在雲端 | 雲端服務,資料在供應商 |
| 錄入方式 | 自然語言,AI 解析欄位 | 手動表單填寫 | 自然語言,雲端模型處理 |
| 資料處理位置 | 儲存本地,AI 處理看你設定 | 多為雲端同步 | 完全雲端 |
| AI 可替換性 | 可,相容 OpenAI 格式含 Ollama | 通常無 AI | 綁定供應商模型 |
| 合適場景 | 家庭藥箱、到期物資整理 | 通用物品清單 | 文字知識與筆記 |
把這三條路線擺在一起,Open MedKit 的位置就清楚了。它不是要跟手機庫存 App 比功能多寡,也不是要跟雲端 AI 工具比模型強弱。它解的是另一個問題:把家庭藥品這種帶隱私與健康屬性的清單,放在自己機器裡,用可替換的 AI 做錄入與查詢。願意接受自架成本的人拿到的是資料落地與 AI 可替換這兩件事,代價是部署、維運與模型選擇都要自己來。
下面這幾種人會覺得 Open MedKit 值得一架:本來就在跑 HomeLab 或 NAS、習慣用 Docker 裝服務的人;已經把 Claude Code、Cursor 這類 AI 客戶端當工作環境、想用一句話管理本地資料的開發者;以及在意資料落地、願意把 AI_BASE_URL 指向 Ollama 換取完全本地處理的隱私偏好者。
反過來說,如果你只是想偶爾清點一次家裡的藥,不想顧一台伺服器,一般手機 App 會實際得多;如果你沒有把握自己跑得動本地模型、又不願意把藥品資料送雲端,這套工具目前的設定會讓你卡在中間;以及最關鍵的一種:如果你打算用它來做用藥判斷、劑量建議或藥物交互作用諮詢,請先停下來。
作者在文件裡明說,這個專案的定位是藥品整理與到期提醒,不是醫療建議系統。它能幫你記住家裡有哪盒藥、什麼時候過期,但它不會、也不該取代藥師或醫師的專業判斷。把庫存整理與用藥諮詢分清楚,是這類健康相關工具能不能被放對位置的底線。
是。作者 MonoYan 以 MIT 授權釋出,原始碼在 github.com/MonoYan/open-medkit。MIT 是寬鬆授權,你可以讀、可以 fork、可以修改並商用,只要保留授權聲明。不過它呼叫的 LLM 與通知服務各有獨立的條款與計費,那些不在 MIT 覆蓋範圍內。
儲存不會,但 AI 處理會。藥品資料預設存在你部署環境內的本地 SQLite;但 AI 解析、圖片辨識與聊天會把你輸入的內容與目前庫存,發送到你設定的 OpenAI 相容介面,預設是 OpenAI。要讓 AI 處理也留在本地,得把 AI_BASE_URL 指向自己跑的 Ollama。
不能。作者明說這是藥品整理與到期提醒工具,不是醫療建議系統。它可以幫你記住家裡有哪些藥、何時過期,但用藥判斷、劑量與藥物交互作用這類問題,要回到藥師或醫師的專業判斷。
看你的 AI 走哪一條。走雲端 LLM 不需要本地 GPU,只要有效的 API Key;走本地 Ollama 才需要能跑得動對應模型的顯示卡,這時可以先用本地 AI 硬體檢測工具確認手邊機器夠不夠。部署本身的硬體門檻很低,AI 處理的位置才是決定硬體需求的那一環。
在 Claude Code、Cursor、Claude Desktop 或 OpenClaw 這類支援 MCP 的用戶端設定檔裡,加上 Open MedKit 的 MCP 端點,詳細步驟見倉庫裡的 MCP.md。接好後就能在這些用戶端裡用自然語言讀寫藥品庫存,但同樣要記得,這些用戶端的推理可能走雲端模型,藥品資料會進入它們的上下文。