症状记录分析服务

一个用于记录症状及相关环境/身体信息,存储于Elasticsearch,并与Claude Desktop集成的智能数据录入和检索服务。

  • by justincastilla
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 justincastilla/symptomMinder

使用说明

⚠️ 开发者备注 ⚠️

这个项目目前仍在开发中,尚未准备好投入生产。其目的是记录可能涉及敏感的医疗信息,并提供一个分析平台。绝对不应该(泄露或滥用这些信息) 不假设数据隐私或安全 在这个演示中。服务器或大型语言模型(LLM)给出的建议或指令应持保留态度。这个应用演示和概念验证是 非医用 并且不应作为专业医疗建议的替代品。

SymptomMinder 快速MCP服务器

一个FastMCP服务器,用于记录症状及相关环境/身体信息,将其存储在Elasticsearch中,并与Claude Desktop集成以实现智能数据录入和检索。

动机

如今,人们比以往任何时候都更有能力利用工具来更好地了解自己的健康状况和福祉。随着人工智能和机器学习的兴起,我们可以利用这些工具,通过数据收集和分析,更深入地了解我们各自的健康状况。

疾病与健康是复杂的,我们无法总是了解全局。通过记录和分析我们的症状及相关信息,我们可以更好地了解自己的健康状况,并做出明智的护理决策。我们至少都认识三个人,他们患有“隐性”疾病,这些疾病可能没有外在表现,但却可能给他们带来显著的不适、疼痛或残疾。通过创建并维护他们身体状况的记录,我们希望为他们的护理提供文档记录和支持。

特点/功能

  • “Review-Confirm-Save”模式在保存前验证条目
  • 多模型大语言模型评审团使用多个Claude模型进行质量保证
  • 灵活搜索日期范围、症状、药物、语义注释搜索
  • 后续追踪追踪未完成的症状并收集最新进展
  • Elasticsearch 存储强大的查询功能和数据持久性
  • Claude 桌面集成自然语言症状输入

快速入门Docker(推荐)

先决条件

  • 已安装Docker和Docker Compose
  • Anthropic API密钥
  • Elasticsearch 实例(或使用附带的本地设置)

1. 环境配置

复制示例环境文件并配置您的凭据:

cp .env.example .env

编辑 .env 并设置您的凭据(周围不要有空格) =):

# Required
ANTHROPIC_API_KEY=your-anthropic-api-key-here
ES_ENDPOINT=https://your-elasticsearch-endpoint:443
ES_API_KEY=your-elasticsearch-api-key-here

# Optional (defaults provided)
ES_INDEX=symptom_entries
JURY_SUMMARY_INDEX=event_summaries
JURY_COUNTER_INDEX=jury_counter
JURY_MODE=every_1

对于本地 Elasticsearch(非云端):

ANTHROPIC_API_KEY=your-anthropic-api-key-here
ES_ENDPOINT=http://elasticsearch:9200
# Leave ES_API_KEY empty for local setup
ES_INDEX=symptom_entries

2. 使用 Docker Compose 启动服务

# Start Elasticsearch and SymptomMinder
docker-compose up -d

# View logs
docker-compose logs -f symptom-minder

# Stop services
docker-compose down

# Reset all data (removes Elasticsearch volumes)
docker-compose down -v

接入点:

  • Elasticsearch: http://localhost:9200
  • 健康检查: curl http://localhost:9200/_cluster/health

3. 配置Claude桌面版

在您的Claude Desktop MCP设置文件中添加以下内容:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

配置:

{
  "mcpServers": {
    "symptom-minder": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "/absolute/path/to/SymptomMinder/.env",
        "symptom-minder"
      ]
    }
  }
}

重要提示: 替换 /absolute/path/to/SymptomMinder/ 请将(此处)替换为您的SymptomMinder目录的实际路径。

找到你的绝对路径:

# macOS/Linux
cd /path/to/SymptomMinder
pwd

# Windows (PowerShell)
cd C:\path\to\SymptomMinder
(Get-Location).Path

4. 重启Claude桌面版

添加配置后:

  1. 彻底退出 Claude Desktop
  2. 重启Claude桌面版
  3. 寻找🔨锤子图标,表示MCP服务器已连接
  4. 开始使用SymptomMinder,自然描述您的症状!

在本地测试服务器

带检查器的开发模式

# Build the Docker image first
docker build -t symptom-minder .

# Run in interactive mode for testing
docker run -i --rm --env-file .env symptom-minder

使用FastMCP Inspector(不使用Docker)

如果你不想使用 Docker 进行测试:

# Install dependencies
pip install -r requirements.txt

# Run development server with inspector
fastmcp dev server.py

检查员将开始于 http://localhost:6274 在终端输出中包含一个授权链接。


MCP 工具与资源

入门工具

  • **review_symptom_entry**在保存前审查症状条目,生成可读性强的摘要
  • **confirm_and_save_symptom_entry**已确认保存至Elasticsearch,触发评审团审核

搜索工具

  • **flexible_search**带过滤器的灵活搜索(日期范围、症状、药物、备注)
    • 使用简单的键值对: {"start_time": "2025-08-01", "end_time": "2025-08-31"}
    • 非(或“不”) 原始的Elasticsearch查询
  • **get_incomplete_symptoms**查找标记为不完整的症状以进行后续跟进
  • **update_symptom_entry**更新现有条目,添加分辨率备注

资源

  • **list_symptom_entries**检索最近的症状记录(默认:20条)

提示

  • **symptom_followup_guidance**指导克劳德进行自然的后续行为

数据管理

生成演示数据

# Generate gluten intolerance symptom dataset
python data/generate_gluten_symptoms.py

# Load demo data into Elasticsearch
python data/reset_and_load_gluten_data.py

这生成了一个真实的三个月数据集,展示了通过每周的症状模式逐渐发现麸质不耐受的情况。

重置数据库

# Clear all data and reset counters
python data/reset_and_load_gluten_data.py

# Or with Docker Compose
docker-compose down -v  # Removes all Elasticsearch data
docker-compose up -d

架构概述

数据流

  1. 用户输入 → Claude Desktop 自然语言(处理/理解/生成等,根据上下文具体确定)
  2. 评审阶段 → review_symptom_entry 生成摘要
  3. 用户确认 → 验证输入准确性
  4. 保存阶段 → confirm_and_save_symptom_entry 保存到Elasticsearch
  5. 评审团审议 (条件性) → 多模型大型语言模型验证
  6. 查询/检索 → flexible_search 或资源访问
  7. 后续跟进 (可选)→ 长期追踪未完成的症状

关键组件

  • **server.py**带有工具/资源定义的FastMCP服务器
  • **symptom_schema.py**用于数据验证的 Pydantic 模型
  • **jury_tools.py**多模型大语言模型(LLM)质量保障系统
  • **tools/**工具实现(搜索、更新、条目)
  • **resources/**资源实现(列表条目)
  • **utils/**共享工具(ES客户端,数据清洗)

陪审团制度

大语言模型(LLM)评审团使用三个Claude模型并行验证结构化条目与原始笔记的一致性:

  • claude-3-5-sonnet-latest
  • claude-3-7-sonnet-latest
  • claude-sonnet-4-20250514

通过配置触发频率 JURY_MODE (例如。, every_5 (在第5、10、15…项上运行)。


使用Claude桌面版的示例

记录一个症状:

“我两小时前开始剧烈头痛。我吃了布洛芬,但还没见效。”

搜索症状:

“给我显示上个月我所有的头痛问题”

更新一个症状:

“我之前头疼的毛病在多喝了几口水后缓解了”

寻找模式:

“我的症状与我的饮食之间是否存在某种规律?”


故障排除

Docker 问题

容器无法启动:

# Check logs
docker-compose logs symptom-minder

# Verify .env file is loaded
docker run -i --rm --env-file .env symptom-minder python -c "import os; print('ES_ENDPOINT:', os.environ.get('ES_ENDPOINT'))"

Elasticsearch 连接失败:

  • 验证 ES_ENDPOINT 并且 ES_API_KEY 在里面 .env
  • 检查Elasticsearch是否正在运行: curl $ES_ENDPOINT
  • 对于本地应急服务(ES),确保无(此处“no”后可能省略了具体内容,根据上下文可能需要补充,如“no interference”表示“确保无干扰”等) ES_API_KEY 被设定

Claude桌面端问题

MCP服务器未显示:

  • 验证JSON语法 claude_desktop_config.json
  • 使用绝对路径(而非相对路径,如 ./)
  • 完全重启Claude桌面版
  • 检查Docker镜像是否存在: docker images | grep symptom-minder

认证错误:

  • 确保 .env 文件包含正确的凭据
  • 检查 --env-file 在配置中,路径是绝对的
  • 验证API密钥是否有效(无 < > 占位符)

环境变量参考

变量 必填 默认值 描述
ANTHROPIC_API_KEY 好的,以下是翻译后的内容:
ES_ENDPOINT 是 http://localhost:9200 Elasticsearch 端点 URL
ES_API_KEY 1. Elasticsearch API密钥(本地环境可省略)
ES_INDEX 不 symptom_entries 主要症状条目索引
JURY_SUMMARY_INDEX 序号 event_summaries 评审总结索引
JURY_COUNTER_INDEX 不 jury_counter 陪审团触发计数器索引
JURY_MODE 不 every_1 评审团触发: none, every_1, every_5等。

安全通知

这是一个演示项目,不提供任何安全保障。

  • 数据隐私未得到强制执行
  • 不要存储真实的受保护健康信息(PHI)
  • 不符合HIPAA(健康保险流通与责任法案)规定
  • 不用于医疗诊断或治疗
  • 始终向医疗专业人士咨询以获取医疗建议

发展

如需详细的开发信息,请参阅 CLAUDE.md(文件名,可译为“克劳德.md”或保持原样,具体取决于上下文是否需要翻译文件名)。

要求

  • Python 3.12+(或“Python 3.12及以上版本”)
  • Docker 和 Docker Compose
  • Elasticsearch 8.x及以上版本
  • Anthropic API访问

关键依赖项

  • fastmcp>=2.0.0 - FastMCP框架
  • elasticsearch>=9.1.0 - 异步 Elasticsearch 客户端
  • anthropic>=0.61.0 Anthropic API
  • pydantic - 数据验证

许可证

这是一个演示项目。使用后果自负。

贡献

这是一个个人演示项目。欢迎随意克隆并根据自己的需求进行修改。