内容
# signalk-mcp
将 SignalK 实例作为工具表面暴露给 AI 代理的 MCP 服务器。
[Naturali](https://sailingnaturali.com) 开源船只代理栈的一部分。
## 功能描述
封装 SignalK 服务器(REST + WebSocket)并将最有用的海洋数据点暴露为 MCP 工具,任何兼容的代理运行时(例如 Poseidon、Claude Code)都可以调用。
### 提供的工具
- `read_sensor(path)` — 读取 SignalK 路径(例如,`navigation.position`,`environment.wind.speedTrue`)
- `get_route()` — 读取当前计划航线(航点、预计到达时间)
- `battery_state(bank)` — 读取电池充电状态、电压、电流
- `depth_state()` — 水深,优先显示船底间隙(回答“我们的深度是多少?”/“我们距离搁浅有多近?”)
- `get_local_time()` — 当前时间,本地化到船舶的 GPS 位置
- `list_paths(prefix)` — 发现船舶发布的 SignalK 路径
参见 [SPEC.md](SPEC.md) 获取响应契约。
## 为什么需要单独的服务器?
[VesselSense/signalk-mcp-server](https://github.com/VesselSense/signalk-mcp-server) 已经很好地实现了 SignalK-on-MCP:一个 `execute_code` 工具,代理编写自己的查询 — 非常适合前沿模型。`signalk-mcp` 做出了相反的假设:具有 TTS 安全的 `display` 字符串的离散命名工具,针对语音优先和小型本地模型进行调优,其中可靠性 和语音契约比查询灵活性更重要。两者都没有绝对的优势 — 为您实际运行的代理选择合适的表面。
完整的比较,包括故障模式:
[离散工具 vs execute_code](https://engineering.sailingnaturali.com/discrete-tools-vs-execute-code-mcp-for-voice-agents/).
## 安装
```bash
uv tool install signalk-mcp
```
## 配置
通过环境变量设置 SignalK 基本 URL:
```bash
export SIGNALK_URL=http://naturalaspi.local:3000
signalk-mcp
```
## 许可证
MIT。参见 LICENSE。
## 安全
如果您发现安全问题,请参见 SECURITY.md。