小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
0
最近更新:1个月前

这是一个MCP(Model Context Protocol)服务器,提供与NOAA Tides and Currents API交互的工具。

NOAA 潮汐与海流 MCP 服务器

smithery 徽章

这是一个基于 FastMCP 框架的 MCP(模型上下文协议)服务器,用于与 NOAA 潮汐与海流 API 交互。

功能

  • 水位数据获取(实时与历史)
  • 潮汐预测(高低潮或基于间隔)
  • 海流数据(实时与历史)
  • 海流预测
  • 站点元数据获取
  • 风、气温、水温及其他气象数据
  • 月相信息(过去、现在与未来)
  • 日出/日落及太阳位置数据(过去、现在与未来)

前置要求

  • Node.js(v18 或更高版本)
  • npm 或 yarn

设置

通过 Smithery 安装

通过 Smithery 为 Claude Desktop 自动安装 NOAA 潮汐与海流:

bash 复制代码
npx -y @smithery/cli install @RyanCardin15/tidesandcurrents --client claude

手动安装

  1. 克隆本仓库
  2. 安装依赖
bash 复制代码
npm install
  1. 基于 .env.example 创建 .env 文件:
复制代码
# 服务器配置
PORT=3000

# 传输类型(stdio 或 sse)
TRANSPORT_TYPE=stdio

# NOAA API 应用名称(建议填写)
APPLICATION_NAME=YourAppName
  1. 编译 TypeScript 代码
bash 复制代码
npm run build
  1. 启动服务器
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 (字符串) - 站点 ID
      • date (字符串,可选) - 数据日期("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 (字符串) - 站点 ID
      • begin_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 (字符串) - 站点 ID
      • date (字符串,可选) - 数据日期("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 (字符串) - 站点 ID
      • date (字符串,可选) - 数据日期("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 (字符串) - 站点 ID
      • product (字符串) - 产品类型(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 (字符串) - 站点 ID
      • units (字符串,可选) - 单位("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 (数字,可选) - 返回次数,默认为 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 (字符串) - 目标事件(sunrise, sunset, dawn, dusk, solarNoon 等)
      • date (字符串,可选) - 起始日期(YYYY-MM-DD 格式),默认为当前日期
      • latitude (数字) - 纬度(用于位置特定计算)
      • longitude (数字) - 经度(用于位置特定计算)
      • count (数字,可选) - 返回次数,默认为 1
      • format (字符串,可选) - 输出格式(json 或 text)
      • timezone (字符串,可选) - 结果时区,默认为 UTC

API 文档

NOAA 潮汐与海流 API 文档:

关于 FastMCP

FastMCP 是一个用于构建支持客户端会话的 MCP 服务器的 TypeScript 框架,提供:

  • 简单的工具、资源和提示定义
  • 会话管理
  • 图像内容支持
  • 日志记录
  • 错误处理
  • SSE 支持
  • 进度通知
  • 类型化服务器事件
  • 及其他功能

了解更多:https://github.com/punkpeye/fastmcp

许可证

MIT