Skip to content

Commit 805536c

Browse files
Tony BentleyTony Bentley
authored andcommitted
hero image
1 parent d566ab9 commit 805536c

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
publishDate: 2025-10-12
33
title: 'Introducing SignalK MCP Server: AI-Powered Marine Data Access'
44
author: Tony Bentley
5+
image: ~/assets/images/signalk-mcp-server.webp
56
category: Tutorial
67
tags: [MCP, AI, Claude, ecosystem, developer-tools, automation]
78
description: 'A new Model Context Protocol server brings natural language AI assistance to SignalK, transforming how boaters interact with their vessel data and systems.'
@@ -114,13 +115,15 @@ The SignalK MCP server provides **real-time** vessel data. For **historical anal
114115
**How They Work Together:**
115116

116117
The AI automatically chooses which MCP server to use:
118+
117119
- **SignalK MCP**: Current position, live sensor readings, active alarms
118120
- **InfluxDB MCP**: Historical trends, comparative analysis, time-series queries
119121
- **Both together**: Compare current state against historical patterns
120122

121123
**Installation (Claude Desktop):**
122124

123125
1. **Set up InfluxDB** on your boat's server (if not already running)
126+
124127
- Most SignalK installations can log data to InfluxDB
125128
- See [SignalK InfluxDB plugin documentation](https://github.com/signalk/signalk-to-influxdb2)
126129

@@ -153,6 +156,7 @@ The AI automatically chooses which MCP server to use:
153156
3. **Restart Claude Desktop**
154157

155158
Now you can ask questions like:
159+
156160
- "How has my battery performed over the last week?" (InfluxDB)
157161
- "What's my battery voltage right now?" (SignalK)
158162
- "Is today's solar production normal compared to this week?" (Both)
@@ -246,6 +250,7 @@ Boat Sensors → SignalK Server → SignalK MCP Server → AI Client* → User
246250
**Network Connections:**
247251

248252
- **SignalK MCP** connects to your SignalK server over the network (WebSocket/HTTP)
253+
249254
- **Local**: If SignalK runs on the same boat network, use hostname like `signalk.local` or `192.168.1.x`
250255
- **Remote**: If accessing remotely, use your boat's IP address or domain name
251256
- Port: typically 3000
@@ -312,6 +317,7 @@ The InfluxDB MCP server provides one powerful tool for **time-series analysis**:
312317
Executes Flux queries against your InfluxDB database to retrieve historical trends, compare time periods, and analyze patterns.
313318

314319
**Example queries:**
320+
315321
- Battery charging patterns over the last week
316322
- Solar production compared to yesterday
317323
- Temperature trends for the past month
@@ -320,6 +326,7 @@ Executes Flux queries against your InfluxDB database to retrieve historical tren
320326
**How the AI Chooses:**
321327

322328
When you ask a question, the AI automatically determines which tools to use:
329+
323330
- **"What's my battery voltage?"**`signalk:get_vessel_state` (real-time)
324331
- **"How did my battery charge today?"**`influxdb:query-data` (historical)
325332
- **"Is my battery healthy?"** → Both (compare current state to historical patterns)
@@ -335,13 +342,15 @@ Without a context document, the AI can retrieve data but lacks understanding. Co
335342
**User:** "How's my battery?"
336343

337344
**Without context**, the AI retrieves:
345+
338346
- `electrical.batteries.288.voltage` = 13.2V
339347
- `electrical.batteries.288.capacity.stateOfCharge` = 85%
340348
- `electrical.batteries.288.current` = -15.3A
341349

342350
The AI responds: "Your battery at path `electrical.batteries.288` is at 13.2V, 85% state of charge, drawing 15.3 amps."
343351

344352
**With context**, the AI knows:
353+
345354
- Path 288 = "Main house battery (300Ah LiFePO4)"
346355
- 13.2V = Normal voltage when discharging (range: 12.8-13.4V)
347356
- -15.3A = Negative means discharging (fridge + electronics = typical ~15A load)
@@ -362,6 +371,7 @@ This context enables:
362371
SignalK follows the specification standard and stores all data in **SI units** (meters, Kelvin, meters/second), while boaters typically think in **nautical units, imperial units, or metric** depending on their location (feet/Fahrenheit in the US, meters/Celsius internationally, and knots universally). Additionally, SignalK and InfluxDB store timestamps in **UTC**, but you'll want to see times in your local timezone.
363372

364373
Without specifying your preferred units in the context document, you'll get technically correct but unintuitive responses:
374+
365375
- "Water depth is 5.4864 meters" instead of "18 feet"
366376
- "Temperature is 299.15 Kelvin" instead of "78°F"
367377
- "Charging started at 14:00" instead of "7:00 AM PDT"
@@ -455,10 +465,12 @@ Baselines are critical for detecting electrical anomalies and system degradation
455465
**Scenario:** You notice your battery isn't holding charge as well as it used to.
456466

457467
**Without updated context:**
468+
458469
- AI sees: `electrical.batteries.288.voltage` = 12.4V at 50% SOC
459470
- AI responds: "Battery is at 12.4V and 50% state of charge."
460471

461472
**With historical baseline in context:**
473+
462474
- Context says: "Normal voltage at 50% SOC: 13.1V (baseline from June 2024)"
463475
- AI sees: Current = 12.4V, Expected = 13.1V
464476
- AI responds: "⚠️ Battery voltage is 0.7V below normal baseline for 50% charge. This suggests battery degradation or a cell imbalance issue. Normal voltage at this charge level should be ~13.1V. Recommend checking battery health and connections."
14.8 KB
Loading

0 commit comments

Comments
 (0)