
Noaa
这是一个MCP(Model Context Protocol)服务器,提供与NOAA Tides and Currents API交互的工具。
概述
NOAA 潮汐与海流 MCP 服务器
这是一个基于 FastMCP 框架的 MCP(模型上下文协议)服务器,用于与 NOAA 潮汐与海流 API 交互。
功能
- 水位数据获取(实时与历史)
- 潮汐预测(高低潮或基于间隔)
- 海流数据(实时与历史)
- 海流预测
- 站点元数据获取
- 风、气温、水温及其他气象数据
- 月相信息(过去、现在与未来)
- 日出/日落及太阳位置数据(过去、现在与未来)
前置要求
- Node.js(v18 或更高版本)
- npm 或 yarn
设置
通过 Smithery 安装
通过 Smithery 为 Claude Desktop 自动安装 NOAA 潮汐与海流:
bash
npx -y @smithery/cli install @RyanCardin15/tidesandcurrents --client claude
手动安装
- 克隆本仓库
- 安装依赖
bash
npm install
- 基于
.env.example
创建.env
文件:
# 服务器配置
PORT=3000
# 传输类型(stdio 或 sse)
TRANSPORT_TYPE=stdio
# NOAA API 应用名称(建议填写)
APPLICATION_NAME=YourAppName
- 编译 TypeScript 代码
bash
npm run build
- 启动服务器
bash
npm start
使用
本 MCP 服务器可与任何 MCP 主机(如 Claude Desktop)配合使用,通过 MCP 协议访问 NOAA 潮汐与海流 API。
也可直接使用 fastmcp
命令行工具测试:
bash
npx fastmcp dev dist/index.js
或使用 MCP 检查器:
bash
npx fastmcp inspect dist/index.js
可用工具
水位数据
get_water_levels
- 获取站点水位数据- 参数:
station
(字符串) - 站点 IDdate
(字符串,可选) - 数据日期("today", "latest", "recent" 或具体日期)begin_date
(字符串,可选) - 开始日期(YYYYMMDD 或 MM/DD/YYYY)end_date
(字符串,可选) - 结束日期(YYYYMMDD 或 MM/DD/YYYY)range
(数字,可选) - 数据获取小时数datum
(字符串,可选) - 基准面(MLLW, MSL 等)units
(字符串,可选) - 单位("english" 或 "metric")time_zone
(字符串,可选) - 时区(gmt, lst, lst_ldt)format
(字符串,可选) - 输出格式(json, xml, csv)
- 参数:
潮汐预测
get_tide_predictions
- 获取潮汐预测数据- 参数:
station
(字符串) - 站点 IDbegin_date
(字符串) - 开始日期(YYYYMMDD 或 MM/DD/YYYY)end_date
(字符串) - 结束日期(YYYYMMDD 或 MM/DD/YYYY)datum
(字符串,可选) - 基准面(MLLW, MSL 等)units
(字符串,可选) - 单位("english" 或 "metric")time_zone
(字符串,可选) - 时区(gmt, lst, lst_ldt)interval
(字符串,可选) - 间隔(hilo, hl, h 或分钟数)format
(字符串,可选) - 输出格式(json, xml, csv)
- 参数:
海流数据
get_currents
- 获取站点海流数据- 参数:
station
(字符串) - 站点 IDdate
(字符串,可选) - 数据日期("today", "latest", "recent" 或具体日期)begin_date
(字符串,可选) - 开始日期(YYYYMMDD 或 MM/DD/YYYY)end_date
(字符串,可选) - 结束日期(YYYYMMDD 或 MM/DD/YYYY)bin
(数字,可选) - 分箱编号units
(字符串,可选) - 单位("english" 或 "metric")time_zone
(字符串,可选) - 时区(gmt, lst, lst_ldt)format
(字符串,可选) - 输出格式(json, xml, csv)
- 参数:
海流预测
get_current_predictions
- 获取海流预测- 参数:
station
(字符串) - 站点 IDdate
(字符串,可选) - 数据日期("today", "latest", "recent" 或具体日期)begin_date
(字符串,可选) - 开始日期(YYYYMMDD 或 MM/DD/YYYY)end_date
(字符串,可选) - 结束日期(YYYYMMDD 或 MM/DD/YYYY)bin
(数字,可选) - 分箱编号interval
(字符串,可选) - 间隔(MAX_SLACK 或分钟数)vel_type
(字符串,可选) - 流速类型(speed_dir 或默认)units
(字符串,可选) - 单位("english" 或 "metric")time_zone
(字符串,可选) - 时区(gmt, lst, lst_ldt)format
(字符串,可选) - 输出格式(json, xml, csv)
- 参数:
气象数据
get_meteorological_data
- 获取气象数据- 参数:
station
(字符串) - 站点 IDproduct
(字符串) - 产品类型(air_temperature, wind 等)date
(字符串,可选) - 数据日期("today", "latest", "recent" 或具体日期)begin_date
(字符串,可选) - 开始日期(YYYYMMDD 或 MM/DD/YYYY)end_date
(字符串,可选) - 结束日期(YYYYMMDD 或 MM/DD/YYYY)units
(字符串,可选) - 单位("english" 或 "metric")time_zone
(字符串,可选) - 时区(gmt, lst, lst_ldt)format
(字符串,可选) - 输出格式(json, xml, csv)
- 参数:
站点信息
-
get_stations
- 获取站点列表- 参数:
type
(字符串,可选) - 站点类型(waterlevels, currents 等)units
(字符串,可选) - 单位("english" 或 "metric")format
(字符串,可选) - 输出格式(json, xml)
- 参数:
-
get_station_details
- 获取站点详细信息- 参数:
station
(字符串) - 站点 IDunits
(字符串,可选) - 单位("english" 或 "metric")format
(字符串,可选) - 输出格式(json, xml)
- 参数:
月相信息
-
get_moon_phase
- 获取特定日期的月相信息- 参数:
date
(字符串,可选) - 查询日期(YYYY-MM-DD 格式),默认为当前日期latitude
(数字,可选) - 纬度(用于位置特定计算)longitude
(数字,可选) - 经度(用于位置特定计算)format
(字符串,可选) - 输出格式(json 或 text)
- 参数:
-
get_moon_phases_range
- 获取日期范围内的月相信息- 参数:
start_date
(字符串) - 开始日期(YYYY-MM-DD 格式)end_date
(字符串) - 结束日期(YYYY-MM-DD 格式)latitude
(数字,可选) - 纬度(用于位置特定计算)longitude
(数字,可选) - 经度(用于位置特定计算)format
(字符串,可选) - 输出格式(json 或 text)
- 参数:
-
get_next_moon_phase
- 获取下一次特定月相- 参数:
phase
(字符串) - 目标月相(New Moon, First Quarter, Full Moon, Last Quarter)date
(字符串,可选) - 起始日期(YYYY-MM-DD 格式),默认为当前日期count
(数字,可选) - 返回次数,默认为 1format
(字符串,可选) - 输出格式(json 或 text)
- 参数:
日出日落信息
-
get_sun_times
- 获取特定日期和位置的日出/日落时间- 参数:
date
(字符串,可选) - 查询日期(YYYY-MM-DD 格式),默认为当前日期latitude
(数字) - 纬度(用于位置特定计算)longitude
(数字) - 经度(用于位置特定计算)format
(字符串,可选) - 输出格式(json 或 text)timezone
(字符串,可选) - 结果时区,默认为 UTC
- 参数:
-
get_sun_times_range
- 获取日期范围内的日出/日落时间- 参数:
start_date
(字符串) - 开始日期(YYYY-MM-DD 格式)end_date
(字符串) - 结束日期(YYYY-MM-DD 格式)latitude
(数字) - 纬度(用于位置特定计算)longitude
(数字) - 经度(用于位置特定计算)format
(字符串,可选) - 输出格式(json 或 text)timezone
(字符串,可选) - 结果时区,默认为 UTC
- 参数:
-
get_sun_position
- 获取特定日期时间和位置的太阳位置- 参数:
date
(字符串,可选) - 查询日期(YYYY-MM-DD 格式),默认为当前日期time
(字符串,可选) - 查询时间(HH:MM:SS 格式),默认为当前时间latitude
(数字) - 纬度(用于位置特定计算)longitude
(数字) - 经度(用于位置特定计算)format
(字符串,可选) - 输出格式(json 或 text)
- 参数:
-
get_next_sun_event
- 获取下一次特定太阳事件- 参数:
event
(字符串) - 目标事件(sunrise, sunset, dawn, dusk, solarNoon 等)date
(字符串,可选) - 起始日期(YYYY-MM-DD 格式),默认为当前日期latitude
(数字) - 纬度(用于位置特定计算)longitude
(数字) - 经度(用于位置特定计算)count
(数字,可选) - 返回次数,默认为 1format
(字符串,可选) - 输出格式(json 或 text)timezone
(字符串,可选) - 结果时区,默认为 UTC
- 参数:
API 文档
NOAA 潮汐与海流 API 文档:
- CO-OPS 数据 API: https://api.tidesandcurrents.noaa.gov/api/prod/
- CO-OPS 元数据 API: https://api.tidesandcurrents.noaa.gov/mdapi/prod/
- CO-OPS 衍生品 API: https://api.tidesandcurrents.noaa.gov/dpapi/prod/
关于 FastMCP
FastMCP 是一个用于构建支持客户端会话的 MCP 服务器的 TypeScript 框架,提供:
- 简单的工具、资源和提示定义
- 会话管理
- 图像内容支持
- 日志记录
- 错误处理
- SSE 支持
- 进度通知
- 类型化服务器事件
- 及其他功能
了解更多:https://github.com/punkpeye/fastmcp
许可证
MIT