🚀 🌊 NOAA潮汐与海流MCP服务器
本项目借助MCP协议,提供对美国国家海洋和大气管理局(NOAA)海洋与大气数据的快速访问。涵盖潮汐、海流、气象、天文和气候等多方面数据,为各类需求提供一站式解决方案。
📦 快速开始 • 🛠️ 可用工具 • 📖 使用示例 • 🏗️ 高级用法
✨ 主要特性
- 🌊 25+专业工具:涵盖从基础潮汐数据到高级气候预测等多种功能。
- ⚡ 极速响应:基于FastMCP构建,性能卓越。
- 🎯 零配置:可直接与Claude Desktop配合使用。
- 🌍 全面数据:包含水位、海流、气象、月相、太阳数据等。
- 📊 适用于气候研究:提供海平面趋势、洪水预测、极端事件等数据。
- 🚀 支持NPX:通过单条命令即可安装和运行。
🚀 快速开始
⚡ NPX安装(推荐)
npx @ryancardin/noaa-tides-currents-mcp-server
npx noaa-mcp
🔌 传输模式
标准输入输出模式(默认 - MCP协议)
npx @ryancardin/noaa-tides-currents-mcp-server
npx noaa-mcp
HTTP流式模式(用于Web集成)
npx @ryancardin/noaa-tides-currents-mcp-server --http
npx @ryancardin/noaa-tides-currents-mcp-server --http --port 8080
npx noaa-mcp --http --port 8080
curl http://localhost:3000/sse
🎯 与Claude Desktop集成
通过Smithery直接安装到Claude Desktop:
npx -y @smithery/cli install @RyanCardin15/tidesandcurrents --client claude
🔧 手动开发设置
git clone https://github.com/RyanCardin15/NOAA-Tides-And-Currents-MCP.git
cd NOAA-Tides-And-Currents-MCP
npm install && npm run build
npm start
npx fastmcp dev dist/index.js
🛠️ 可用工具
🌊 水数据工具(25个工具)
水位与潮汐
get_water_levels
:实时和历史水位数据。
get_tide_predictions
:高低潮预测和连续数据。
get_currents
:实时和历史海流测量数据。
get_current_predictions
:海流速度和方向预测。
get_meteorological_data
:风、气温、水温、气压等气象数据。
站点信息
get_stations
:搜索和列出监测站点。
get_station_details
:详细的站点元数据和功能信息。
🔬 气候与研究工具(9个工具)
海平面分析
get_sea_level_trends
:长期海平面上升趋势和速率。
get_extreme_water_levels
:极端事件的统计分析。
高潮洪水分析
get_high_tide_flooding_daily
:每日洪水事件计数。
get_high_tide_flooding_monthly
:每月洪水模式。
get_high_tide_flooding_seasonal
:季节性洪水分析。
get_high_tide_flooding_annual
:年度洪水趋势。
get_high_tide_flooding_projections
:未来洪水风险情景。
get_high_tide_flooding_likelihoods
:每日洪水概率。
历史极端情况
get_top_ten_water_levels
:有记录以来的最高/最低水位。
🌙 天文工具(7个工具)
月相计算
get_moon_phase
:当前月相和光照情况。
get_moon_phases_range
:指定日期范围内的月相。
get_next_moon_phase
:查找下一个新月/满月/季度月。
太阳计算
get_sun_times
:日出、日落、黎明、黄昏时间。
get_sun_times_range
:指定日期范围内的太阳时间。
get_sun_position
:实时太阳方位角和仰角。
get_next_sun_event
:下一个日出、日落或太阳正午时间。
⚙️ 配置工具(1个工具)
API参数
get_parameter_definitions
:所有API参数的有效取值。
💻 使用示例
🌊 获取当前潮汐状况
get_water_levels station="8443970" date="latest"
get_tide_predictions station="8723214" begin_date="today" end_date="today" interval="hilo"
🌀 飓风准备
get_extreme_water_levels station="8518750" units="english"
get_high_tide_flooding_likelihoods station="8518750" date="2024-12-16" threshold="minor"
🔬 气候研究
get_sea_level_trends station="8518750" affiliation="US"
get_high_tide_flooding_projections station="8518750" scenario="intermediate" decade="2050s"
🌙 天文与导航
get_moon_phase date="2024-12-15" latitude="42.3601" longitude="-71.0589"
get_sun_times date="2024-12-15" latitude="25.7617" longitude="-80.1918" timezone="America/New_York"
🎣 钓鱼与休闲
get_current_predictions station="ACT0446" date="today" interval="MAX_SLACK"
get_meteorological_data station="8443970" product="wind" date="today"
🏗️ 高级用法
🔧 开发与测试
npm run dev
npm run dev:http
npm start
npm run start:http
npm run start:http:3001
npm run start:http:8080
npx fastmcp inspect dist/index.js
🌐 HTTP流集成
当以HTTP模式运行时,服务器在 /sse
提供服务器发送事件(SSE):
npx @ryancardin/noaa-tides-currents-mcp-server --http --port 3000
curl -N http://localhost:3000/sse
fetch('http://localhost:3000/sse')
.then(response => response.body.getReader())
.then(reader => {
// 处理流式MCP响应
});
HTTP模式的使用场景:
- 🌐 Web应用程序:与React、Vue、Angular应用集成。
- 📱 移动应用程序:从移动应用进行类似REST的访问。
- 🔗 API网关:通过负载均衡器或API网关进行代理。
- 🧪 测试:通过简单的curl命令进行测试和调试。
📊 数据格式与导出
所有工具支持多种输出格式:
- JSON(默认):非常适合编程使用。
- XML:用于与旧系统集成。
- CSV:可直接导入电子表格。
🌍 全球站点覆盖
- 13,000+个站点:遍布全球。
- 实时数据:来自NOAA的CO - OPS网络。
- 历史记录:可追溯到数十年前。
- 全球潮汐预测和海流预报。
🚦 API端点
该服务器与三个NOAA API集成:
API |
用途 |
基础URL |
数据API |
实时观测和预测 |
api.tidesandcurrents.noaa.gov/api/prod/ |
元数据API |
站点信息和功能 |
api.tidesandcurrents.noaa.gov/mdapi/prod/ |
衍生产品API |
气候分析和研究数据 |
api.tidesandcurrents.noaa.gov/dpapi/prod/ |
🔧 技术细节
架构
- 🚀 FastMCP框架:高性能MCP服务器。
- 📝 TypeScript:提供完整的类型安全和智能感知。
- 🔧 Zod验证:运行时参数验证。
- ⚡ Axios HTTP客户端:可靠的API通信。
- 🌙 SunCalc集成:精确的天文计算。
传输选项
- 📡 标准输入输出传输:适用于桌面客户端的标准MCP协议。
- 🌐 HTTP流传输:用于Web集成的服务器发送事件。
- 🔄 双模式支持:通过命令行标志在传输方式之间切换。
系统要求
- Node.js 18+
- NPM 8+
- MCP客户端(Claude Desktop等)
包大小
- 📦 打包后:43.9 KB
- 📂 安装后:286.2 KB
- ⚡ 加载时间:<100ms
🐛 故障排除
常见问题与解决方案
服务器无法启动
node --version
npm run build
API错误
- 无效的站点ID:使用
get_stations
查找有效站点。
- 日期格式问题:使用YYYYMMDD或MM/DD/YYYY格式。
- 速率限制:NOAA API有使用限制,请合理安排请求。
MCP连接问题
- 确保Claude Desktop的MCP设置配置正确。
- 检查服务器二进制文件是否有执行权限:
chmod +x dist/index.js
。
📈 路线图
- [ ] 🌊 实时警报:支持潮汐/气象警报的Webhook。
- [ ] 📱 移动SDK:集成React Native。
- [ ] 🗺️ GIS集成:支持Shapefile和KML导出。
- [ ] 🤖 AI洞察:自动化模式识别。
- [ ] ⚡ GraphQL API:现代查询接口。
- [ ] 🌐 多语言支持:支持国际化。
🤝 贡献
我们欢迎贡献!以下是开始的步骤:
- 🍴 分叉 仓库。
- 🌿 创建分支 用于你的功能(
git checkout -b amazing-feature
)。
- 💻 编写代码 实现你的改进。
- ✅ 测试 使用
npm test
。
- 📤 提交 拉取请求。
开发命令
npm run build
npm run dev
npm run test
npm run format
📄 许可证
MIT许可证 - 详情请参阅 LICENSE 文件。
由 Ryan Cardin 用心打造
🔗 链接与资源
**⭐ 如果这个项目对你有帮助,请给它加星!**
得益于NOAA对开放海洋数据的支持 🌊