⚠️ 开发者备注 ⚠️
这个项目目前仍在开发中,尚未准备好投入生产。其目的是记录可能涉及敏感的医疗信息,并提供一个分析平台。绝对不应该(泄露或滥用这些信息) 不假设数据隐私或安全 在这个演示中。服务器或大型语言模型(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_entries2. 使用 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).Path4. 重启Claude桌面版
添加配置后:
- 彻底退出 Claude Desktop
- 重启Claude桌面版
- 寻找🔨锤子图标,表示MCP服务器已连接
- 开始使用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______________________________________________________________________
架构概述
数据流
- 用户输入 → Claude Desktop 自然语言(处理/理解/生成等,根据上下文具体确定)
- 评审阶段 →
review_symptom_entry生成摘要 - 用户确认 → 验证输入准确性
- 保存阶段 →
confirm_and_save_symptom_entry保存到Elasticsearch - 评审团审议 (条件性) → 多模型大型语言模型验证
- 查询/检索 →
flexible_search或资源访问 - 后续跟进 (可选)→ 长期追踪未完成的症状
关键组件
server.py带有工具/资源定义的FastMCP服务器symptom_schema.py用于数据验证的 Pydantic 模型jury_tools.py多模型大语言模型(LLM)质量保障系统tools/工具实现(搜索、更新、条目)resources/资源实现(列表条目)utils/共享工具(ES客户端,数据清洗)
陪审团制度
大语言模型(LLM)评审团使用三个Claude模型并行验证结构化条目与原始笔记的一致性:
claude-3-5-sonnet-latestclaude-3-7-sonnet-latestclaude-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.0Anthropic APIpydantic- 数据验证
______________________________________________________________________
许可证
这是一个演示项目。使用后果自负。
贡献
这是一个个人演示项目。欢迎随意克隆并根据自己的需求进行修改。
