本项目目前仍在开发中,尚未准备好用于生产环境。其目的是记录可能敏感的医疗信息,并提供一个分析平台。在演示过程中,绝对不应假设数据隐私或安全性。服务器或LLM提供的建议或指令应谨慎对待。此应用程序演示和概念验证不适用于医疗用途,不应作为专业医疗建议的替代品。
这是一个用于记录症状及相关环境/身体信息的FastMCP服务器,将这些信息存储在Elasticsearch中,并与Claude Desktop集成以实现智能数据录入和检索。
现在比以往任何时候都更重要的是,人们正在利用工具来更好地了解自己的健康和福祉。随着人工智能和机器学习的发展,我们可以利用这些工具通过数据收集和分析来更好地理解个人健康。
疾病和健康状况是复杂的,我们并不总是能够了解全貌。通过记录和分析我们的症状及相关信息,我们可以更好地了解自己的健康并做出明智的护理决策。我们知道至少有三个人患有“沉默”的疾病,这种疾病可能没有明显的外在表现,但可能会给他们带来显著的不适、疼痛或残疾。通过创建和维护他们的身体体验记录,我们希望为他们的护理提供文档和支持。
复制示例环境文件并配置您的凭据:
cp .env.example .env
编辑.env并设置您的凭据(等号周围无空格):
# 必需
ANTHROPIC_API_KEY=your-anthropic-api-key-here
ES_ENDPOINT=https://your-elasticsearch-endpoint:443
ES_API_KEY=your-elasticsearch-api-key-here
# 可选(已提供默认值)
ES_INDEX=symptom_entries
JURY_SUMMARY_INDEX=event_summaries
JURY_COUNTER_INDEX=jury_counter
J
URY_MODE=every_1
对于本地Elasticsearch(非云):
ANTHROPIC_API_KEY=your-anthropic-api-key-here
ES_ENDPOINT=http://elasticsearch:9200
# 对于本地设置,留空ES_API_KEY
ES_INDEX=symptom_entries
# 启动Elasticsearch和SymptomMinder
docker-compose up -d
# 查看日志
docker-compose logs -f symptom-minder
# 停止服务
docker-compose down
# 重置所有数据(删除Elasticsearch卷)
docker-compose down -v
访问点:
http://localhost:9200curl http://localhost:9200/_cluster/health将以下内容添加到您的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
在添加配置后:
# 首先构建Docker镜像
docker build -t symptom-minder .
# 以交互模式运行进行测试
docker run -i --rm --env-file .env symptom-minder
如果您想在不使用Docker的情况下进行测试:
# 安装依赖项
pip install -r requirements.txt
# 使用检查器运行开发服务器
fastmcp dev server.py
检查器将在http://localhost:6274启动,并在终端输出中提供认证链接。
review_symptom_entry:在保存前审核症状条目,生成可读摘要confirm_and_save_symptom_entry:将确认的条目保存到Elasticsearch,触发陪审团审核flexible_search:带有过滤器的灵活搜索(日期范围、症状、药物、笔记)
{"start_time": "2025-08-01", "end_time": "2025-08-31"}get_incomplete_symptoms:查找标记为未完成的症状以便跟进update_symptom_entry:更新现有条目并添加解决备注list_symptom_entries:检索最近的症状条目(默认:20个)symptom_followup_guidance:指导Claude进行自然的后续行为# 生成麸质不耐受症状数据集
python data/generate_gluten_symptoms.py
# 将示例数据加载到Elasticsearch
python data/reset_and_load_gluten_data.py
这将创建一个现实的3个月数据集,展示通过每周症状模式逐渐发现麸质不耐受的过程。
# 清除所有数据并重置计数器
python data/reset_and_load_gluten_data.py
# 或使用Docker Compose
docker-compose down -v # 删除所有Elasticsearch数据
docker-compose up -d
review_symptom_entry生成摘要confirm_and_save_symptom_entry保存到Elasticsearchflexible_search或资源访问server.py:具有工具/资源定义的FastMCP服务器symptom_schema.py:用于数据验证的Pydantic模型jury_tools.py:多模型LLM质量保证系统tools/:工具实现(搜索、更新、录入)resources/:资源实现(列出条目)utils/:共享实用程序(ES客户端、数据清理)LLM陪审团使用3个Claude模型并行验证结构化条目与原始笔记:
claude-3-5-sonnet-latestclaude-3-7-sonnet-latestclaude-sonnet-4-20250514触发频率通过JURY_MODE配置(例如,every_5 = 在第5、10、15个条目上运行)。
记录症状:
"我有一个严重的头痛,从两小时前开始。我服用了Advil,但还没有缓解。"
搜索症状:
"显示我上个月的所有头痛"
更新症状:
"早上那个头痛在我喝了更多的水之后解决了"
查找模式:
"我的症状是否与饮食有关?"
容器无法启动:
# 查看日志
docker-compose logs symptom-minder
# 验证.env文件已加载
docker run -i --rm --env-file .env symptom-minder python -c "import os; print('ES_ENDPOINT:', os.environ.get('ES_ENDPOINT'))"
Elasticsearch连接失败:
.env中的ES_ENDPOINT和ES_API_KEYcurl $ES_ENDPOINTES_API_KEYMCP服务器未出现:
claude_desktop_config.json中的JSON语法./)docker images | grep symptom-minder身份验证错误:
.env文件中有正确的凭据--env-file路径是绝对路径< >占位符)| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
ANTHROPIC_API_KEY | 是 | - | 您的Anthropic API密钥 |
ES_ENDPOINT | 是 | http://localhost:9200 | Elasticsearch端点URL |
ES_API_KEY | 否 | - | 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等 |
这是一个演示项目,没有任何安全保证。
有关详细的开发信息,请参阅CLAUDE.md。
fastmcp>=2.0.0 - FastMCP框架elasticsearch>=9.1.0 - 异步Elasticsearch客户端anthropic>=0.61.0 - Anthropic APIpydantic - 数据验证这是一个演示项目。自行承担风险使用。
这是一个个人演示项目。欢迎分叉并根据需要适应使用。 </中文翻译>