RAWS MCP 服务器
 ](package.json) 
一个模型上下文协议(MCP)服务器,为火灾管理及天气监测应用提供远程自动气象站(RAWS)数据的访问。
注: 这个项目目前正处于规划和文件编制阶段。实施(src/ 目录)尚未创建。请参阅 实施计划 用于制定发展路线图。概述
这台MCP服务器与RAWS数据源集成,提供实时和历史天气数据,这些数据对于预测野火行为、制定火灾管理决策以及应急响应至关重要。服务器对数据进行格式化处理,以符合用于(此处根据上下文补充,例如“火灾监测和管理系统的”)野火信息架构 火灾行为 应用程序。
什么是RAWS?
远程自动气象站(RAWS)是部署在易发生野火地区的自动化气象站。它们收集以下方面的数据:
- 温度
- 湿度
- 风速和风向
- 降水
- 燃料含水量
- 太阳辐射
RAWS数据由以下机构维护:
- 土地管理局(BLM)
- 美国林业局(USFS)
- 美国国家气象局(NWS)
- 省级林业部门
特点/功能
- 从RAWS站点获取当前天气状况
- 获取历史天气数据以进行趋势分析
- 按位置(纬度/经度、城市、县)搜索站点
- 计算火灾天气指数(如海恩斯指数、NFDRS各组成部分)
- 将数据格式化为符合wildfire_prompt_template.json模式的格式
- 支持多种数据源(概貌API、MesoWest、WRCC)
它是如何工作的
RAWS MCP服务器充当Claude(或其他MCP客户端)与多个RAWS数据源之间的桥梁:
- 位置查询你问克劳德某个特定地点的天气状况
- 车站搜索服务器会找到离您位置最近的RAWS站点
- 数据检索实时天气观测数据是从综合数据API或其他来源获取的
- 模式转换原始RAWS数据被转换成标准化的野火信息格式
- 火灾天气分析可选的火灾天气指数(如海恩斯指数、福斯伯格指数等)已计算得出
- 回应格式化后的数据被返回给Claude进行分析和展示
安装
先决条件: Node.js 18.0.0 或更高版本
# Clone the repository
git clone https://github.com/tyson-swetnam/raws-mcp.git
cd raws-mcp
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env
# Edit .env and add your API tokens配置
必填项:API密钥
重要提示: 您必须为服务器配置至少一个API令牌才能使其正常工作。没有有效的凭据,服务器将无法启动。
创建一个 .env 请提供您的API凭据文件:
# Required: At least one data source API token
SYNOPTIC_API_TOKEN=your_token_here
MESOWEST_API_TOKEN=your_token_here
# Optional: Server configuration
LOG_LEVEL=info
CACHE_TTL_SECONDS=300
# Optional: Feature flags
ENABLE_NWS_INTEGRATION=true
ENABLE_FIRE_INDICES=true分步指南:获取API令牌
选项1:概要数据API(推荐)
- 注册: 访问 https://synopticdata.com/
- 创建账户: 点击“注册”并完成注册流程
- 访问API设置:
- 登录您的账户 - 导航至“我的账户”→“API设置”或“API密钥”
- 生成令牌:
- 点击“创建新代币”或类似按钮 - 复制您的API令牌(以一串长的字母数字开头)
- 添加到 .env 文件中:
SYNOPTIC_API_TOKEN=your_actual_token_here免费层级限制:
- 每天5000个请求
- 访问2000多个RAWS(自动气象站)站点
- 实时数据和历史数据
选项2:MesoWest API(备用/故障转移)
- 注册: 访问 https://mesowest.utah.edu/
- 创建账户: 填写注册表
- 请求API访问:
- 导航至您的账户设置 - 请求API访问权限(可能需要审批)
- 获取代币: 一旦获得批准,请复制您的API令牌
- 在.env文件中添加:
MESOWEST_API_TOKEN=your_actual_token_here故障转移配置
对于生产使用,请进行配置 两者都 API令牌:
SYNOPTIC_API_TOKEN=your_synoptic_token
MESOWEST_API_TOKEN=your_mesowest_token如果主数据源发生故障或达到速率限制,服务器将自动从Synoptic切换到MesoWest。
MCP服务器配置
在您的Claude桌面配置中添加:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"raws": {
"command": "node",
"args": ["/absolute/path/to/raws-mcp/src/index.js"]
}
}
}重要提示: 使用绝对路径到 src/index.js,而不是相对路径。
使用方法
启动服务器
# Start the MCP server
npm start
# Or start with auto-reload for development
npm run dev示例查询
一旦在Claude Desktop中进行配置,您就可以询问:
- “RAWS C5725站点当前的天气状况如何?”
- “查找科罗拉多州博尔德附近的RAWS站点”
- “给我看看Monument Creek RAWS的火灾天气指数”
- “从CLKC1站点获取过去24小时的天气数据”
可用工具
1. 获取当前原材料数据
从RAWS站点获取当前天气状况。
参数:
station_id(字符串,必填):RAWS 站点标识符format(字符串,可选):输出格式 - "json" | "wildfire_schema"
示例请求:
{
"station_id": "C5725",
"format": "wildfire_schema"
}示例回复:
{
"location": "Monument Creek, Colorado",
"as_of": "2025-08-29T14:00:00Z",
"weather_risks": {
"temperature": { "value": 88, "units": "F" },
"humidity": { "percent": 18 },
"wind": { "speed": 22, "gusts": 40, "direction": "NW" },
"probability_of_rain": {
"percent": 15,
"time_window": "next 24h",
"confidence": "medium"
}
},
"data_sources": [
{
"name": "Monument Creek RAWS (C5725)",
"type": "weather",
"url": "https://raws.dri.edu/C5725"
}
]
}2. 搜索原始数据站点
查找附近地点的RAWS(自动气象观测站)站点。
参数:
latitude(数字,必填):纬度(-90 至 90)longitude(数字,必填):经度(-180 至 180)radius_miles(数字,可选):搜索半径,以英里为单位(默认:50)limit(数字,可选):最大结果数(默认:10)
示例请求:
{
"latitude": 40.0150,
"longitude": -105.2705,
"radius_miles": 50,
"limit": 5
}3. 获取历史原始数据
从某气象站获取历史天气数据。
参数:
station_id(字符串,必填项):RAWS站点标识符start_time(字符串,必填项):ISO 8601 格式的时间戳(例如,“2025-08-29T00:00:00Z”)end_time(字符串,必填):ISO 8601 时间戳variables(数组,可选):要检索的特定变量(默认:全部)
示例请求:
{
"station_id": "C5725",
"start_time": "2025-08-29T00:00:00Z",
"end_time": "2025-08-29T23:59:59Z",
"variables": ["temperature", "humidity", "wind"]
}4. 计算火灾指数
根据RAWS数据计算火灾天气指数。
参数:
station_id(字符串,必填):RAWS(远程自动天气观测站)站标识符indices(数组,可选):要计算的特定索引(默认:全部)
- "haines" - 海恩斯指数(大气稳定性和干燥度) - "fosberg" - 福斯伯格火灾天气指数(温度、湿度、风速) - "chandler" - 陈德燃烧指数(包括燃料湿度)
示例请求:
{
"station_id": "C5725",
"indices": ["haines", "fosberg"]
}注: 火灾天气指数为野火风险评估提供了关键信息。参见 火灾天气公式 计算详情如下。
数据模式
服务器输出符合火灾行为的数据 wildfire_prompt_template.json 架构。这确保了与野火管理应用程序的无缝集成。
主要特点:
- 温度、湿度和风力观测
- 预计降水概率
- 红旗预警检测
- 极端天气变化预警
- 火灾天气指数
- 数据来源归属
看见 数据模式文档 以获取完整的映射详情和转换逻辑。
数据来源
这个MCP服务器连接到:
- 概要数据API - 实时RAWS数据的主要来源
- 文档链接:https://synopticdata.com/mesonet-api - 覆盖范围:2000+个RAWS(自动气象观测站)站点
- MesoWest(注:这是一个专有名词,通常指一个区域性的气象观测网络或系统,直接翻译可能无法完全传达其专业含义,但在此提供直译以供参考) - 天气站网络数据
- 文档链接:https://mesowest.utah.edu/ - 历史数据和实时数据
- 西部区域气候中心(WRCC) - 存档数据
- 文档链接:https://raws.dri.edu/ - 长期历史记录
常见的RAWS站点
以下是一些用于测试和参考的RAWS(远程自动天气站)示例:
| 站点ID | 名称 | 位置 | 海拔 | 备注 |
|---|---|---|---|---|
| C5725 | 蒙特克里克 | 科罗拉多州 | 7,200英尺 | 数据活跃,可靠 |
| CLKC1 | 克拉克山丘 | 加利福尼亚州 | 5,800英尺 | 易发生火灾区域 |
| CBRW1 | 卡彭特路 | 华盛顿 | 4,200英尺 | 北太平洋地区 |
| AZTH | 手指山 | 亚利桑那州 | 5,500英尺 | 沙漠区域自动气象站(RAWS) |
在测试查询或探索RAWS数据时,请使用这些站点ID。
故障排除
身份验证错误(HTTP 401)
症状: 端点返回“401 未授权”或身份验证失败
原因: 缺失或无效的API令牌 .env 文件
解决方案:
- 验证
.env文件已存在:
ls -la .env- 检查是否至少配置了一个API令牌:
grep "API_TOKEN" .env- 确保令牌不是占位符值:
# ❌ Wrong (placeholder):
SYNOPTIC_API_TOKEN=your_synoptic_token_here
# ✓ Correct (actual token):
SYNOPTIC_API_TOKEN=abc123def456...- 获取有效的API令牌:
- 概要: 请访问https://synopticdata.com/ → 账户 → API设置进行注册 - MesoWest:(这是一个专有名词,通常指一个地区性的天气观测网络或系统,直译可能无法完全传达其专业含义,但可大致翻译为)中西部天气观测网/系统 请访问https://mesowest.utah.edu/进行注册 → API访问
- 更新后重启MCP服务器
.env
服务器无法启动
错误:“没有可用的API客户端”
这意味着服务器找不到有效的API令牌。请按照上面的认证故障排除步骤操作。
检查 Node.js 版本:
node --version # Should be 18.0.0 or higher检查环境变量:
cat .env # Verify API tokens are set检查端口冲突: MCP服务器使用stdio传输方式,因此不应发生端口冲突。如果问题仍然存在,请检查日志。
未返回数据
无效的站点ID:
- 验证站点ID是否正确(例如,“C5725”而非“RAWS:C5725”)
- 使用
search_raws_stations查找您所在位置附近的有效电台ID
API速率限制:
- 概览免费套餐:每天5,000次请求
- 检查你是否已超出限额
- 等待限制重置或升级到付费层级
站点非活跃:
- 一些RAWS站点可能会暂时离线
- 试试附近的其他车站
- 检查站点状态于 raws.dri.edu 翻译为中文可以是“美国干旱研究所原始数据网站”(注:这里的“美国干旱研究所”是根据“DRI”可能的全称“Drought Research Institute”的一种翻译,具体名称可能需根据实际机构全称调整)。不过,通常网址翻译时,我们不会逐字翻译,而是保留网址的形式,因为网址本身是国际通用的。所以,更常见的表达方式可能是直接说明这是一个网址,或者根据上下文简要说明其含义,如“这是美国干旱研究所的原始数据网站(网址:raws.dri.edu)”
缓存问题
服务器缓存观测数据5-15分钟以减少API调用。如果您需要最新数据:
- 等待缓存TTL过期(默认:5分钟)
- 或者修改
CACHE_TTL_SECONDS在.env - 重启服务器以清除缓存
Claude桌面集成问题
服务器未出现在Claude中:
- 验证
claude_desktop_config.json路径正确 - 使用绝对路径来
src/index.js(不相关) - 配置更改后重启 Claude 桌面版
- 检查Claude Desktop的日志以查找错误
工具无法正常工作:
- 验证MCP服务器是否正在运行:
npm start - 检查API令牌是否已配置在
.env - 使用一个已知有效的站ID进行测试,例如“C5725”
发展
# Install dependencies
npm install
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Run linter
npm run lint
# Fix linting issues
npm run lint:fix
# Run in development mode with auto-reload
npm run dev见 CONTRIBUTING.md(贡献指南文件) 以获取详细的发展指南。
项目结构
raws-mcp/
├── src/
│ ├── index.js # MCP server entry point
│ ├── tools/ # MCP tool implementations
│ ├── api/ # API client modules
│ ├── schemas/ # Data validation schemas
│ └── utils/ # Helper functions
├── docs/
│ ├── architecture.md # System architecture
│ ├── implementation_plan.md
│ ├── data_schema.md # Schema mapping details
│ └── api_endpoints.md # External API documentation
├── tests/
│ ├── unit/
│ └── integration/
├── .env.example
├── package.json
└── README.md与火灾行为的整合
这台MCP服务器设计为与(某系统/软件/设备等)协同工作 火灾行为 应用程序:
- 火灾行为后端通过MCP协议调用RAWS MCP工具
- RAWS数据已格式化以匹配
wildfire_prompt_template.json - React前端同时渲染天气数据和野火状态
- 位置查询会自动找到最近的RAWS站点
- 实时天气状况为火灾事件信息提供补充
看 火灾行为综合指南 以获取详细的集成步骤。
做出贡献
我们欢迎所有贡献!无论是修复漏洞、新增功能、改进文档,还是提供示例,您的帮助都将受到欢迎。
快速入门:
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 做出你的更改
- 为新功能添加测试
- 运行测试和代码检查器(
npm test && npm run lint) - 提交您的更改(
git commit -m 'Add amazing feature') - 推送到你的分支(
git push origin feature/amazing-feature) - 打开一个拉取请求
- 代码风格和规范
- 测试要求
- 添加新的数据源
- 扩展MCP工具
- 文档标准
许可证
Apache 2.0 - 详情请参见LICENSE文件
文档
- 建筑 - 系统设计与组件
- 数据模式 - 模式映射和转换
- API 端点 外部API文档
- 实施计划 - 发展路线图
- 火灾行为综合分析 - 集成指南
- CLAUDE.md(注:这个文件名或标识在中文中通常保持原样,不直接翻译,但如果要解释其含义,可以是“克劳德的Markdown文件”或“关于克劳德的文档”,具体取决于上下文) - 该项目的人工智能助手指导
相关项目
- 火灾行为 - 野火信息接口
- 模型上下文协议 - MCP规范
- 综合数据 - RAWS数据提供商
- MesoWest(注:这是一个专有名词,通常指一个区域性的气象观测网络或系统,直接翻译可能无法准确传达其含义,但在此处为保持原文形式,可译为“美索西”或根据具体语境保留原名) - 天气站网络
- WRCC RAWS 翻译为中文是“美国国家海洋和大气管理局区域自动天气站(或区域自动气象站)”。其中,WRCC代表“Weather Research and Climate Center”(天气研究与气候中心),而RAWS代表“Regional Automatic Weather Station”(区域自动气象站) - 历史RAWS档案
致谢
- 数据来源美国农业部林业局、土地管理局、国家气象局
- 火灾天气公式国家野火协调小组(NWCG)
- 模式/架构基于火灾行为应用的
wildfire_prompt_template.json
支持
对于问题或疑问:
- 在(某个平台/项目)上提交一个问题
- 检查一下 docs/(文档/文件夹) 详细文档目录
- 评论 故障排除 上述部分
状态
这个项目目前正处于 规划和文档编制阶段核心实现正在开发中。请参阅 实施计划 用于时间线和里程碑。
