NOAA工具
这是一个MCP(模型上下文协议)服务器,它提供了与NOAA潮汐和电流API交互的工具。
服务介绍
NOAA 潮汐和水流 MCP 服务器
这是一个使用 FastMCP 框架与 NOAA 潮汐和水流 API 进行交互的 MCP(模型上下文协议)服务器。
特性
- 水位数据检索(实时和历史)
- 潮汐预测(高潮/低潮或基于间隔)
- 流水数据(实时和历史)
- 流水预测
- 站点元数据检索
- 风、空气温度、水温及其他气象数据
- 月相信息(过去、现在和未来)
- 日出/日落和位置数据(过去、现在和未来)
前提条件
- Node.js(v18 或更高版本)
- npm 或 yarn
设置
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装 NOAA 潮汐和水流:
npx -y @smithery/cli install @RyanCardin15/tidesandcurrents --client claude
手动安装
- 克隆此仓库
- 安装依赖项
npm install
- 根据
.env.example文件创建一个.env文件:
# Server Configuration
PORT=3000
# Transport type (stdio or sse)
TRANSPORT_TYPE=stdio
# NOAA API application name for identification (recommended)
APPLICATION_NAME=YourAppName
- 构建 TypeScript 代码
npm run build
- 启动服务器
npm start
使用
此 MCP 服务器可以与任何 MCP 主机(如 Claude Desktop)一起使用,允许您通过 MCP 协议使用 NOAA 潮汐和水流 API。
您也可以直接使用 fastmcp 命令行工具进行测试:
npx fastmcp dev dist/index.js
或者,您可以使用 MCP 检查器:
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(string) - 站点IDdate(string, 可选) - 要检索数据的日期("today", "latest", "recent" 或特定日期)begin_date(string, 可选) - 开始日期 (YYYYMMDD 或 MM/DD/YYYY)end_date(string, 可选) - 结束日期 (YYYYMMDD 或 MM/DD/YYYY)bin(number, 可选) - Bin 编号units(string, 可选) - 使用的单位 ("english" 或 "metric")time_zone(string, 可选) - 时区 (gmt, lst, lst_ldt)format(string, 可选) - 输出格式 (json, xml, csv)
- 参数:
潮流预测
get_current_predictions- 获取潮流预测- 参数:
station(string) - 站点IDdate(string, 可选) - 要检索数据的日期("today", "latest", "recent" 或特定日期)begin_date(string, 可选) - 开始日期 (YYYYMMDD 或 MM/DD/YYYY)end_date(string, 可选) - 结束日期 (YYYYMMDD 或 MM/DD/YYYY)bin(number, 可选) - Bin 编号interval(string, 可选) - 间隔 (MAX_SLACK 或分钟数)vel_type(string, 可选) - 速度类型 (speed_dir 或默认值)units(string, 可选) - 使用的单位 ("english" 或 "metric")time_zone(string, 可选) - 时区 (gmt, lst, lst_ldt)format(string, 可选) - 输出格式 (json, xml, csv)
- 参数:
气象数据
get_meteorological_data- 获取气象数据- 参数:
station(string) - 站点IDproduct(string) - 产品 (air_temperature, wind, 等)date(string, 可选) - 要检索数据的日期("today", "latest", "recent" 或特定日期)begin_date(string, 可选) - 开始日期 (YYYYMMDD 或 MM/DD/YYYY)end_date(string, 可选) - 结束日期 (YYYYMMDD 或 MM/DD/YYYY)units(string, 可选) - 使用的单位 ("english" 或 "metric")time_zone(string, 可选) - 时区 (gmt, lst, lst_ldt)format(string, 可选) - 输出格式 (json, xml, csv)
- 参数:
站点信息
-
get_stations- 获取站点列表- 参数:
type(string, 可选) - 站点类型 (waterlevels, currents, 等)units(string, 可选) - 使用的单位 ("english" 或 "metric")format(string, 可选) - 输出格式 (json, xml)
- 参数:
-
get_station_details- 获取站点详细信息- 参数:
station(string) - 站点IDunits(string, 可选) - 使用的单位 ("english" 或 "metric")format(string, 可选) - 输出格式 (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(字符串) - 要查找的月相(新月、上弦月、满月、下弦月)date(字符串, 可选) - 起始日期(YYYY-MM-DD 格式)。默认为当前日期。count(数字, 可选) - 返回的发生次数。默认为 1。format(字符串, 可选) - 输出格式(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(字符串) - 要查找的太阳事件(如日出、日落、黎明、黄昏、正午等)date(字符串, 可选) - 起始日期(YYYY-MM-DD 格式)。默认为当前日期。latitude(数字) - 用于基于位置计算的纬度longitude(数字) - 用于基于位置计算的经度count(数字, 可选) - 返回的发生次数。默认为 1。format(字符串, 可选) - 输出格式(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