冲浪预报服务器

一个基于Model Context Protocol (MCP)的服务器,提供全面的冲浪预报数据,包括海浪状况、潮汐信息和专家观察等,适用于冲浪爱好者和相关应用开发者。

  • by englishar
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 englishar/surfline-mcp-server

使用说明

Surfline MCP 服务器

A. 模型上下文协议(MCP) 服务器通过Surfline的API提供全面的冲浪预报。您可以直接通过Claude或任何兼容MCP的客户端访问详细的冲浪条件、海浪分析、预报员见解、潮汐信息等。

特点/特性

🌊(海浪) 全面的冲浪数据

  • 当前圣克鲁斯11个地点的情况(可轻松扩展至其他地区)
  • 详细的海浪成分分析(每个海浪成分的波高、周期、方向、能量)
  • 8小时逐小时预报,显示条件变化情况
  • 专家预报员的观测结果,附带上午/下午的具体时间建议
  • 风况(风速、风向、离岸/近岸分类)
  • 质量评分(1-5星)

🌅(日落) 时间信息

  • 日出、日落、黎明和黄昏时间
  • 潮汐时间表,包含高潮/低潮时间及高度
  • 所有时间已正确转换为太平洋时区

🔐(锁形符号,常用于表示密码、保密或安全) 安全认证

  • 集成Google OAuth以实现安全访问
  • 与claude.ai的网页版和移动版无缝协作
  • 无需Surfline API密钥(使用公共端点)

快速入门

先决条件

  • Node.js 18及以上版本
  • 一个Cloudflare账户(免费套餐即可)
  • 一个用于OAuth的Google Cloud项目(免费)

安装

  1. 克隆并安装依赖项: ```bash(注:这行代码本身在中文语境下没有直接对应的翻译,它通常表示接下来是一段Bash脚本或命令行指令的开始,因此可直接保留原样或稍作说明,如“以下是Bash命令/脚本”) 进入 surfline-mcp-server 目录 npm install(安装npm包) ```

  2. 设置Google OAuth:

    • 首选 Google 云控制台
    • 创建一个新的OAuth 2.0客户端ID(网页应用类型)
    • 添加授权重定向URI:
      • `https://your-worker-name.your-subdomain.workers.dev/callback` 翻译成中文为:“https://你的工作器名称.你的子域名.workers.dev/回调”
      • `https://claude.ai/api/mcp/auth_callback` 翻译成中文可以是:“https://claude.ai/api/mcp/授权回调” 或者更简洁地表达为 “https://claude.ai/api/mcp/授权回调接口”。这里,“auth_callback”通常指的是用于处理授权回调的接口或页面,用于在用户授权后接收和处理相关回调信息
    • 记下您的客户端ID和客户端密钥
  3. 创建一个KV命名空间: ```bash(注:在中文语境中,"bash"通常不翻译,直接保留原样,因为它是一个特定的命令行解释器名称) 使用 npx wrangler 创建一个名为 OAUTH_KV 的 KV 命名空间 ``` 使用返回的 KV ID 更新 `wrangler.jsonc` 文件。

  4. 设置秘密: ```bash(注:在中文语境下,这通常表示接下来的代码或命令是Bash脚本语言) echo 'YOUR_GOOGLE_CLIENT_ID' | npx wrangler secret put GOOGLE_CLIENT_ID echo 'YOUR_GOOGLE_CLIENT_SECRET' | npx wrangler secret put GOOGLE_CLIENT_SECRET echo $(openssl rand -hex 32) | npx wrangler secret put COOKIE_ENCRYPTION_KEY 翻译为中文是:输出 openssl rand -hex 32 命令的结果,并将其通过管道传递给 npx wrangler secret put COOKIE_ENCRYPTION_KEY 命令以设置加密密钥 ```

  5. 部署: ```bash(注:在中文语境中,"bash" 通常保持原样,因为它是特定于计算机和编程领域的术语,表示 Bourne-Again Shell,一种 Unix/Linux 系统的命令行解释器。) npm 运行 deploy(即执行部署命令) ```

连接到Claude

  1. 首选 Claude.ai
  2. 导航至设置 → 集成
  3. 添加您已部署的 Worker 的 URL:`https://your-worker-name.your-subdomain.workers.dev/mcp`
  4. 使用谷歌进行身份验证
  5. 问克劳德:“圣克鲁斯的海浪怎么样?”

可用工具

获取完整海浪报告

主要工具 - 一次调用返回所有内容:

  • 预报员附上专家观察意见
  • 日出/日落时间
  • 潮汐时间表
  • 所有地点的当前状况
  • 海浪破碎
  • 8小时预报

辅助工具

如需特定信息,可提供单独的数据获取工具:

  • `get_surf_forecast` - 仅提供基本浪况信息
  • `get_forecaster_notes` - 仅限人工观测记录
  • `get_tides` - 仅获取潮汐信息
  • `get_best_spot` - 排名推荐

已覆盖的要点

北县: 戴文波特、瓦德尔溪、四英里(地名)、三英里(地名)
中央: 科威尔斯的蒸汽巷,第26大道
东侧: 快乐角(Pleasure Point)、杰克餐厅(Jack's)、海钓码头(The Hook)
南: Capitola(根据上下文,可能指地名或特定名称,直译为“卡皮托拉”,具体翻译需结合语境)

数据源

这个服务器使用的是Surfline未公开的公共API端点——与他们网站使用的相同。获取基本预报数据无需API密钥或认证。这些端点多年来一直稳定运行,被冲浪界广泛使用。

重要提示: 通过这些终端无法访问网络摄像头和高级功能。

扩展到其他地区

要添加更多地点,请编辑 `src/index.ts` 文件,并在 `SANTA_CRUZ_SPOTS` 对象中添加:

```typescript(翻译为中文意为:“使用TypeScript语言”或“以下是TypeScript代码”) const SANTA_CRUZ_SPOTS: Record<string, string> = { "您的地点名称": "来自Surfline的spotId", // (无实际翻译意义,保留原样).. }; ```

通过检查 surfline.com 上的网络请求来查找地点ID。

建筑

  • **Cloudflare Workers(云防护网络工作器)**无服务器托管(免费套餐:每天10万次请求)
  • 持久对象OAuth 状态管理
  • KV存储令牌持久化
  • Google OAuth安全认证
  • MCP协议人工智能助手的标准工具接口

发展

本地运行: ```bash(注:此处“bash”通常表示Bash shell,即Bourne-Again Shell,是一种在Unix-like操作系统中广泛使用的命令行解释器,但在此上下文中,若仅作为文字翻译,则“bash”可直接保留,不需额外翻译) npm 运行 dev(或:执行 npm dev 命令) (该句为代码或特殊符号,无实际中文翻译内容,若需结合上下文翻译,请提供完整句子或上下文。)

服务器将在 `http://localhost:8788` 上可用

使用MCP Inspector进行测试: ```bash(注:`bash`是Unix/Linux系统中的一个命令行解释器,此处直接保留原样,因为“bash”本身无需翻译) 使用 npx 运行 @modelcontextprotocol/inspector(或:执行 @modelcontextprotocol/inspector 工具) ```

许可证

麻省理工学院(MIT)

致谢

  • 感谢Surfline提供易于获取的冲浪预报数据
  • 针对MCP和OAuth库的Cloudflare
  • 用于记录API端点的冲浪社区