Open Medkit
AI-Powered Personal Medicine Manager
Ask AI about Open Medkit
Powered by Claude · Grounded in docs
I know everything about Open Medkit. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation

为什么选择 Open MedKit
家里的药总是找不到、忘了过期、想不起来有没有。
Open MedKit 让你用一句话把药品录入药箱,用一句话从药箱里找药。没有复杂的表单,没有手动归类 —— AI 搞定一切,你只管说。
不想打开浏览器?Open MedKit 同时提供 MCP Server,可以直接在 Claude Code、Cursor、Claude Desktop、OpenClaw 等 AI 客户端中通过自然语言管理药箱 —— 在终端里说一句「帮我加个布洛芬」,药品就入库了。
功能亮点
| 说一句话就入库 | 自然语言描述药品 → AI 提取名称、规格、有效期等全部字段,确认即入库 |
| 换行分隔批量录 | 多条药品换行粘贴,一键批量解析,适合首次整理一整箱药 |
| 问一句话就找药 | 「有退烧药吗」「快过期的有哪些」—— 像聊天一样检索药箱 |
| 过期自动提醒 | 到期 / 即将到期药品自动标记高亮,支持 Telegram / Discord / 飞书 / 邮件 每日推送 |
| Agent 原生接入 | 内置 MCP Server,Claude Code / Cursor / Claude Desktop / OpenClaw 直接调用 tool 管理药箱 |
| 一行命令自部署 | docker compose up -d --build,药箱数据默认保存在本地 SQLite;启用 AI 或通知时仅与对应服务通信 |
| 兼容任意 AI | OpenAI、Deepseek、Ollama…… 任何兼容 /v1/chat/completions 的 API 均可 |
功能演示
AI 智能录入演示 — 说一句话,自动解析入库

药品列表 — 分类筛选 · 过期状态一目了然

技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 18 · TypeScript · Vite · TailwindCSS v3 |
| 后端 | Hono (Node adapter) · TypeScript |
| 数据库 | SQLite via better-sqlite3 |
| AI | 任何兼容 OpenAI 格式的 API (/v1/chat/completions) |
| 部署 | 单 Docker 容器 |
快速开始
Docker(推荐)
git clone https://github.com/MonoYan/open-medkit.git
cd open-medkit
cp .env.example .env
# 可选:编辑 .env 设置 AI 默认值、MEDKIT_PORT 或代理变量
docker compose up -d --build
默认访问 http://localhost:3000。如果修改了 .env 中的 MEDKIT_PORT,请使用对应端口。
AI 配置在部署时是可选的,可以留空,之后在浏览器的设置面板中配置。
首次打开 Web UI 时,应用会自动检测当前浏览器时区并写入服务端;后续的过期判断、AI 问答中的"今天"以及每日提醒时间都会以这个业务时区为准。
本地开发
前置条件:Node.js >= 20
git clone https://github.com/MonoYan/open-medkit.git
cd open-medkit
npm install
cp .env.example .env
npm run dev
前端运行在 http://localhost:5173,后端运行在 http://localhost:3000。
如果你只通过 MCP / CLI / OpenClaw 使用 Open MedKit、从不打开 Web UI,请先初始化时区。未初始化时系统会回退到 UTC,不会使用服务器本地时区。
配置
所有 AI 配置也可以在浏览器的设置面板中设置。在浏览器中输入的值存储在当前浏览器的 localStorage 中,优先级高于环境变量。
MEDKIT_PORT 仅影响 Docker Compose 的宿主机端口映射。PORT 和 DB_PATH 用于源码 / 非 Docker 方式运行。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
AI_API_KEY | — | 兼容 OpenAI 格式的 API Key |
AI_BASE_URL | https://api.openai.com | API 基础 URL |
AI_MODEL | gpt-4o-mini | 模型名称 |
MEDKIT_PORT | 3000 | docker compose 暴露的宿主机端口 |
PORT | 3000 | 源码运行时的服务端口(不使用 Docker) |
DB_PATH | ./data/medicine.db | 源码运行时的 SQLite 数据库路径(不使用 Docker) |
HTTP_PROXY | — | 可选的 HTTP 代理,用于出站请求 |
HTTPS_PROXY | — | 可选的 HTTPS 代理,用于出站请求 |
NO_PROXY | — | 逗号分隔的不走代理的主机列表 |
通知提醒
支持 Telegram / Discord / 飞书 / Email(SMTP 和 Resend)四种渠道,均在 Web UI 的 设置 → 通知提醒 中配置。
各渠道的详细配置步骤、常见邮箱参数和故障排查请参阅 通知提醒配置。
隐私与安全
- 药品数据默认存储在部署环境内的 SQLite 数据库中。
- AI 解析、图片识别和聊天功能会将提交的文本或图片发送到你配置的 OpenAI 兼容接口。
- AI 聊天还会发送回答问题所需的当前药品库存数据,请避免录入不希望与模型提供商共享的信息。
- 浏览器端的 AI 配置(如
AI_API_KEY、Base URL、模型名称)存储在当前浏览器的localStorage中。 - 通知提醒(Telegram / Discord / 飞书 / 邮件)启用后,会将药品名称、有效期和提醒文本发送到对应平台。
- Open MedKit 仅用于家庭药品库存管理,不提供诊断、处方或个性化用药建议。
部署
详细部署指南请参阅 部署文档。
快速部署 — 任何能运行 Docker 的机器:
docker compose up -d --build
数据持久化在 Docker 卷 (medkit-data) 中。备份方式:
docker cp medkit:/data/medicine.db ./medicine-backup.db
MCP Server(Agent 集成)
Open MedKit 内置 MCP 服务器,让 AI agent 直接通过 tool 调用管理药箱数据,无需打开浏览器。
已验证支持的客户端:
| 客户端 | 配置方式 |
|---|---|
| Claude Code | 项目根目录 .mcp.json,启动即自动连接 |
| OpenClaw / Codex | codex.json 或 ~/.codex/config.json,支持 Skill 调用 |
| Cursor | ~/.cursor/mcp.json 或项目 .cursor/mcp.json |
| Claude Desktop | claude_desktop_config.json |
快速接入 — 在项目根目录创建 .mcp.json(Claude Code 自动识别):
{
"mcpServers": {
"open-medkit": {
"command": "npx",
"args": ["tsx", "backend/src/mcp-server.ts"],
"env": { "DB_PATH": "./backend/data/medicine.db" }
}
}
}
如果你通过浏览器使用,首次访问时会自动检测并保存浏览器时区。
如果你只通过 MCP 使用,建议第一次连接后先运行:
get_settings
set_timezone(timezone="Asia/Shanghai")
未初始化时区时,MCP 会明确提示当前只是回退到 UTC,而不是服务器本地时区。
详细文档:各客户端的完整配置方法、OpenClaw Skill 编写模板、对话示例、故障排查等,请参阅 MCP 使用指南。
项目结构
open-medkit/
├── backend/ # Hono API 服务器 + MCP 服务器
│ └── src/
│ ├── ai/ # AI 客户端、提示词、解析逻辑
│ ├── db/ # SQLite schema 与客户端
│ ├── routes/ # REST API 路由
│ ├── services/ # Telegram、Discord、飞书、邮件 & 通知调度
│ ├── middleware/ # API Key 注入
│ └── mcp-server.ts # MCP 服务器(stdio 传输)
├── frontend/ # React 单页应用
│ └── src/
│ ├── components/
│ ├── hooks/
│ ├── lib/ # API 客户端 & 工具函数
│ └── types/
├── Dockerfile # 多阶段构建
├── docker-compose.yml
└── .env.example
许可证
MIT
Star History
Powered by Star History
