PopHIVE MCP服务器
关于克劳德,在这里试试:https://claude.ai/directory/ant.dir.gh.cicatriiz.pophive
一种模型上下文协议(MCP)服务器,提供对耶鲁大学公共卫生学院PopHIVE(人口健康信息可视化浏览器)公共卫生数据的访问。此服务器通过标准化的MCP工具、资源和提示公开全面的健康监测数据,包括免疫接种、呼吸道疾病和慢性疾病。
🎯 生产准备就绪:修复了所有关键错误,增强了错误处理能力,并包含了全面的数据集元数据。
📦 桌面扩展就绪:完全符合Anthropic的桌面扩展(DXT)规范,可在Claude Desktop和其他启用MCP的应用程序中一键安装。
PopHIVE是什么?
PopHIVE(人口健康信息可视化浏览器)是耶鲁大学的综合平台,汇集了来自权威来源的近实时公共卫生数据,包括美国疾病控制与预防中心监测系统、Epic Cosmos EHR网络和谷歌健康趋势。这是流行病学家、研究人员和公共卫生专业人员的宝贵资源。
👉 探索PopHIVE: [](https://www.pophive.org/)
最近的改进
新功能
Implemented scrapers for three new datasets:
Hospital Capacity: Fetches state-level hospital utilization data from HealthData.gov.
Injury & Overdose: Fetches national-level injury and overdose death data from data.cdc.gov.
Youth Mental Health ED Visits: Fetches national-level data on youth mental health-related emergency department visits from data.cdc.gov.性能改进
Implemented a parallel, batched initial fetch for the hospital capacity dataset to significantly speed up the first-time data download.
Added incremental update logic to all scrapers to only fetch new data, reducing subsequent load times.漏洞修补
Corrected date parsing logic in the analysis tools to robustly handle various date formats across all datasets.
Fixed an issue where the hospital capacity scraper was not fetching all records.概述
PopHIVE汇集了来自多个权威来源的近乎实时的健康数据:
- 美国疾病控制与预防中心全国免疫调查(NIS):金标准疫苗接种覆盖率数据
- Epic Cosmos EHR网络:来自电子健康记录的真实临床数据
- 美国疾病控制与预防中心实验室监测(NREVSS):呼吸道病毒检测阳性率
- 美国疾病控制与预防中心废水监测(NWWS):环境病毒监测
- 谷歌健康趋势:人群行为和症状搜索模式
特性
🔧 MCP工具
- 过滤器数据:按州、日期范围、人口统计和条件过滤数据集
- 比较状态:通过统计分析比较多个州的健康指标
- 时间序列分析:使用聚合选项分析随时间变化的趋势
- 获取可用数据集:所有可用数据集的综合目录
- 搜索健康数据:在数据集中搜索特定条件或关键字
📊 MCP资源
- dataset://immunizations_nis:美国疾病控制与预防中心全国免疫调查数据
- dataset://immunizations_epic:Epic Cosmos按人口统计的免疫数据
- dataset://respiratory_ed:呼吸道病毒急诊科就诊
- dataset://respiratory_lab:实验室检测阳性率
- dataset://respiratory_wastewater:废水病毒监测数据
- dataset://respiratory_trends:呼吸道症状的谷歌搜索趋势
- dataset://chronic_obesity:按州和年龄组分列的肥胖率
- dataset://chronic_diabetes:糖尿病患病率和血糖控制数据
- dataset://hospital_capacity:HHS医院容量数据
- dataset://injury_overdose:美国疾病控制与预防中心伤害和过量数据
- dataset://youth_ed_mental_health:美国疾病控制与预防中心青少年心理健康ED就诊数据
💡 MCP提示
- 免疫接种:按人口统计分析疫苗接种覆盖率差距
- 呼吸监测:检测和分析呼吸道疾病激增
- 慢性疾病趋势:分析慢性病流行趋势
- 多源分析:整合多个数据源的综合分析
安装
选项1:桌面扩展(推荐)
对于Claude Desktop用户:
- 下载
.dxt文件来自发布页面 - 双击文件以使用Claude Desktop打开
- 在安装对话框中单击“安装”
- 配置任何所需的设置(更新频率、缓存大小)
- 扩展程序将在Claude Desktop中自动可用
对于其他启用MCP的应用程序:
- 使用相同
.dxt包含任何支持桌面扩展的应用程序的文件 - 遵循应用程序的扩展安装过程
选项2:手动安装
先决条件:
- Node.js 18+
- npm或纱线
设置:
- 克隆和安装依赖关系:
git clone
cd pophive-mcp-server
npm install- 配置环境(可选):
# Create .env file for custom configuration
echo "DATA_CACHE_DIR=./data" > .env
echo "UPDATE_FREQUENCY=daily" >> .env- 测试服务器:
npm test- 启动服务器:
npm start选项3:构建自己的扩展
从源创建桌面扩展:
- 安装DXT CLI工具:
npm install -g @anthropic-ai/dxt- 克隆并准备:
git clone
cd pophive-mcp-server
npm install- 作为扩展包:
dxt pack- 安装生成的
.dxt文件 在Claude Desktop或其他MCP应用程序中
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
DATA_CACHE_DIR | ./data | 缓存数据文件的目录 |
UPDATE_FREQUENCY | daily | 数据刷新频率(hourly, daily, weekly) |
NODE_ENV | development | 环境模式 |
MCP客户端配置
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"pophive": {
"command": "node",
"args": ["server/index.js"],
"cwd": "/path/to/pophive-mcp-server"
}
}
}数据集选择指南
为您的分析选择正确的数据集:
| 数据集 | 地理级别 | 最佳用例 | 日期范围 | 更新频率 | 关键限制 |
|---|---|---|---|---|---|
immunizations_nis | 国家+州 | 国家疫苗接种趋势,州比较 | 2019-2024 | 年度 | 调查数据,人口统计数据有限 |
immunizations_epic | 国家+州 | 现实世界的疫苗接种模式,保险分析 | 2020-2024 | 每月 | EHR网络偏见 |
respiratory_ed | 国家+州 | 急诊科监测、疫情检测 | 2020-2024 | 每周 | 仅限医疗保健使用 |
respiratory_lab | 仅限国家 | 临床试验阳性,实验室监测 | 2020-2024 | 每周 | 仅限国家汇总 |
respiratory_wastewater | 区域 | 环境监测、预警 | 2022-2024 | 每周 | 地理覆盖范围有限 |
respiratory_trends | 国家+州 | 人群行为,症状搜索 | 2020-2024 | 每周 | 行为代理,非临床 |
chronic_obesity | 国家+州 | 肥胖患病率,慢性病跟踪 | 2020-2024 | 季度 | 仅限临床人群 |
chronic_diabetes | 国家+州 | 糖尿病管理、血糖控制 | 2020-2024 | 季度 | 仅限临床人群 |
hospital_capacity | 状态 | 医院利用率、床位容量、人员短缺 | 2020-2024 | 每日 | 新冠肺炎时代焦点 |
injury_overdose | 全国 | 药物过量、凶杀、自杀 | 2019-2025 | 月度/季度 | 仅全国汇总 |
youth_ed_mental_health | 全国 | 青年心理健康ED就诊,人口趋势 | 2019-2025 | 每月 | 仅全国汇总 |
快速数据集选择
关于国家趋势: 使用 immunizations_nis, respiratory_lab,或具有以下内容的任何数据集 geography="national"
对于状态比较: 使用 respiratory_ed, chronic_obesity, chronic_diabetes,或 immunizations_nis
实时监控: 使用 respiratory_ed, respiratory_wastewater,或 respiratory_trends
对于临床结果: 使用 immunizations_epic, chronic_obesity,或 chronic_diabetes
使用示例
基础数据过滤
// ✅ WORKING: Filter immunization data for California
{
"tool": "filter_data",
"arguments": {
"dataset": "immunizations_nis",
"state": "CA"
}
}
// ✅ WORKING: Filter national immunization data
{
"tool": "filter_data",
"arguments": {
"dataset": "immunizations_nis",
"state": "US"
}
}
// ❌ AVOID: This will return 0 results
{
"tool": "filter_data",
"arguments": {
"dataset": "respiratory_lab",
"state": "CA" // respiratory_lab only has national data
}
}状态比较
// ✅ WORKING: Compare obesity rates across states
{
"tool": "compare_states",
"arguments": {
"dataset": "chronic_obesity",
"states": ["CA", "TX", "FL", "NY"],
"metric": "prevalence_rate",
"time_period": "latest"
}
}
// ✅ WORKING: Compare vaccination coverage
{
"tool": "compare_states",
"arguments": {
"dataset": "immunizations_nis",
"states": ["California", "Texas", "New York"], // Full names work too
"metric": "coverage_rate"
}
}时间序列分析
// ✅ WORKING: Analyze national respiratory trends
{
"tool": "time_series_analysis",
"arguments": {
"dataset": "respiratory_ed",
"metric": "ed_visits_per_100k",
"geography": "national", // Use "national" for US-level data
"aggregation": "weekly"
}
}
// ✅ WORKING: Analyze state-level trends
{
"tool": "time_series_analysis",
"arguments": {
"dataset": "respiratory_ed",
"metric": "ed_visits_per_100k",
"geography": "CA",
"start_date": "2024-01-01",
"end_date": "2024-12-01"
}
}搜索健康数据
// ✅ WORKING: Search with national geography
{
"tool": "search_health_data",
"arguments": {
"query": "RSV",
"geography": "national" // Fixed: Use "national" instead of "US"
}
}
// ✅ WORKING: Search specific datasets
{
"tool": "search_health_data",
"arguments": {
"query": "vaccination coverage",
"datasets": ["immunizations_nis", "immunizations_epic"]
}
}使用提示
// ✅ WORKING: Generate immunization gap analysis
{
"prompt": "immunization_gaps",
"arguments": {
"state": "Texas",
"demographic_focus": "insurance"
}
}
// ✅ WORKING: Detect respiratory surges
{
"prompt": "respiratory_surge_detection",
"arguments": {
"region": "California",
"virus_type": "RSV",
"time_period": "last_4_weeks"
}
}常见问题及解决方案
问题:“找不到数据”或0个结果
原因: 地理不匹配或数据集限制
解决:
- 检查数据集功能: 使用
get_available_datasets查看支持的地理位置 - 使用正确的地理值:
- 关于国家数据: "geography": "national" (不是“美国”) - 对于州:使用州代码(“CA”)或全名(“California”)
- 尝试其他数据集: 一些数据集仅支持国家级分析
// ❌ Problem: Wrong geography for national data
{
"tool": "search_health_data",
"arguments": {
"query": "influenza",
"geography": "US" // Should be "national"
}
}
// ✅ Solution: Use correct geography
{
"tool": "search_health_data",
"arguments": {
"query": "influenza",
"geography": "national"
}
}问题:州级查询结果为空
原因: 数据集仅包含国家级数据
解决:
- 检查数据集元数据 首次使用
get_available_datasets - 使用支持状态的数据集:
respiratory_ed,chronic_obesity,chronic_diabetes,immunizations_nis - 切换到国家分析 对于像这样的数据集
respiratory_lab
问题:找不到度量
原因: 度量名称不正确或数据集不匹配
解决:
- 使用数据集适当的指标:
- 免疫接种: coverage_rate, sample_size - 呼吸系统: ed_visits_per_100k, positivity_rate - 慢性: prevalence_rate, patient_count
- 检查样本数据 使用
get_available_datasets随着include_sample: true
工作参数组合
免疫分析
// National vaccination trends
{
"tool": "time_series_analysis",
"arguments": {
"dataset": "immunizations_nis",
"metric": "coverage_rate",
"geography": "national"
}
}
// State vaccination comparison
{
"tool": "compare_states",
"arguments": {
"dataset": "immunizations_nis",
"states": ["CA", "TX", "NY", "FL"],
"metric": "coverage_rate"
}
}呼吸监测
// Emergency department trends
{
"tool": "filter_data",
"arguments": {
"dataset": "respiratory_ed",
"state": "CA",
"condition": "RSV"
}
}
// National lab surveillance
{
"tool": "time_series_analysis",
"arguments": {
"dataset": "respiratory_lab",
"metric": "positivity_rate",
"geography": "national"
}
}慢性病分析
// Obesity prevalence by state
{
"tool": "filter_data",
"arguments": {
"dataset": "chronic_obesity",
"state": "TX",
"age_group": "18-64"
}
}
// Diabetes trends
{
"tool": "time_series_analysis",
"arguments": {
"dataset": "chronic_diabetes",
"metric": "prevalence_rate",
"geography": "CA"
}
}数据来源和质量
免疫数据
- NIS数据家庭调查,覆盖率的黄金标准
- 史诗宇宙:按人口统计分类的EHR数据
- 更新频率:年度(NIS),月度(Epic)
- 地理级别:国家
- 质量:高置信度,大样本量
呼吸系统疾病监测
- ED访问:近乎实时的医疗保健利用率
- 实验室数据:临床试验阳性率
- 废水:环境病毒监测(早期指标)
- 搜索趋势:人口行为信号
- 更新频率:每周
- 质量:临床数据高,环境/行为中等
慢性病数据
- 源:Epic Cosmos EHR网络
- 指标:临床测量(BMI、HbA1c)
- 更新频率:季度
- 地理级别:存在年龄分层的州
- 质量:高真实世界临床数据
api参考
工具
过滤器数据
按各种标准过滤数据集。
参数:
dataset(必填):数据集标识符state(可选):州代码或名称start_date(可选):开始日期(YYYY-MM-DD)end_date(可选):结束日期(YYYY-MM-DD)age_group(可选):年龄组筛选器condition(可选):条件/度量过滤器
比较状态
比较多个州的健康指标。
参数:
dataset(必填):数据集标识符states(必填):州代码/名称数组metric(必填):要比较的度量time_period(可选):比较时间段
时间序列分析
分析随时间变化的趋势。
参数:
dataset(必填):数据集标识符metric(必填):要分析的指标geography(可选):地理焦点start_date(可选):分析开始日期end_date(可选):分析结束日期aggregation(可选):时间聚合(weekly,monthly,quarterly,yearly)
资源
所有资源都返回具有标准化模式的JSON数据:
// Example immunization record
{
"geography": "CA",
"year": 2024,
"vaccine": "MMR",
"age_group": "19-35 months",
"coverage_rate": 96.1,
"sample_size": 1876,
"source": "CDC NIS"
}
// Example respiratory surveillance record
{
"geography": "US",
"date": "2024-12-01",
"week": "2024-48",
"virus": "RSV",
"ed_visits_per_100k": 3.8,
"percent_change": 15.2,
"source": "Epic Cosmos"
}发展
项目结构
pophive-mcp-server/
├── server/
│ ├── index.js # Main MCP server
│ ├── utils/
│ │ └── data-loader.js # Data loading and caching
│ ├── tools/
│ │ └── analysis-tools.js # MCP tool implementations
│ ├── prompts/
│ │ └── prompt-templates.js # MCP prompt templates
│ └── scrapers/
│ ├── immunizations.js # Immunization data scraper
│ ├── respiratory.js # Respiratory data scraper
│ └── chronic-diseases.js # Chronic disease data scraper
├── data/ # Cached data files
├── package.json
├── manifest.json # MCP server manifest
└── README.md添加新数据源
- 创建刮刀 在……里面
server/scrapers/ - 更新数据加载器 包括新的数据集
- 添加资源映射 在主服务器中
- 更新工具逻辑 处理新的数据类型
- 创建提示 用于新的分析类型
测试
# Run all tests
npm test
# Test specific components
npm run test:tools
npm run test:scrapers
npm run test:integration数据刷新
服务器根据以下内容自动刷新数据 UPDATE_FREQUENCY 设置。手动刷新:
npm run refresh-data故障排除
常见问题
服务器无法启动:
- 检查Node.js版本(需要18+)
- 验证已安装的所有依赖项:
npm install - 检查端口冲突
未返回数据:
- 首次运行时可能正在初始化数据
- 检查数据目录权限
- 验证网络连接以进行抓取
MCP客户端连接问题:
- 验证客户端配置中的服务器路径
- 检查服务器日志是否有错误
- 确保MCP客户端支持stdio传输
日志记录
服务器日志写入stderr,包括:
- 数据抓取活动
- 工具执行结果
- 错误消息和堆栈跟踪
启用详细日志记录:
DEBUG=pophive:* npm start贡献
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
代码的风格
- 使用ESLint配置
- 遵循现有模式
- 为公共API添加JSDoc注释
- 包括错误处理
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
- 问题:GitHub问题
- 文档:此README和内联代码注释
- 数据问题:参考原始PopHIVE来源
致谢
- 耶鲁大学公共卫生学院 支持PopHIVE倡议
- 疾病控制与预防中心 用于监控数据系统
- Epic系统 用于Cosmos EHR网络数据
- 模型上下文协议 标准社区
