doctor-task-mcp
v1.2.15
Published
医疗营销系统任务自动化MCP
Readme
医疗营销系统任务自动化 MCP 插件
这是一个基于 MCP(Model Context Protocol)的专业插件,用于自动化医疗营销系统的任务创建和管理。通过自然语言处理+LLM+SQL 的组合,实现完整的业务流程自动化。
🚀 核心功能特点
🎯 智能任务创建
- 自然语言处理: 通过简单的中文描述自动创建复杂的营销任务
- 完整业务流程: 自动处理项目 → 预算 → 任务 → 用户分配的完整链路
- DDL 精确分析: 基于 INFORMATION_SCHEMA 的精确数据库结构分析
- 多业务类型支持: 支持 18 种业务类型,包括科普视频、文章、会议、问卷等
🔧 技术特点
- 模块化架构: 采用类化设计,职责清晰,便于维护和扩展
- 并行处理: 多个数据查询并行执行,提升性能
- 智能 SQL 生成: 基于 DDL 智能分析的精确 SQL 生成引擎
- 调试友好: 提供 dry-run 模式,可预览生成的 SQL 而不执行
- 缓存优化: 智能缓存机制,提升重复查询性能
- 错误重试: 自动重试机制,提高系统稳定性
🧠 业务智能
- DDL 智能分析: 精确检测 NOT NULL 和 DEFAULT 值,智能处理字段约束
- 字段分类优化: 自动分类必须赋值字段、可跳过字段、系统管理字段
- 数据关联: 智能处理表间关联关系,确保数据一致性
- 用户信息补全: 自动获取用户详细信息,包括医院、电话等
- 模式学习: 分析历史数据,学习字段填充模式
- 事务保护: 完整的事务控制,确保数据操作的原子性
📦 安装
- 克隆仓库
git clone https://github.com/yourusername/doctor-task-mcp.git
cd doctor-task-mcp- 安装依赖
npm install- 配置环境变量
cp env.example .env
# 编辑.env文件,填入数据库和LLM API配置🛠️ 使用方法
在命令行中使用
npm start在 Cursor 中使用
本插件专为 Cursor Agent 集成设计,支持自然语言交互:
示例命令:
- "创建一个科普视频任务分配给用户 534333094,预算 300 元,时间限制 10 天"
- "帮我给用户 123 分配一个学术会议任务,预算 500 元"
- "查看 marketing_project 表的结构"
🔧 MCP 工具列表
核心工具
create_task_with_llm- 智能任务创建引擎- 输入: 自然语言描述
- 输出: 完整的任务创建 SQL + 执行结果
- 特性:
- 支持 dry-run 调试模式
- DDL 精确分析
- 智能字段分类
- 缓存优化
- 错误重试机制
- 示例:
"创建一个科普视频任务分配给用户534333094,预算100000元,角色轻松医生"
get_database_schema- 数据库结构分析器- 输入: 表名(可选)、是否包含样本数据
- 输出: 表结构详情、字段约束、样本数据
- 特性:
- INFORMATION_SCHEMA 集成
- 字段约束分析
- 默认值检测
- 样本数据展示
技术参数
- LLM 提供商: 支持 DeepSeek、OpenAI 等多种 LLM
- 缓存策略: 智能缓存,可选择启用/禁用
- 超时设置: 220 秒超时,最大 3 次重试
- 事务控制: 完整的 BEGIN/COMMIT 事务保护
支持的业务类型
| ID | 业务类型 | 描述 | ID | 业务类型 | 描述 | | --- | -------- | -------------------- | --- | -------- | ------------------ | | 1 | 患教审核 | PATIENT_EDUCATION | 10 | 科普直播 | POPULAR_LIVE | | 2 | 公益直播 | LIVE | 11 | 社工服务 | SOCIAL_WORK | | 3 | 调研问卷 | QUESTIONNAIRE | 12 | 医学拜访 | MEDICAL_VISITS | | 4 | 科普视频 | VIDEO | 13 | 科普访谈 | POPULAR_INTERVIEW | | 5 | 课件制作 | COURSEWARE | 14 | 文章点评 | ARTICLE_REVIEW | | 6 | 科普文章 | ARTICLE | 15 | 视频点评 | VIDEO_REVIEW | | 7 | 学术会议 | ACADEMIC_CONFERENCES | 16 | 病例征集 | CASE_COLLECTION | | 8 | 学术拜访 | ACADEMIC_VISITS | 17 | 文献解读 | LITERATURE_READING | | 9 | 临床研究 | CLINICAL_RESEARCH | 18 | 文献点评 | LITERATURE_REVIEW |
用户来源类型:
- 1: 轻松医生 | 2: 普通志愿者 | 3: 医生志愿者
🏗️ 架构设计
目录结构
doctor-task-mcp/
├── src/
│ └── index.js # 主程序入口
├── package.json # 项目配置
├── env.example # 环境变量模板
├── tsconfig.json # TypeScript配置
├── README.md # 项目说明
└── 医疗营销系统数据库表关联关系完整文档.md # 数据库文档核心类架构 (v2.2.0)
// 数据库操作管理 - DDL增强版
class DatabaseManager {
static createConnection() // 创建连接池
static executeSQL() // 事务化SQL执行
static getTableSchema() // INFORMATION_SCHEMA集成
static getAllTables() // 获取所有表
static getTableDDLInfo() // DDL结构分析
static analyzeFieldConstraints() // 字段约束分析
}
// LLM接口管理 - 智能重试版
class LLMManager {
static makeRequest() // 发送API请求(支持重试)
static analyzeTask() // 任务意图智能分析
static generateSQL() // DDL驱动的SQL生成
static buildLLMPrompt() // 增强提示构建
}
// 数据分析工具 - 模式学习版
class DataAnalyzer {
static analyzeDefaultPatterns() // 数据模式智能学习
static getLatestEntities() // 最新记录获取
static getUserDetailedInfo() // 用户信息补全
static formatRowInfo() // 数据格式化显示
static detectFieldPatterns() // 字段模式检测
}
// 业务逻辑控制 - 工作流增强版
class TaskBusinessLogic {
static getRelevantTables() // 业务相关表获取
static checkConfig() // 环境配置验证
static gatherContextInfo() // 上下文信息收集
static gatherTablesCompleteInfo() // 完整表信息收集
static buildEnhancedPrompt() // DDL驱动的提示构建
}
// 日志管理 - 结构化日志
class Logger {
static info() // 信息日志
static error() // 错误日志
static debug() // 调试日志
}🔍 DDL 驱动的智能工作原理
🧠 核心处理流程
- 意图智能分析: LLM 深度分析自然语言,精确识别业务类型、用户 ID、预算等关键参数
- 并行信息收集: 同时获取项目状态、用户详情、预算信息等上下文数据
- DDL 结构分析: 基于 INFORMATION_SCHEMA 精确分析表结构,检测字段约束
- 字段智能分类:
- 🔴 必须赋值字段: NOT NULL 且无 DEFAULT 值
- 🟢 自动跳过字段: NOT NULL 但有 DEFAULT 值
- ⚪ 系统管理字段: 自增主键等
- 🟡 可选赋值字段: 允许 NULL 的字段
- 增强提示构建: 结合 DDL 分析结果和业务上下文构建精确的 LLM 提示
- 智能 SQL 生成: 基于字段分类和约束条件生成优化的 SQL 语句
- 事务化执行: 使用完整的 BEGIN/COMMIT 事务确保数据一致性
🎯 DDL 增强特性
- 精确字段检测: 基于数据库元数据的字段约束分析
- 智能默认值处理: 自动识别和利用数据库默认值
- 条件化字段赋值: 根据 NOT NULL 和 DEFAULT 值智能决策
- 表关联优化: 使用 LAST_INSERT_ID()精确处理表间关联
⚙️ 配置说明
环境变量配置
# ========== 数据库配置 ==========
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_DATABASE=your_database
# ========== LLM API配置 ==========
LLM_PROVIDER=deepseek # 支持: deepseek, openai
LLM_API_KEY=your_api_key
LLM_MODEL=deepseek-chat # 或: gpt-4, gpt-3.5-turbo
LLM_BASE_URL=https://api.deepseek.com
# ========== 高级配置 (可选) ==========
DB_TIMEOUT=60000 # 数据库超时时间(ms)
LLM_TIMEOUT=220000 # LLM请求超时时间(ms)
LLM_MAX_RETRIES=3 # 最大重试次数
ENABLE_CACHE=true # 启用缓存优化
LOG_LEVEL=info # 日志级别: debug, info, warn, error快速配置
# 复制环境变量模板
cp env.example .env
# 编辑配置文件
nano .env🚧 扩展开发
添加新的业务类型
// 在TaskBusinessLogic.getRelevantTables()中添加
if (businessType === NEW_TYPE_ID) {
return [...baseTables, "new_business_table"];
}添加新的 MCP 工具
server.tool(
"new_tool_name",
{
param: z.string().describe("参数描述"),
},
async ({ param }) => {
// 实现逻辑
return { content: [{ type: "text", text: "结果" }] };
}
);📊 性能优化策略
🚀 执行性能
- 并行查询: 使用 Promise.all 同时获取多个数据源,提升 3-5 倍查询速度
- 连接池管理: 高效的 MySQL 连接池,支持连接复用和自动重连
- 智能缓存: 内存缓存热点数据,减少重复数据库查询
- SQL 优化: 基于 DDL 分析生成精确 SQL,避免不必要的字段操作
🎯 智能优化
- 字段分类缓存: 缓存表结构分析结果,避免重复 DDL 查询
- LLM 请求优化: 智能重试机制,处理网络波动和 API 限流
- 事务优化: 精确的事务边界控制,最小化锁定时间
- 内存管理: 及时释放大对象,防止内存泄漏
📈 监控指标
- 处理时间: 完整流程通常在 60-90 秒内完成
- 成功率: 内置重试机制,确保 99%+的成功率
- 缓存命中: 重复查询缓存命中率达到 80%+
🛡️ 安全特性
🔒 数据安全
- SQL 注入防护: 严格的参数化查询,零 SQL 注入风险
- DDL 验证: 基于 INFORMATION_SCHEMA 的字段存在性验证
- 事务保护: 完整的 BEGIN/COMMIT 事务,确保数据一致性
- 字段约束检查: 自动验证 NOT NULL 和数据类型约束
🛠️ 系统安全
- 配置验证: 启动前全面检查环境变量和数据库连接
- 错误隔离: 结构化错误处理,防止敏感信息泄露
- 超时保护: 多层超时机制,防止资源耗尽
- 日志安全: 敏感信息脱敏处理
🔐 访问控制
- 数据库权限: 最小权限原则,仅授予必需的表操作权限
- API 密钥管理: 安全的环境变量存储 LLM API 密钥
- 连接加密: 支持 SSL/TLS 数据库连接加密
📈 版本历史
v2.2.0 (DDL 增强版) - 当前版本
- ✨ DDL 精确分析: 基于 INFORMATION_SCHEMA 的智能字段分类
- 🎯 字段约束检测: 自动识别 NOT NULL 和 DEFAULT 值约束
- 🚀 缓存优化: 智能缓存机制,提升重复查询性能
- 🔄 错误重试: 自动重试机制,提高系统稳定性
- 📊 结构化日志: 完整的操作日志和性能监控
v1.2.14 (稳定版)
- 🎯 基础自然语言任务创建
- 📊 数据库表结构查询
- 🔧 基础 DDL 分析
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
开发环境设置
git clone https://github.com/yourusername/doctor-task-mcp.git
cd doctor-task-mcp
npm install
npm run dev代码规范
- 遵循 ES6+标准
- 使用结构化日志
- 添加完整的错误处理
- 编写清晰的注释
📄 许可证
MIT License - 详见 LICENSE 文件
