From 2ae9fbc883aa5ce394a88a5ce380feb21097d134 Mon Sep 17 00:00:00 2001 From: Tony Bentley Date: Sun, 12 Oct 2025 14:55:24 -0700 Subject: [PATCH 1/6] Add blog post: Introducing SignalK MCP Server Introduces the signalk-mcp-server project, a Model Context Protocol server that enables AI assistants like Claude to interact with SignalK marine data systems through natural language. Key features: - Real-world usage examples from the Satori project - 89 conversations and 252 tool calls analyzed - Demonstrates conversational boat monitoring approach - Tutorial-style guide for getting started - Emphasizes read-only safety and security Includes context document with research findings and conversation analysis for future reference. Generated with Claude Code Co-Authored-By: Claude --- BLOG_CONTEXT.md | 334 ++++++++++++++++++ ...p-server-ai-powered-marine-data-access.mdx | 229 ++++++++++++ 2 files changed, 563 insertions(+) create mode 100644 BLOG_CONTEXT.md create mode 100644 _posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx diff --git a/BLOG_CONTEXT.md b/BLOG_CONTEXT.md new file mode 100644 index 0000000..3626017 --- /dev/null +++ b/BLOG_CONTEXT.md @@ -0,0 +1,334 @@ +# Blog Post Context: SignalK MCP Server + +## Project Overview + +This document contains research findings for creating a blog post about the SignalK MCP Server project. + +## Repository Information + +### Upstream Repository + +- **URL**: https://github.com/SignalK/signalk.github.io +- **Owner**: SignalK organization +- **Current Fork**: https://github.com/tonybentley/signalk.github.io.git + +### Contributing Process + +1. Website built with Astro and hosted on GitHub Pages +2. Local development requires Node.js +3. Run locally: `npm install` then `npm start` (serves at localhost:4321) +4. Code quality: `npm run fix` to auto-fix errors and check for issues +5. Blog posts are created using: `script/generate "Title of the new post"` + - Creates file in `_posts` with current date + - Uses template from `docs/blog-template.md` + - Generates `.mdx` files (not `.md`) +6. Workflow: Write draft → Open pull request → Get reviewed + +## Blog Post Template Structure + +```yaml +--- +publishDate: { date } +title: { title } +author: Your Full Name +# image: ~/assets/images/your-image.png or full URL (e.g., from unsplash.com) +category: Release | Tutorial | Case Study +tags: [tag1, tag2] +description: '1-2 sentence headline that becomes the first paragraph' +--- +``` + +## Example Blog Post Analysis + +### Recent Posts Reviewed + +1. **KIP 3.0.0** (\_posts/2025/kip-3.0.0.md) + + - Category: Release + - Format: Feature list with emoji headers + - Includes screenshots + - Links to GitHub releases + - Technical but accessible + +2. **TWatchSK Announcement** (\_posts/2022/twatchsk-announcement.md) + - Category: Ecosystem/Hardware + - Personal narrative style + - Multiple images showing UI + - Detailed feature walkthrough + - Author included email and gravatar + +### Writing Style Patterns + +- Technical but approachable +- Use of specific examples and scenarios +- Screenshots/images to illustrate features +- Links to relevant resources +- Community-focused language +- Clear structure with headers +- Practical use cases highlighted + +## SignalK MCP Server Project Details + +### Description + +The SignalK MCP (Model Context Protocol) Server provides AI agents with read-only access to marine data systems. Enables AI assistants like Claude to query vessel navigation data, monitor AIS targets, and access system alarms from SignalK installations. + +### Key Features + +- Real-time vessel data access +- AIS target monitoring +- System notifications tracking +- Live data streams +- Path discovery +- Connection monitoring +- Automatic reconnection + +### Technical Requirements + +- Node.js 18.0.0 or higher +- Access to a SignalK server (local or remote) + +### Installation Options + +1. **Recommended**: Use npx + + ```bash + npx signalk-mcp-server + ``` + +2. **Global installation** + ```bash + npm install -g signalk-mcp-server + ``` + +### Available Tools/Commands + +- `get_initial_context()`: Provides comprehensive system overview +- `get_vessel_state()`: Retrieves current vessel navigation data +- `get_ais_targets()`: Monitors nearby vessel information +- `get_active_alarms()`: Tracks system notifications +- `list_available_paths()`: Discovers SignalK data paths + +### Configuration + +- Uses environment variables +- Options for SignalK host/port +- Connection settings +- Authentication support +- Logging preferences + +### Security & Safety + +- Read-only operations +- No device control capabilities +- Graceful error handling +- Robust connection validation + +### Integration + +- Works with Claude Desktop +- Compatible with Claude Code CLI +- Flexible for different development scenarios +- Marine monitoring use cases + +## Blog Post Strategy + +### Target Audience + +- SignalK users interested in AI/automation +- Developers exploring MCP protocol +- Marine enthusiasts wanting AI-assisted navigation +- Technical users comfortable with CLI tools + +### Key Messages + +1. First MCP server for marine data +2. Brings AI assistance to SignalK ecosystem +3. Safe, read-only access to vessel data +4. Easy to install and configure +5. Opens new possibilities for AI-assisted navigation + +### Potential Categories + +- Tutorial (if we focus on how-to) +- Release/Announcement (new tool announcement) +- Ecosystem (fits with other SignalK blog posts) + +### Suggested Tags + +- MCP, AI, Claude, ecosystem, navigation, developer-tools + +### Content Outline + +1. Introduction: What is MCP and why it matters for marine +2. What the SignalK MCP Server does +3. Key features and capabilities +4. Installation and setup +5. Practical use cases/examples +6. Security considerations +7. Getting started/next steps +8. Community call-to-action + +## Real-World Usage: The Satori Project + +### Project Background + +**Satori** is a 1977 Westsail 32 sailboat (MMSI: 367603940) based in San Diego, CA. The owner uses the SignalK MCP server to enable AI-assisted boat monitoring and management through Claude Desktop. + +### Conversational Boat Monitoring + +The project demonstrates a unique use case: treating the boat as an entity that can be queried conversationally. Users can ask questions like "How is Satori?" and receive comprehensive status reports based on: + +- Real-time SignalK data paths (vessel position, battery voltage, solar output, etc.) +- Historical time-series data from InfluxDB +- System alarms and notifications +- Environmental conditions (inside temp, fridge temp, bilge status) +- Engine parameters (when running) +- Tank levels (fresh water, holding tank) + +### System Context Document + +The Satori project maintains a comprehensive system context document (`satori-system-context.md`) that provides: + +- Complete vessel specifications and systems inventory +- SignalK path references for all monitored systems +- Electrical system details (solar, batteries, charging) +- Historical performance data +- Operational guidelines and known issues + +### MCP Tools Integration + +The SignalK MCP server provides tools that Claude uses to: + +1. **get_initial_context()** - Get comprehensive overview of boat systems +2. **get_vessel_state()** - Check current navigation/position data +3. **get_ais_targets()** - Monitor nearby vessels +4. **get_active_alarms()** - Review system alerts +5. **list_available_paths()** - Discover available data streams + +### Practical Example Queries + +The Satori project demonstrates natural language queries like: + +- "How is Satori?" → AI retrieves battery levels, solar charging status, tank levels +- "Is the battery charging properly?" → AI checks voltage trends, solar output, charger status +- "What's the fridge temperature?" → AI reads environmental sensors +- "Show me power consumption over the last 24 hours" → AI queries InfluxDB time-series data + +### Multi-System Integration + +Satori's implementation combines: + +- **2x Raspberry Pi computers**: + - NMEA Pi: OpenPlotter + InfluxDB + MCP server + - Venus Pi: VenusOS (Victron) for battery monitoring +- **Starlink**: Remote connectivity (24/7 at dock) +- **SignalK**: Central data hub aggregating NMEA 0183/2000 +- **InfluxDB**: Time-series storage for historical analysis +- **ESP32 sensors**: Custom environmental and bilge monitoring + +### Key Insight for Blog + +This demonstrates the transformative potential of MCP + SignalK: instead of checking multiple dashboards and graphs, boat owners can have natural conversations with AI about their vessel's status, receiving intelligent analysis and proactive alerts. + +## Detailed Conversation Examples from Satori + +### Statistics from Analysis + +- **89 conversations** about Satori/SignalK (out of 571 total) +- **252 SignalK tool calls** made +- **192 InfluxDB tool calls** for historical data +- Conversations span June-October 2025 + +### Example 1: Natural Status Check + +**User Query:** "how is satori doing today? batteries, and environment conditions?" + +**Tools Called:** + +- `signalk:get_vessel_state` - Overall status +- `signalk:list_available_paths` - Discover available data +- Multiple `signalk:get_path_value` calls for specific metrics + +**AI Response Included:** + +- Battery: 100% state of charge, 13.45V, 13.4A draw +- Solar: 5.44 kWh generated today (combined from 2 controllers) +- Environment: 26.8°C, 42.3% humidity +- Bilge: Both forward and aft dry (no flooding) + +**Key Takeaway:** Single natural question triggers comprehensive system analysis across multiple data sources. + +### Example 2: Historical Battery Analysis + +**User Query:** "how has the main battery doing. was it charged today?" + +**What Happened:** AI seamlessly switched from real-time SignalK to historical InfluxDB data to show battery's journey through the day: + +- Started at 99.8% at midnight +- Dropped to 96.9% by 2:30 AM (overnight discharge) +- Charging began at 3:00 AM +- Reached 100% by 4:30 AM and stayed there + +**Key Takeaway:** MCP enables narrative analysis of time-series data, not just raw numbers. + +### Example 3: Solar Comparison + +**User Query:** "how much solar energy did satori get today compared to yesterday?" + +**Result:** AI automatically queried both controllers and provided: + +- Today: 5.44 kWh total +- Yesterday: 6.12 kWh total +- Difference: -0.68 kWh (11% less, likely due to weather) + +**Key Takeaway:** Comparative analysis without writing queries or opening dashboards. + +### Example 4: Situational Awareness + +**User Query:** "what is the nearest vessel to satori right now" + +**What Happened:** + +- Queried AIS targets via SignalK +- Got Satori's current position +- Calculated distances using Haversine formula +- Identified nearest vessel: MMSI 338311884, only 51 meters away + +**Key Takeaway:** Complex spatial calculations and contextual analysis from simple natural language query. + +### Example 5: Anomaly Detection + +**User Query:** "how is satori doing? check for the past three weeks for any anomolies" + +**What Happened:** + +- Found active "Aft bilge has water" alarm +- Queried 3 weeks of historical data (bilge sensors, battery, power) +- User clarified alarm was brief/false +- AI provided context showing no pattern of issues + +**Key Takeaway:** Combines real-time alarms with historical patterns to distinguish false alarms from real problems. + +### Common Query Patterns Observed + +1. **Morning check-ins:** "How is Satori?" - overnight charging, weather +2. **Comparative analysis:** "Today vs yesterday" - solar, power consumption +3. **Troubleshooting:** Checking alarms, investigating anomalies +4. **Environmental monitoring:** Temperature, humidity trends +5. **Situational awareness:** Nearby vessels, position data + +### Most Frequently Accessed SignalK Paths + +- `electrical.batteries.*.voltage` +- `electrical.batteries.*.capacity.stateOfCharge` +- `electrical.solar.*.yieldToday` +- `environment.inside.temperature` +- `environment.inside.humidity` +- `environment.bilge.*.flood` +- `navigation.position` +- `navigation.speedOverGround` + +### The "Satori Effect" + +Users develop a conversational relationship with their boat. Instead of "checking systems," they're "asking how Satori is doing" - a fundamentally different interaction model that's more intuitive and human. diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx new file mode 100644 index 0000000..81662a7 --- /dev/null +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -0,0 +1,229 @@ +--- +publishDate: 2025-10-12 +title: 'Introducing SignalK MCP Server: AI-Powered Marine Data Access' +author: Tony Bentley +category: Tutorial +tags: [MCP, AI, Claude, ecosystem, developer-tools, automation] +description: 'A new Model Context Protocol server brings natural language AI assistance to SignalK, transforming how boaters interact with their vessel data and systems.' +--- + +Imagine asking your boat "How are you doing today?" and receiving a comprehensive status report on batteries, solar charging, environmental conditions, and nearby vessels. Thanks to a new Model Context Protocol (MCP) server for SignalK, this conversational approach to boat monitoring is now a reality. + +## What is the Model Context Protocol? + +[Model Context Protocol (MCP)](https://modelcontextprotocol.io/) is an open standard developed by Anthropic that enables AI assistants like Claude to securely connect to external data sources and tools. Think of it as a universal adapter that lets AI systems interact with your applications, databases, and services in a structured, secure way. + +For SignalK users, this means your AI assistant can now: + +- Query real-time vessel data +- Monitor AIS targets +- Check system alarms +- Analyze historical trends +- Discover available data paths + +All through natural language conversations, without writing a single line of code. + +## The SignalK MCP Server + +The [signalk-mcp-server](https://github.com/tonybentley/signalk-mcp-server) is a new open-source project that bridges SignalK installations with MCP-compatible AI assistants. It provides read-only access to marine data systems, enabling AI-powered monitoring and analysis while maintaining security through its inability to control devices. + +### Key Features + +- **Real-time vessel data access** - Query navigation, electrical, environmental, and propulsion systems +- **AIS target monitoring** - Track nearby vessels with intelligent distance calculations +- **System notifications** - Monitor active alarms and warnings +- **Path discovery** - Automatically find available SignalK data streams +- **Automatic reconnection** - Maintains reliable connection to SignalK server +- **Zero device control** - Read-only operations ensure safety + +### Installation + +Getting started is simple. The server requires Node.js 18.0.0 or higher and access to a SignalK server (local or remote). + +**Recommended: Using npx (no installation required)** + +```bash +npx signalk-mcp-server +``` + +**Or install globally** + +```bash +npm install -g signalk-mcp-server +``` + +The server can be configured using environment variables for SignalK host/port, authentication, and logging preferences. + +## Real-World Usage: The Satori Project + +To understand the transformative potential of this technology, let's look at a real deployment aboard _Satori_, a 1977 Westsail 32 cruising out of San Diego. + +### From Dashboards to Conversations + +_Satori's_ owner has integrated the SignalK MCP server with Claude Desktop, creating a system where the boat can be queried conversationally. Over a four-month period, this resulted in: + +- **89 conversations** about boat status and systems +- **252 SignalK tool calls** for real-time data +- **192 InfluxDB queries** for historical analysis + +But the numbers don't tell the full story. What matters is _how_ the interaction changed. + +### Example: Morning Check-In + +**User:** "how is satori doing today? batteries, and environment conditions?" + +In a single query, the AI automatically: + +1. Checked battery state of charge (100%), voltage (13.45V), and current draw (13.4A) +2. Calculated total solar production for the day (5.44 kWh from two controllers) +3. Read cabin environmental conditions (26.8°C, 42.3% humidity) +4. Verified bilge status (both forward and aft dry) + +This replaced what would have been multiple dashboard checks, graph reviews, and manual calculations. + +### Example: Historical Analysis + +**User:** "how has the main battery doing. was it charged today?" + +Rather than just answering "yes," the AI told a story: + +> "The battery started at 99.8% at midnight, discharged to 96.9% by 2:30 AM, began charging at 3:00 AM, and reached 100% by 4:30 AM where it has stayed since. Currently receiving 13.2A charging current." + +This narrative analysis of time-series data transforms raw numbers into actionable insights. + +### Example: Situational Awareness + +**User:** "what is the nearest vessel to satori right now" + +The AI: + +1. Queried AIS targets via SignalK +2. Retrieved _Satori's_ current position +3. Calculated distances using Haversine formula +4. Identified the nearest vessel: "MMSI 338311884, a 36-foot pleasure craft only 51 meters away, currently stationary" + +Complex spatial calculations became as simple as asking a question. + +## The "Satori Effect" + +Something interesting emerged from these conversations: users stopped "checking systems" and started "asking how Satori is doing." This shift from technical monitoring to conversational relationship represents a fundamentally different interaction model. + +Common query patterns that developed: + +- **Morning check-ins**: "How is Satori?" - overnight charging, weather +- **Comparative analysis**: "Today vs yesterday" - solar production, power consumption +- **Troubleshooting**: Checking alarms, investigating anomalies +- **Environmental monitoring**: Temperature and humidity trends +- **Situational awareness**: Nearby vessels, position data + +## Integration Architecture + +_Satori_ demonstrates a sophisticated but accessible integration: + +``` +Boat Sensors → SignalK Server → MCP Server → Claude Desktop → User + ↓ + InfluxDB (historical data) +``` + +The system combines: + +- **SignalK** for real-time vessel data aggregation +- **InfluxDB** for time-series storage and historical analysis +- **MCP Server** to bridge AI access to both systems +- **Claude Desktop** as the conversational interface + +This architecture enables seamless switching between real-time queries ("What's the battery voltage right now?") and historical analysis ("Show me the charging pattern over the last week"). + +## Available Tools + +The SignalK MCP server exposes five core tools to AI assistants: + +### `get_initial_context()` + +Provides a comprehensive overview of the SignalK system, including server version, vessel information, and available data sources. + +### `get_vessel_state()` + +Retrieves current navigation data including position, course, speed, and heading. + +### `get_ais_targets()` + +Returns information about nearby vessels tracked via AIS, enabling situational awareness queries. + +### `get_active_alarms()` + +Monitors system notifications and warnings, helping identify issues that need attention. + +### `list_available_paths()` + +Discovers what data streams are available on your SignalK server, making it easy to explore new capabilities. + +## Security Considerations + +The SignalK MCP server is designed with safety in mind: + +- **Read-only operations** - Cannot control devices or modify settings +- **No write access** - Eliminates risk of unintended system changes +- **Graceful error handling** - Fails safely if connections are lost +- **Connection validation** - Ensures proper authentication before data access + +This makes it suitable for production use aboard vessels where system integrity is critical. + +## Getting Started + +Ready to add AI-powered monitoring to your SignalK installation? Here's how: + +### 1. Install the MCP Server + +```bash +npx signalk-mcp-server +``` + +### 2. Configure Connection + +Set environment variables for your SignalK server: + +```bash +SIGNALK_HOST=signalk.local +SIGNALK_PORT=3000 +``` + +### 3. Connect Your AI Assistant + +Add the MCP server to your Claude Desktop or Claude Code configuration. The server will automatically connect to SignalK and expose its tools to your AI assistant. + +### 4. Start Asking Questions + +Try queries like: + +- "What's my current position?" +- "Show me battery voltage and state of charge" +- "What vessels are nearby?" +- "Are there any active alarms?" + +The AI will automatically use the appropriate tools to answer your questions. + +## What's Next? + +The SignalK MCP server opens new possibilities for marine automation and monitoring: + +- **Proactive alerts**: AI-driven anomaly detection across systems +- **Voyage planning**: Natural language query of route, weather, and vessel readiness +- **Maintenance tracking**: Conversational access to equipment hours and service schedules +- **Integration with other data sources**: Combining SignalK with weather APIs, marina databases, etc. + +## Join the Community + +The signalk-mcp-server project is open source and available on [GitHub](https://github.com/tonybentley/signalk-mcp-server). Whether you're a developer interested in extending the capabilities or a boat owner wanting to try AI-powered monitoring, we'd love to hear from you. + +### Resources + +- **Project Repository**: [github.com/tonybentley/signalk-mcp-server](https://github.com/tonybentley/signalk-mcp-server) +- **Model Context Protocol**: [modelcontextprotocol.io](https://modelcontextprotocol.io/) +- **SignalK**: [signalk.org](https://signalk.org) +- **Claude Desktop**: [claude.ai](https://claude.ai) + +The future of marine data interaction is conversational. The SignalK MCP server is your bridge to that future. + +_Have you integrated AI with your boat's systems? Share your experiences in the [SignalK Slack community](https://signalk-dev.slack.com/)!_ From d566ab9538f633ea834a431b167dd7637bff3766 Mon Sep 17 00:00:00 2001 From: Tony Bentley Date: Mon, 13 Oct 2025 09:15:00 -0700 Subject: [PATCH 2/6] Structured content --- BLOG_CONTEXT.md | 334 ----------- ...p-server-ai-powered-marine-data-access.mdx | 526 ++++++++++++++++-- 2 files changed, 467 insertions(+), 393 deletions(-) delete mode 100644 BLOG_CONTEXT.md diff --git a/BLOG_CONTEXT.md b/BLOG_CONTEXT.md deleted file mode 100644 index 3626017..0000000 --- a/BLOG_CONTEXT.md +++ /dev/null @@ -1,334 +0,0 @@ -# Blog Post Context: SignalK MCP Server - -## Project Overview - -This document contains research findings for creating a blog post about the SignalK MCP Server project. - -## Repository Information - -### Upstream Repository - -- **URL**: https://github.com/SignalK/signalk.github.io -- **Owner**: SignalK organization -- **Current Fork**: https://github.com/tonybentley/signalk.github.io.git - -### Contributing Process - -1. Website built with Astro and hosted on GitHub Pages -2. Local development requires Node.js -3. Run locally: `npm install` then `npm start` (serves at localhost:4321) -4. Code quality: `npm run fix` to auto-fix errors and check for issues -5. Blog posts are created using: `script/generate "Title of the new post"` - - Creates file in `_posts` with current date - - Uses template from `docs/blog-template.md` - - Generates `.mdx` files (not `.md`) -6. Workflow: Write draft → Open pull request → Get reviewed - -## Blog Post Template Structure - -```yaml ---- -publishDate: { date } -title: { title } -author: Your Full Name -# image: ~/assets/images/your-image.png or full URL (e.g., from unsplash.com) -category: Release | Tutorial | Case Study -tags: [tag1, tag2] -description: '1-2 sentence headline that becomes the first paragraph' ---- -``` - -## Example Blog Post Analysis - -### Recent Posts Reviewed - -1. **KIP 3.0.0** (\_posts/2025/kip-3.0.0.md) - - - Category: Release - - Format: Feature list with emoji headers - - Includes screenshots - - Links to GitHub releases - - Technical but accessible - -2. **TWatchSK Announcement** (\_posts/2022/twatchsk-announcement.md) - - Category: Ecosystem/Hardware - - Personal narrative style - - Multiple images showing UI - - Detailed feature walkthrough - - Author included email and gravatar - -### Writing Style Patterns - -- Technical but approachable -- Use of specific examples and scenarios -- Screenshots/images to illustrate features -- Links to relevant resources -- Community-focused language -- Clear structure with headers -- Practical use cases highlighted - -## SignalK MCP Server Project Details - -### Description - -The SignalK MCP (Model Context Protocol) Server provides AI agents with read-only access to marine data systems. Enables AI assistants like Claude to query vessel navigation data, monitor AIS targets, and access system alarms from SignalK installations. - -### Key Features - -- Real-time vessel data access -- AIS target monitoring -- System notifications tracking -- Live data streams -- Path discovery -- Connection monitoring -- Automatic reconnection - -### Technical Requirements - -- Node.js 18.0.0 or higher -- Access to a SignalK server (local or remote) - -### Installation Options - -1. **Recommended**: Use npx - - ```bash - npx signalk-mcp-server - ``` - -2. **Global installation** - ```bash - npm install -g signalk-mcp-server - ``` - -### Available Tools/Commands - -- `get_initial_context()`: Provides comprehensive system overview -- `get_vessel_state()`: Retrieves current vessel navigation data -- `get_ais_targets()`: Monitors nearby vessel information -- `get_active_alarms()`: Tracks system notifications -- `list_available_paths()`: Discovers SignalK data paths - -### Configuration - -- Uses environment variables -- Options for SignalK host/port -- Connection settings -- Authentication support -- Logging preferences - -### Security & Safety - -- Read-only operations -- No device control capabilities -- Graceful error handling -- Robust connection validation - -### Integration - -- Works with Claude Desktop -- Compatible with Claude Code CLI -- Flexible for different development scenarios -- Marine monitoring use cases - -## Blog Post Strategy - -### Target Audience - -- SignalK users interested in AI/automation -- Developers exploring MCP protocol -- Marine enthusiasts wanting AI-assisted navigation -- Technical users comfortable with CLI tools - -### Key Messages - -1. First MCP server for marine data -2. Brings AI assistance to SignalK ecosystem -3. Safe, read-only access to vessel data -4. Easy to install and configure -5. Opens new possibilities for AI-assisted navigation - -### Potential Categories - -- Tutorial (if we focus on how-to) -- Release/Announcement (new tool announcement) -- Ecosystem (fits with other SignalK blog posts) - -### Suggested Tags - -- MCP, AI, Claude, ecosystem, navigation, developer-tools - -### Content Outline - -1. Introduction: What is MCP and why it matters for marine -2. What the SignalK MCP Server does -3. Key features and capabilities -4. Installation and setup -5. Practical use cases/examples -6. Security considerations -7. Getting started/next steps -8. Community call-to-action - -## Real-World Usage: The Satori Project - -### Project Background - -**Satori** is a 1977 Westsail 32 sailboat (MMSI: 367603940) based in San Diego, CA. The owner uses the SignalK MCP server to enable AI-assisted boat monitoring and management through Claude Desktop. - -### Conversational Boat Monitoring - -The project demonstrates a unique use case: treating the boat as an entity that can be queried conversationally. Users can ask questions like "How is Satori?" and receive comprehensive status reports based on: - -- Real-time SignalK data paths (vessel position, battery voltage, solar output, etc.) -- Historical time-series data from InfluxDB -- System alarms and notifications -- Environmental conditions (inside temp, fridge temp, bilge status) -- Engine parameters (when running) -- Tank levels (fresh water, holding tank) - -### System Context Document - -The Satori project maintains a comprehensive system context document (`satori-system-context.md`) that provides: - -- Complete vessel specifications and systems inventory -- SignalK path references for all monitored systems -- Electrical system details (solar, batteries, charging) -- Historical performance data -- Operational guidelines and known issues - -### MCP Tools Integration - -The SignalK MCP server provides tools that Claude uses to: - -1. **get_initial_context()** - Get comprehensive overview of boat systems -2. **get_vessel_state()** - Check current navigation/position data -3. **get_ais_targets()** - Monitor nearby vessels -4. **get_active_alarms()** - Review system alerts -5. **list_available_paths()** - Discover available data streams - -### Practical Example Queries - -The Satori project demonstrates natural language queries like: - -- "How is Satori?" → AI retrieves battery levels, solar charging status, tank levels -- "Is the battery charging properly?" → AI checks voltage trends, solar output, charger status -- "What's the fridge temperature?" → AI reads environmental sensors -- "Show me power consumption over the last 24 hours" → AI queries InfluxDB time-series data - -### Multi-System Integration - -Satori's implementation combines: - -- **2x Raspberry Pi computers**: - - NMEA Pi: OpenPlotter + InfluxDB + MCP server - - Venus Pi: VenusOS (Victron) for battery monitoring -- **Starlink**: Remote connectivity (24/7 at dock) -- **SignalK**: Central data hub aggregating NMEA 0183/2000 -- **InfluxDB**: Time-series storage for historical analysis -- **ESP32 sensors**: Custom environmental and bilge monitoring - -### Key Insight for Blog - -This demonstrates the transformative potential of MCP + SignalK: instead of checking multiple dashboards and graphs, boat owners can have natural conversations with AI about their vessel's status, receiving intelligent analysis and proactive alerts. - -## Detailed Conversation Examples from Satori - -### Statistics from Analysis - -- **89 conversations** about Satori/SignalK (out of 571 total) -- **252 SignalK tool calls** made -- **192 InfluxDB tool calls** for historical data -- Conversations span June-October 2025 - -### Example 1: Natural Status Check - -**User Query:** "how is satori doing today? batteries, and environment conditions?" - -**Tools Called:** - -- `signalk:get_vessel_state` - Overall status -- `signalk:list_available_paths` - Discover available data -- Multiple `signalk:get_path_value` calls for specific metrics - -**AI Response Included:** - -- Battery: 100% state of charge, 13.45V, 13.4A draw -- Solar: 5.44 kWh generated today (combined from 2 controllers) -- Environment: 26.8°C, 42.3% humidity -- Bilge: Both forward and aft dry (no flooding) - -**Key Takeaway:** Single natural question triggers comprehensive system analysis across multiple data sources. - -### Example 2: Historical Battery Analysis - -**User Query:** "how has the main battery doing. was it charged today?" - -**What Happened:** AI seamlessly switched from real-time SignalK to historical InfluxDB data to show battery's journey through the day: - -- Started at 99.8% at midnight -- Dropped to 96.9% by 2:30 AM (overnight discharge) -- Charging began at 3:00 AM -- Reached 100% by 4:30 AM and stayed there - -**Key Takeaway:** MCP enables narrative analysis of time-series data, not just raw numbers. - -### Example 3: Solar Comparison - -**User Query:** "how much solar energy did satori get today compared to yesterday?" - -**Result:** AI automatically queried both controllers and provided: - -- Today: 5.44 kWh total -- Yesterday: 6.12 kWh total -- Difference: -0.68 kWh (11% less, likely due to weather) - -**Key Takeaway:** Comparative analysis without writing queries or opening dashboards. - -### Example 4: Situational Awareness - -**User Query:** "what is the nearest vessel to satori right now" - -**What Happened:** - -- Queried AIS targets via SignalK -- Got Satori's current position -- Calculated distances using Haversine formula -- Identified nearest vessel: MMSI 338311884, only 51 meters away - -**Key Takeaway:** Complex spatial calculations and contextual analysis from simple natural language query. - -### Example 5: Anomaly Detection - -**User Query:** "how is satori doing? check for the past three weeks for any anomolies" - -**What Happened:** - -- Found active "Aft bilge has water" alarm -- Queried 3 weeks of historical data (bilge sensors, battery, power) -- User clarified alarm was brief/false -- AI provided context showing no pattern of issues - -**Key Takeaway:** Combines real-time alarms with historical patterns to distinguish false alarms from real problems. - -### Common Query Patterns Observed - -1. **Morning check-ins:** "How is Satori?" - overnight charging, weather -2. **Comparative analysis:** "Today vs yesterday" - solar, power consumption -3. **Troubleshooting:** Checking alarms, investigating anomalies -4. **Environmental monitoring:** Temperature, humidity trends -5. **Situational awareness:** Nearby vessels, position data - -### Most Frequently Accessed SignalK Paths - -- `electrical.batteries.*.voltage` -- `electrical.batteries.*.capacity.stateOfCharge` -- `electrical.solar.*.yieldToday` -- `environment.inside.temperature` -- `environment.inside.humidity` -- `environment.bilge.*.flood` -- `navigation.position` -- `navigation.speedOverGround` - -### The "Satori Effect" - -Users develop a conversational relationship with their boat. Instead of "checking systems," they're "asking how Satori is doing" - a fundamentally different interaction model that's more intuitive and human. diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx index 81662a7..55674f2 100644 --- a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -38,39 +38,143 @@ The [signalk-mcp-server](https://github.com/tonybentley/signalk-mcp-server) is a ### Installation -Getting started is simple. The server requires Node.js 18.0.0 or higher and access to a SignalK server (local or remote). +The SignalK MCP server can be installed in multiple ways depending on your AI client. Choose the method that best fits your setup: + +#### Option A: Claude Desktop (Recommended for Beginners) + +**Important**: The MCP server runs on the same computer as Claude Desktop and connects to your SignalK server over the network (local or remote). + +1. **Install Node.js** (one-time requirement) + + - Visit [nodejs.org](https://nodejs.org) and download the LTS version + - **Mac**: Download the `.pkg` installer and double-click to install + - **Windows**: Download the `.msi` installer and run the setup wizard + - Verify installation: Open Terminal (Mac) or Command Prompt (Windows), type `node --version` + +2. **Configure Claude Desktop** + - Open Claude Desktop → Settings → Developer → "Edit Config" + - This opens the `claude_desktop_config.json` file + - Add this configuration (replace with your SignalK server details): + +```json +{ + "mcpServers": { + "signalk": { + "command": "npx", + "args": ["-y", "signalk-mcp-server"], + "env": { + "SIGNALK_HOST": "your-signalk-server.local", + "SIGNALK_PORT": "3000" + } + } + } +} +``` -**Recommended: Using npx (no installation required)** +3. **Save and Restart** + - Save the config file + - Completely quit Claude Desktop (not just close the window) + - Reopen Claude Desktop -```bash -npx signalk-mcp-server -``` +#### Option B: ChatGPT Desktop + +1. **Install Node.js** (same as Option A above) + +2. **Enable Developer Mode** + + - Open ChatGPT Desktop → Settings → Advanced + - Enable "Developer Mode" + +3. **Add MCP Server** + - Go to Connectors tab + - Follow the configuration wizard to add SignalK MCP server + - Enter your SignalK host and port details + +**Note**: Requires ChatGPT Pro, Team, Enterprise, or Edu subscription + +#### Option C: Mobile (Claude iOS/Android) + +Mobile devices support **remote MCP servers only**: + +1. Configure the MCP server on [claude.ai](https://claude.ai) website +2. Settings automatically sync to mobile apps +3. No local server installation possible on mobile + +### Adding InfluxDB for Historical Analysis (Optional but Recommended) + +The SignalK MCP server provides **real-time** vessel data. For **historical analysis** and trend tracking, you'll want to add the InfluxDB MCP server alongside it. + +**What InfluxDB MCP Provides:** + +- Historical time-series data (battery charging patterns, energy trends) +- Comparative analysis (today vs. yesterday, weekly averages) +- Long-term tracking (seasonal patterns, system performance over months) +- Narrative analysis ("battery discharged overnight, then charged at sunrise") -**Or install globally** +**How They Work Together:** -```bash -npm install -g signalk-mcp-server +The AI automatically chooses which MCP server to use: +- **SignalK MCP**: Current position, live sensor readings, active alarms +- **InfluxDB MCP**: Historical trends, comparative analysis, time-series queries +- **Both together**: Compare current state against historical patterns + +**Installation (Claude Desktop):** + +1. **Set up InfluxDB** on your boat's server (if not already running) + - Most SignalK installations can log data to InfluxDB + - See [SignalK InfluxDB plugin documentation](https://github.com/signalk/signalk-to-influxdb2) + +2. **Update Claude Desktop config** to include both servers: + +```json +{ + "mcpServers": { + "signalk": { + "command": "npx", + "args": ["-y", "signalk-mcp-server"], + "env": { + "SIGNALK_HOST": "your-signalk-server.local", + "SIGNALK_PORT": "3000" + } + }, + "influxdb": { + "command": "npx", + "args": ["-y", "@influxdata/influxdb-mcp-server"], + "env": { + "INFLUXDB_URL": "http://your-boat-server.local:8086", + "INFLUXDB_TOKEN": "your-influxdb-token", + "INFLUXDB_ORG": "your-org-name" + } + } + } +} ``` -The server can be configured using environment variables for SignalK host/port, authentication, and logging preferences. +3. **Restart Claude Desktop** -## Real-World Usage: The Satori Project +Now you can ask questions like: +- "How has my battery performed over the last week?" (InfluxDB) +- "What's my battery voltage right now?" (SignalK) +- "Is today's solar production normal compared to this week?" (Both) -To understand the transformative potential of this technology, let's look at a real deployment aboard _Satori_, a 1977 Westsail 32 cruising out of San Diego. +## Real-World Usage: A Cruising Sailboat + +To understand the transformative potential of this technology, let's look at a real deployment aboard a 1977 Westsail 32 cruising sailboat. ### From Dashboards to Conversations -_Satori's_ owner has integrated the SignalK MCP server with Claude Desktop, creating a system where the boat can be queried conversationally. Over a four-month period, this resulted in: +The boat owner integrated **both SignalK and InfluxDB MCP servers** with Claude Desktop, creating a system where the boat can be queried conversationally. Over a four-month period, this resulted in: - **89 conversations** about boat status and systems -- **252 SignalK tool calls** for real-time data -- **192 InfluxDB queries** for historical analysis +- **252 SignalK MCP tool calls** for real-time data (via signalk-mcp-server) +- **192 InfluxDB MCP tool calls** for historical analysis (via @influxdata/influxdb-mcp-server) +- **26 conversations** used both MCP servers simultaneously But the numbers don't tell the full story. What matters is _how_ the interaction changed. ### Example: Morning Check-In -**User:** "how is satori doing today? batteries, and environment conditions?" +**User:** "What's my boat's status today? batteries, and environment conditions?" In a single query, the AI automatically: @@ -85,32 +189,32 @@ This replaced what would have been multiple dashboard checks, graph reviews, and **User:** "how has the main battery doing. was it charged today?" -Rather than just answering "yes," the AI told a story: +Rather than just answering "yes," the AI told a story by querying **InfluxDB** (not SignalK) for historical time-series data: -> "The battery started at 99.8% at midnight, discharged to 96.9% by 2:30 AM, began charging at 3:00 AM, and reached 100% by 4:30 AM where it has stayed since. Currently receiving 13.2A charging current." +> "The battery started at 99.8% at midnight, discharged to 96.9% by 6:30 AM, began charging at 7:00 AM (sunrise), and reached 100% by 9:30 AM where it has stayed since. Currently receiving 13.2A charging current." -This narrative analysis of time-series data transforms raw numbers into actionable insights. +**Behind the scenes:** The AI used the `influxdb:query-data` tool with a Flux query to retrieve battery state of charge measurements over the entire day, then analyzed the trend. SignalK provided only the final value (current charging current). This demonstrates how the two MCP servers complement each other—InfluxDB for the narrative, SignalK for real-time confirmation. ### Example: Situational Awareness -**User:** "what is the nearest vessel to satori right now" +**User:** "what is the nearest vessel to me right now" The AI: 1. Queried AIS targets via SignalK -2. Retrieved _Satori's_ current position +2. Retrieved the boat's current position 3. Calculated distances using Haversine formula -4. Identified the nearest vessel: "MMSI 338311884, a 36-foot pleasure craft only 51 meters away, currently stationary" +4. Identified the nearest vessel: "A 36-foot pleasure craft only 51 meters away, currently stationary" Complex spatial calculations became as simple as asking a question. -## The "Satori Effect" +## The Conversational Shift -Something interesting emerged from these conversations: users stopped "checking systems" and started "asking how Satori is doing." This shift from technical monitoring to conversational relationship represents a fundamentally different interaction model. +Something interesting emerged from these conversations: users stopped "checking systems" and started "asking how the boat is doing." This shift from technical monitoring to conversational relationship represents a fundamentally different interaction model. Common query patterns that developed: -- **Morning check-ins**: "How is Satori?" - overnight charging, weather +- **Morning check-ins**: "How's the boat?" - overnight charging, weather - **Comparative analysis**: "Today vs yesterday" - solar production, power consumption - **Troubleshooting**: Checking alarms, investigating anomalies - **Environmental monitoring**: Temperature and humidity trends @@ -118,47 +222,266 @@ Common query patterns that developed: ## Integration Architecture -_Satori_ demonstrates a sophisticated but accessible integration: +This setup demonstrates a sophisticated but accessible integration: ``` -Boat Sensors → SignalK Server → MCP Server → Claude Desktop → User - ↓ - InfluxDB (historical data) +Boat Sensors → SignalK Server → SignalK MCP Server → AI Client* → User + ↓ ↑ ↓ + InfluxDB → InfluxDB MCP Server ──────┘ System Context Doc + (historical data) (runs on same (vessel knowledge) + computer as AI) + +*Claude Desktop, ChatGPT Desktop, or compatible MCP client ``` +### How It Works + +**Where the MCP Servers Run:** + +- **Both** SignalK MCP and InfluxDB MCP servers run on **the same computer** as your AI client +- When Claude Desktop starts, it automatically launches both MCP servers as background processes +- They stay running as long as the AI client is open +- They operate independently with no conflicts + +**Network Connections:** + +- **SignalK MCP** connects to your SignalK server over the network (WebSocket/HTTP) + - **Local**: If SignalK runs on the same boat network, use hostname like `signalk.local` or `192.168.1.x` + - **Remote**: If accessing remotely, use your boat's IP address or domain name + - Port: typically 3000 + +- **InfluxDB MCP** connects to your InfluxDB server over the network (HTTP) + - Usually on the same boat server as SignalK + - Port: typically 8086 + - Requires authentication token + +**Data Flow:** + +1. You ask a question in Claude Desktop +2. Claude determines which data source(s) it needs: + - **Real-time query** → calls SignalK MCP server + - **Historical query** → calls InfluxDB MCP server + - **Comprehensive analysis** → calls both +3. MCP servers query their respective data sources over the network +4. Servers format responses for Claude +5. Claude analyzes using your context document and responds + The system combines: -- **SignalK** for real-time vessel data aggregation -- **InfluxDB** for time-series storage and historical analysis -- **MCP Server** to bridge AI access to both systems -- **Claude Desktop** as the conversational interface +- **SignalK Server** (on boat) - Real-time vessel data aggregation from sensors +- **SignalK MCP Server** (on your computer) - Bridges AI access to live SignalK data +- **InfluxDB** (on boat) - Time-series storage for historical analysis +- **InfluxDB MCP Server** (on your computer) - Bridges AI access to historical data +- **AI Client** (on your computer) - Conversational interface that launches both MCP servers +- **System Context Document** (uploaded to AI) - Vessel-specific knowledge for intelligent analysis -This architecture enables seamless switching between real-time queries ("What's the battery voltage right now?") and historical analysis ("Show me the charging pattern over the last week"). +This architecture enables seamless switching between real-time queries ("What's the battery voltage right now?") and historical analysis ("Show me the charging pattern over the last week") with the AI automatically choosing the appropriate data source. ## Available Tools -The SignalK MCP server exposes five core tools to AI assistants: +### SignalK MCP Server Tools (Real-Time Data) + +The SignalK MCP server exposes five core tools for accessing **live vessel data**: -### `get_initial_context()` +#### `get_initial_context()` Provides a comprehensive overview of the SignalK system, including server version, vessel information, and available data sources. -### `get_vessel_state()` +#### `get_vessel_state()` Retrieves current navigation data including position, course, speed, and heading. -### `get_ais_targets()` +#### `get_ais_targets()` Returns information about nearby vessels tracked via AIS, enabling situational awareness queries. -### `get_active_alarms()` +#### `get_active_alarms()` Monitors system notifications and warnings, helping identify issues that need attention. -### `list_available_paths()` +#### `list_available_paths()` Discovers what data streams are available on your SignalK server, making it easy to explore new capabilities. +### InfluxDB MCP Server Tools (Historical Data) + +The InfluxDB MCP server provides one powerful tool for **time-series analysis**: + +#### `query-data` + +Executes Flux queries against your InfluxDB database to retrieve historical trends, compare time periods, and analyze patterns. + +**Example queries:** +- Battery charging patterns over the last week +- Solar production compared to yesterday +- Temperature trends for the past month +- Power consumption analysis + +**How the AI Chooses:** + +When you ask a question, the AI automatically determines which tools to use: +- **"What's my battery voltage?"** → `signalk:get_vessel_state` (real-time) +- **"How did my battery charge today?"** → `influxdb:query-data` (historical) +- **"Is my battery healthy?"** → Both (compare current state to historical patterns) + +## Setting Up Your Vessel Knowledge Base + +The SignalK MCP server becomes truly powerful when paired with a vessel-specific context document. This document teaches the AI about YOUR boat's systems, normal operating ranges, and how to interpret the data—transforming raw sensor readings into intelligent insights. + +### Why Context Documents Matter + +Without a context document, the AI can retrieve data but lacks understanding. Consider this query: + +**User:** "How's my battery?" + +**Without context**, the AI retrieves: +- `electrical.batteries.288.voltage` = 13.2V +- `electrical.batteries.288.capacity.stateOfCharge` = 85% +- `electrical.batteries.288.current` = -15.3A + +The AI responds: "Your battery at path `electrical.batteries.288` is at 13.2V, 85% state of charge, drawing 15.3 amps." + +**With context**, the AI knows: +- Path 288 = "Main house battery (300Ah LiFePO4)" +- 13.2V = Normal voltage when discharging (range: 12.8-13.4V) +- -15.3A = Negative means discharging (fridge + electronics = typical ~15A load) +- 85% at night = Expected after evening loads before solar charging resumes + +The AI responds: "Your main house battery is healthy. At 85% charge and 13.2V, it's in the normal discharge range for a LiFePO4 battery. The 15A draw is typical for your overnight loads (fridge, electronics). Should recharge to 100% by mid-morning when solar production kicks in." + +This context enables: + +- **Path interpretation**: Understanding what each cryptic path actually represents +- **Baseline comparison**: Recognizing normal vs abnormal values +- **System relationships**: Connecting cause and effect ("solar charges battery") +- **Anomaly detection**: Flagging when values fall outside expected ranges +- **Intelligent recommendations**: Suggesting actions based on vessel-specific knowledge + +**Unit Conversions Are Critical:** + +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. + +Without specifying your preferred units in the context document, you'll get technically correct but unintuitive responses: +- "Water depth is 5.4864 meters" instead of "18 feet" +- "Temperature is 299.15 Kelvin" instead of "78°F" +- "Charging started at 14:00" instead of "7:00 AM PDT" +- "Wind speed is 5.14 m/s" instead of "10 knots" + +By documenting your unit preferences and timezone, the AI automatically converts SignalK's SI units into the measurements you actually use when navigating and operating your vessel. + +### What to Include in Your Context Document + +**Essential Information:** + +- **Vessel specifications**: Battery capacity, solar array wattage, tank sizes, propulsion details +- **SignalK path mappings**: Which paths contain which data (e.g., `electrical.batteries.288.voltage`) +- **Normal operating ranges**: Expected values for all major systems +- **System relationships**: How systems interact (solar → battery → loads) +- **Unit preferences & timezone**: Your preferred units and local timezone for conversions +- **Known quirks**: "50% solar efficiency is normal due to boom shading" + +**Example Context Template:** + +``` +# My Vessel Systems + +## Electrical +- Main battery: 300Ah LiFePO4, normal range 12.0-14.6V +- Solar: 400W bimini + 100W dodger (expect ~50% efficiency due to shading) +- SignalK paths: + - Battery voltage: electrical.batteries.288.voltage + - Battery SOC: electrical.batteries.288.capacity.stateOfCharge + - Solar production: electrical.solar.289.yieldToday + +## Normal Patterns +- Battery charges 7-9 AM (sunrise), reaches 100% by 9:30 AM +- Average power consumption: ~107W continuously +- Fridge cycles: 21W average, alarm threshold at >6°C + +## Environmental +- Inside temp: 22-28°C typical +- Bilge: Both forward and aft normally dry +- SignalK paths: + - Inside temp: environment.inside.temperature + - Bilge status: environment.bilge.aft.flood + +## Unit Conversions & Preferences +- Timezone: Pacific (PDT/PST) - SignalK and InfluxDB store times in UTC +- Temperature: Display in Fahrenheit (SignalK stores in Kelvin) +- Depth: Display in feet (SignalK stores in meters) +- Speed: Display in knots (SignalK stores in m/s) +- Distance: Use nautical miles for navigation (SignalK stores meters) +- Wind speed: Display in knots (SignalK stores m/s) +``` + +### How to Set Up Context in Different AI Clients + +**Claude Desktop - Projects (Recommended)** + +1. Create a document with your vessel specifications +2. Open Claude Desktop → Projects → Create New Project +3. Name it after your boat or "Vessel Monitoring" +4. Click "Add Content" → Upload your context document +5. The AI will reference this automatically in all project conversations + +**Claude Desktop - Google Drive Sync (Pro/Team/Enterprise)** + +1. Create a Google Doc with your vessel context +2. In Claude Desktop Project: Click "Add Content" → Google Docs +3. Authenticate with Google (first time only) +4. Select your vessel context document +5. Changes to the doc auto-sync—always up to date + +**ChatGPT Desktop** + +1. Save your vessel context as a text file +2. Option A: Upload to each conversation before querying +3. Option B: Add key details to Custom Instructions (Settings → Personalization) + +**Mobile (Claude iOS/Android)** + +1. Add context documents to a Claude Project on claude.ai website +2. Access the project from mobile app +3. Context automatically available in all project chats + +### Maintaining Your Context Document + +Your vessel's context document is a living document that becomes more valuable over time. Regular updates improve the AI's ability to detect problems and provide intelligent analysis. + +**Why Keeping It Current Matters:** + +Baselines are critical for detecting electrical anomalies and system degradation. Consider this example: + +**Scenario:** You notice your battery isn't holding charge as well as it used to. + +**Without updated context:** +- AI sees: `electrical.batteries.288.voltage` = 12.4V at 50% SOC +- AI responds: "Battery is at 12.4V and 50% state of charge." + +**With historical baseline in context:** +- Context says: "Normal voltage at 50% SOC: 13.1V (baseline from June 2024)" +- AI sees: Current = 12.4V, Expected = 13.1V +- 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." + +**Best Practices for Maintaining Context:** + +- **Document baselines** when systems are new or freshly serviced +- **Update normal ranges** seasonally (summer vs winter temperatures, loads) +- **Record system changes**: New equipment, battery replacements, solar panel additions +- **Note degradation patterns**: "Battery capacity reduced from 300Ah to ~280Ah effective" +- **Track performance**: "Solar output dropped 15% after tree growth on dock" +- **Mark dates**: "Fridge compressor replaced Oct 2024, now runs cooler" + +**What to Update Regularly:** + +1. **Electrical baselines**: Battery voltage curves, normal charging current, expected solar output +2. **Consumption patterns**: Seasonal changes in power usage, new equipment loads +3. **Environmental normals**: Temperature ranges as seasons change +4. **System quirks**: New issues discovered, workarounds implemented +5. **Maintenance history**: When components were serviced, replaced, or adjusted + +The more detailed your context, the better the AI can distinguish between "that's normal for winter" and "something is actually wrong." + ## Security Considerations The SignalK MCP server is designed with safety in mind: @@ -172,46 +495,131 @@ This makes it suitable for production use aboard vessels where system integrity ## Getting Started -Ready to add AI-powered monitoring to your SignalK installation? Here's how: +Ready to add AI-powered monitoring to your SignalK installation? Follow these beginner-friendly steps: -### 1. Install the MCP Server +### Step 1: Prerequisites -```bash -npx signalk-mcp-server -``` +**What You Need:** -### 2. Configure Connection +- A computer (Mac or Windows) or mobile device +- Access to your SignalK server (local network or remote) +- An AI client account (Claude or ChatGPT) -Set environment variables for your SignalK server: +**Install Node.js (Desktop Only):** -```bash -SIGNALK_HOST=signalk.local -SIGNALK_PORT=3000 -``` +- Visit [nodejs.org](https://nodejs.org) and download the LTS version +- Run the installer and follow the prompts +- Verify: Open Terminal/Command Prompt and type `node --version` -### 3. Connect Your AI Assistant +### Step 2: Create Your Vessel Context Document -Add the MCP server to your Claude Desktop or Claude Code configuration. The server will automatically connect to SignalK and expose its tools to your AI assistant. +Before connecting the MCP server, create a document with your boat's information: -### 4. Start Asking Questions +**Use the template from the "Setting Up Your Vessel Knowledge Base" section** above, including: -Try queries like: +- Battery specifications and normal voltage ranges +- Solar panel wattage and expected output +- SignalK path mappings for your systems +- Normal operating patterns + +**Save this document** - you'll upload it to your AI client in Step 4. + +### Step 3: Install SignalK MCP Server + +Choose your installation method based on your AI client: + +**For Claude Desktop:** See "Option A" in the Installation section above +**For ChatGPT Desktop:** See "Option B" in the Installation section above +**For Mobile:** See "Option C" in the Installation section above + +### Step 4: Upload Your Context Document + +**Claude Desktop:** + +1. Create a new Project +2. Name it "Vessel Monitoring" (or your boat's name) +3. Click "Add Content" and upload your context document +4. All conversations in this project will reference your vessel info + +**ChatGPT Desktop:** + +1. Open a new chat +2. Upload your context document using the attachment button +3. OR add key details to Custom Instructions + +### Step 5: Test the Connection + +Start with simple queries to verify everything works: + +**Initial Test:** + +- "What tools do you have available for SignalK?" +- "Can you connect to my SignalK server?" + +**Data Queries:** - "What's my current position?" - "Show me battery voltage and state of charge" - "What vessels are nearby?" - "Are there any active alarms?" -The AI will automatically use the appropriate tools to answer your questions. +**Context-Aware Analysis:** + +- "How's my boat doing today?" +- "Is the battery charging normally?" +- "Any systems outside normal range?" + +The AI will automatically: + +1. Consult your vessel context document +2. Query SignalK using the appropriate MCP tools +3. Provide intelligent analysis based on your normal ranges + +### Step 6: Ask Natural Questions + +With context uploaded and MCP connected, you can ask natural questions: + +- "How much solar did I generate compared to yesterday?" +- "Is the fridge temperature normal?" +- "What's been happening with my battery overnight?" +- "Any boats near me right now?" + +The AI orchestrates the right tools and interprets results using your vessel's context. + +## Platform Comparison + +Choose the right AI client for your needs: + +| Feature | Claude Desktop | ChatGPT Desktop | Claude Mobile (iOS/Android) | +| --------------------- | ------------------------------------ | ---------------------------------- | ---------------------------- | +| **Installation** | JSON config file | Developer mode config | Remote MCP only | +| **Best For** | Easiest setup, most features | OpenAI ecosystem users | On-the-go monitoring | +| **Context Documents** | Projects + Google Drive sync | File upload or Custom Instructions | Same as web (via Projects) | +| **Requires Node.js** | Yes (currently) | Yes | No (remote servers only) | +| **Configuration** | Settings UI or JSON file | Developer mode wizard | Configure on web, auto-syncs | +| **Subscription** | Free tier available, Pro recommended | Pro/Team/Enterprise required | Free tier available | +| **Offline Use** | Yes (with local SignalK) | Yes (with local SignalK) | No (requires internet) | +| **Update Frequency** | Auto-updates extensions | Manual updates | Auto-syncs from web config | + +**Recommendation:** + +- **New users**: Start with Claude Desktop (simplest setup, great Projects feature) +- **OpenAI users**: ChatGPT Desktop works well but requires paid subscription +- **Mobile-only**: Claude mobile app with remote MCP (configure on web first) +- **Advanced users**: Any platform—all support the same MCP protocol ## What's Next? The SignalK MCP server opens new possibilities for marine automation and monitoring: -- **Proactive alerts**: AI-driven anomaly detection across systems -- **Voyage planning**: Natural language query of route, weather, and vessel readiness -- **Maintenance tracking**: Conversational access to equipment hours and service schedules -- **Integration with other data sources**: Combining SignalK with weather APIs, marina databases, etc. +### Future Possibilities + +- **Proactive Alerts**: AI-driven anomaly detection across systems +- **Voyage Planning**: Natural language query of route, weather, and vessel readiness +- **Maintenance Tracking**: Conversational access to equipment hours and service schedules +- **Multi-Source Integration**: Combining SignalK with weather APIs, marina databases, and more +- **Voice Interface**: "Hey Claude, how's the boat?" via mobile devices +- **Automated Logging**: AI-generated system reports and maintenance logs ## Join the Community From 805536cabe64cd7913262dc091de41e7dc29ce6a Mon Sep 17 00:00:00 2001 From: Tony Bentley Date: Mon, 13 Oct 2025 09:37:04 -0700 Subject: [PATCH 3/6] hero image --- ...mcp-server-ai-powered-marine-data-access.mdx | 12 ++++++++++++ src/assets/images/signalk-mcp-server.webp | Bin 0 -> 15120 bytes 2 files changed, 12 insertions(+) create mode 100644 src/assets/images/signalk-mcp-server.webp diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx index 55674f2..cf08820 100644 --- a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -2,6 +2,7 @@ publishDate: 2025-10-12 title: 'Introducing SignalK MCP Server: AI-Powered Marine Data Access' author: Tony Bentley +image: ~/assets/images/signalk-mcp-server.webp category: Tutorial tags: [MCP, AI, Claude, ecosystem, developer-tools, automation] 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,6 +115,7 @@ The SignalK MCP server provides **real-time** vessel data. For **historical anal **How They Work Together:** The AI automatically chooses which MCP server to use: + - **SignalK MCP**: Current position, live sensor readings, active alarms - **InfluxDB MCP**: Historical trends, comparative analysis, time-series queries - **Both together**: Compare current state against historical patterns @@ -121,6 +123,7 @@ The AI automatically chooses which MCP server to use: **Installation (Claude Desktop):** 1. **Set up InfluxDB** on your boat's server (if not already running) + - Most SignalK installations can log data to InfluxDB - See [SignalK InfluxDB plugin documentation](https://github.com/signalk/signalk-to-influxdb2) @@ -153,6 +156,7 @@ The AI automatically chooses which MCP server to use: 3. **Restart Claude Desktop** Now you can ask questions like: + - "How has my battery performed over the last week?" (InfluxDB) - "What's my battery voltage right now?" (SignalK) - "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 **Network Connections:** - **SignalK MCP** connects to your SignalK server over the network (WebSocket/HTTP) + - **Local**: If SignalK runs on the same boat network, use hostname like `signalk.local` or `192.168.1.x` - **Remote**: If accessing remotely, use your boat's IP address or domain name - Port: typically 3000 @@ -312,6 +317,7 @@ The InfluxDB MCP server provides one powerful tool for **time-series analysis**: Executes Flux queries against your InfluxDB database to retrieve historical trends, compare time periods, and analyze patterns. **Example queries:** + - Battery charging patterns over the last week - Solar production compared to yesterday - Temperature trends for the past month @@ -320,6 +326,7 @@ Executes Flux queries against your InfluxDB database to retrieve historical tren **How the AI Chooses:** When you ask a question, the AI automatically determines which tools to use: + - **"What's my battery voltage?"** → `signalk:get_vessel_state` (real-time) - **"How did my battery charge today?"** → `influxdb:query-data` (historical) - **"Is my battery healthy?"** → Both (compare current state to historical patterns) @@ -335,6 +342,7 @@ Without a context document, the AI can retrieve data but lacks understanding. Co **User:** "How's my battery?" **Without context**, the AI retrieves: + - `electrical.batteries.288.voltage` = 13.2V - `electrical.batteries.288.capacity.stateOfCharge` = 85% - `electrical.batteries.288.current` = -15.3A @@ -342,6 +350,7 @@ Without a context document, the AI can retrieve data but lacks understanding. Co The AI responds: "Your battery at path `electrical.batteries.288` is at 13.2V, 85% state of charge, drawing 15.3 amps." **With context**, the AI knows: + - Path 288 = "Main house battery (300Ah LiFePO4)" - 13.2V = Normal voltage when discharging (range: 12.8-13.4V) - -15.3A = Negative means discharging (fridge + electronics = typical ~15A load) @@ -362,6 +371,7 @@ This context enables: 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. Without specifying your preferred units in the context document, you'll get technically correct but unintuitive responses: + - "Water depth is 5.4864 meters" instead of "18 feet" - "Temperature is 299.15 Kelvin" instead of "78°F" - "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 **Scenario:** You notice your battery isn't holding charge as well as it used to. **Without updated context:** + - AI sees: `electrical.batteries.288.voltage` = 12.4V at 50% SOC - AI responds: "Battery is at 12.4V and 50% state of charge." **With historical baseline in context:** + - Context says: "Normal voltage at 50% SOC: 13.1V (baseline from June 2024)" - AI sees: Current = 12.4V, Expected = 13.1V - 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." diff --git a/src/assets/images/signalk-mcp-server.webp b/src/assets/images/signalk-mcp-server.webp new file mode 100644 index 0000000000000000000000000000000000000000..351320066b19f1d1e27ad3f5f730212a08e340a5 GIT binary patch literal 15120 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 Date: Sun, 19 Oct 2025 09:11:09 -0700 Subject: [PATCH 4/6] address pr comments --- ...p-server-ai-powered-marine-data-access.mdx | 217 ++++++------------ 1 file changed, 72 insertions(+), 145 deletions(-) diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx index cf08820..3d04eb4 100644 --- a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -24,6 +24,17 @@ For SignalK users, this means your AI assistant can now: All through natural language conversations, without writing a single line of code. +## Getting Started + +Here's the quick path to AI-powered boat monitoring: + +1. **Install** the SignalK MCP server (see Installation section below) +2. **Create** a context document with your boat's specs and normal ranges +3. **Upload** the context to your AI client (Claude/ChatGPT Projects) +4. **Ask** natural questions like "How's my boat doing today?" + +The AI automatically queries your SignalK server, interprets the data using your vessel context, and provides intelligent analysis. Installation takes about 10 minutes. + ## The SignalK MCP Server The [signalk-mcp-server](https://github.com/tonybentley/signalk-mcp-server) is a new open-source project that bridges SignalK installations with MCP-compatible AI assistants. It provides read-only access to marine data systems, enabling AI-powered monitoring and analysis while maintaining security through its inability to control devices. @@ -142,7 +153,7 @@ The AI automatically chooses which MCP server to use: }, "influxdb": { "command": "npx", - "args": ["-y", "@influxdata/influxdb-mcp-server"], + "args": ["-y", "influxdb-mcp-server"], "env": { "INFLUXDB_URL": "http://your-boat-server.local:8086", "INFLUXDB_TOKEN": "your-influxdb-token", @@ -171,7 +182,7 @@ The boat owner integrated **both SignalK and InfluxDB MCP servers** with Claude - **89 conversations** about boat status and systems - **252 SignalK MCP tool calls** for real-time data (via signalk-mcp-server) -- **192 InfluxDB MCP tool calls** for historical analysis (via @influxdata/influxdb-mcp-server) +- **192 InfluxDB MCP tool calls** for historical analysis (via influxdb-mcp-server) - **26 conversations** used both MCP servers simultaneously But the numbers don't tell the full story. What matters is _how_ the interaction changed. @@ -224,6 +235,57 @@ Common query patterns that developed: - **Environmental monitoring**: Temperature and humidity trends - **Situational awareness**: Nearby vessels, position data +### Example Prompts to Try + +These are real queries from actual usage, adapted to work with any SignalK setup. What you can ask depends on which sensors and systems you have installed: + +**General Status Checks** + +- "How is my boat doing today?" + - Requires: Battery monitoring, any environmental sensors +- "Are there any active alarms or warnings?" + - Works with any SignalK system with alarm support + +**Battery & Power** (if you have battery monitoring) + +- "What's my current battery voltage and state of charge?" +- "How much power am I using right now?" +- "How has the battery been charging today?" (requires InfluxDB for historical analysis) + +**Solar/Wind** (if you have renewable energy sources) + +- "How much solar power am I generating?" + - Requires: Solar controller with SignalK integration +- "What's today's total solar production?" (requires InfluxDB for historical data) + +**Navigation & AIS** (if you have AIS receiver) + +- "What's the nearest vessel to me right now?" +- "Show me all vessels within 5 miles" + - Requires: AIS receiver integrated with SignalK + +**Environmental Monitoring** (if you have temp/humidity sensors) + +- "What's the temperature inside the cabin?" +- "How has humidity changed over the last day?" (requires InfluxDB for historical analysis) + +**Tank Monitoring** (if you have tank sensors) + +- "How much fresh water do I have left?" +- "Is my holding tank full?" + +**Bilge & Safety** (if you have bilge sensors) + +- "Check for any water in the bilge" +- "Monitor bilge pumps and alert me if they're running" + +**Engine Monitoring** (if you have engine sensors) + +- "What's my engine temperature and oil pressure?" +- "Show me RPM over the last hour" (requires InfluxDB for historical data) + +The AI automatically uses your available sensors and paths—it won't try to query data you don't have. Start with simple queries to discover what your system can provide, then build up to more complex questions. + ## Integration Architecture This setup demonstrates a sophisticated but accessible integration: @@ -368,7 +430,7 @@ This context enables: **Unit Conversions Are Critical:** -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. +SignalK follows the specification standard and stores all data in **SI units** (meters, Kelvin, meters/second). Boaters typically think in **nautical units, imperial units, or metric** depending on their location—feet and Fahrenheit in the US, meters and Celsius internationally, and knots universally. Additionally, SignalK and InfluxDB store timestamps in **UTC**, but you'll want to see times in your local timezone. Without specifying your preferred units in the context document, you'll get technically correct but unintuitive responses: @@ -456,43 +518,14 @@ By documenting your unit preferences and timezone, the AI automatically converts ### Maintaining Your Context Document -Your vessel's context document is a living document that becomes more valuable over time. Regular updates improve the AI's ability to detect problems and provide intelligent analysis. - -**Why Keeping It Current Matters:** - -Baselines are critical for detecting electrical anomalies and system degradation. Consider this example: - -**Scenario:** You notice your battery isn't holding charge as well as it used to. - -**Without updated context:** +Keep your vessel context updated for better AI analysis. When you document baselines (battery voltage curves, normal solar output, typical consumption), the AI can detect degradation early. For example, if battery voltage at 50% SOC drops from a documented 13.1V baseline to 12.4V, the AI will flag potential cell imbalance rather than just reporting the value. -- AI sees: `electrical.batteries.288.voltage` = 12.4V at 50% SOC -- AI responds: "Battery is at 12.4V and 50% state of charge." +**Update regularly:** -**With historical baseline in context:** - -- Context says: "Normal voltage at 50% SOC: 13.1V (baseline from June 2024)" -- AI sees: Current = 12.4V, Expected = 13.1V -- 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." - -**Best Practices for Maintaining Context:** - -- **Document baselines** when systems are new or freshly serviced -- **Update normal ranges** seasonally (summer vs winter temperatures, loads) -- **Record system changes**: New equipment, battery replacements, solar panel additions -- **Note degradation patterns**: "Battery capacity reduced from 300Ah to ~280Ah effective" -- **Track performance**: "Solar output dropped 15% after tree growth on dock" -- **Mark dates**: "Fridge compressor replaced Oct 2024, now runs cooler" - -**What to Update Regularly:** - -1. **Electrical baselines**: Battery voltage curves, normal charging current, expected solar output -2. **Consumption patterns**: Seasonal changes in power usage, new equipment loads -3. **Environmental normals**: Temperature ranges as seasons change -4. **System quirks**: New issues discovered, workarounds implemented -5. **Maintenance history**: When components were serviced, replaced, or adjusted - -The more detailed your context, the better the AI can distinguish between "that's normal for winter" and "something is actually wrong." +- Electrical baselines when equipment is new or serviced +- Normal ranges seasonally (temperature, consumption patterns) +- System changes (new equipment, replacements) +- Degradation patterns and maintenance history ## Security Considerations @@ -505,99 +538,6 @@ The SignalK MCP server is designed with safety in mind: This makes it suitable for production use aboard vessels where system integrity is critical. -## Getting Started - -Ready to add AI-powered monitoring to your SignalK installation? Follow these beginner-friendly steps: - -### Step 1: Prerequisites - -**What You Need:** - -- A computer (Mac or Windows) or mobile device -- Access to your SignalK server (local network or remote) -- An AI client account (Claude or ChatGPT) - -**Install Node.js (Desktop Only):** - -- Visit [nodejs.org](https://nodejs.org) and download the LTS version -- Run the installer and follow the prompts -- Verify: Open Terminal/Command Prompt and type `node --version` - -### Step 2: Create Your Vessel Context Document - -Before connecting the MCP server, create a document with your boat's information: - -**Use the template from the "Setting Up Your Vessel Knowledge Base" section** above, including: - -- Battery specifications and normal voltage ranges -- Solar panel wattage and expected output -- SignalK path mappings for your systems -- Normal operating patterns - -**Save this document** - you'll upload it to your AI client in Step 4. - -### Step 3: Install SignalK MCP Server - -Choose your installation method based on your AI client: - -**For Claude Desktop:** See "Option A" in the Installation section above -**For ChatGPT Desktop:** See "Option B" in the Installation section above -**For Mobile:** See "Option C" in the Installation section above - -### Step 4: Upload Your Context Document - -**Claude Desktop:** - -1. Create a new Project -2. Name it "Vessel Monitoring" (or your boat's name) -3. Click "Add Content" and upload your context document -4. All conversations in this project will reference your vessel info - -**ChatGPT Desktop:** - -1. Open a new chat -2. Upload your context document using the attachment button -3. OR add key details to Custom Instructions - -### Step 5: Test the Connection - -Start with simple queries to verify everything works: - -**Initial Test:** - -- "What tools do you have available for SignalK?" -- "Can you connect to my SignalK server?" - -**Data Queries:** - -- "What's my current position?" -- "Show me battery voltage and state of charge" -- "What vessels are nearby?" -- "Are there any active alarms?" - -**Context-Aware Analysis:** - -- "How's my boat doing today?" -- "Is the battery charging normally?" -- "Any systems outside normal range?" - -The AI will automatically: - -1. Consult your vessel context document -2. Query SignalK using the appropriate MCP tools -3. Provide intelligent analysis based on your normal ranges - -### Step 6: Ask Natural Questions - -With context uploaded and MCP connected, you can ask natural questions: - -- "How much solar did I generate compared to yesterday?" -- "Is the fridge temperature normal?" -- "What's been happening with my battery overnight?" -- "Any boats near me right now?" - -The AI orchestrates the right tools and interprets results using your vessel's context. - ## Platform Comparison Choose the right AI client for your needs: @@ -620,22 +560,9 @@ Choose the right AI client for your needs: - **Mobile-only**: Claude mobile app with remote MCP (configure on web first) - **Advanced users**: Any platform—all support the same MCP protocol -## What's Next? - -The SignalK MCP server opens new possibilities for marine automation and monitoring: - -### Future Possibilities - -- **Proactive Alerts**: AI-driven anomaly detection across systems -- **Voyage Planning**: Natural language query of route, weather, and vessel readiness -- **Maintenance Tracking**: Conversational access to equipment hours and service schedules -- **Multi-Source Integration**: Combining SignalK with weather APIs, marina databases, and more -- **Voice Interface**: "Hey Claude, how's the boat?" via mobile devices -- **Automated Logging**: AI-generated system reports and maintenance logs - ## Join the Community -The signalk-mcp-server project is open source and available on [GitHub](https://github.com/tonybentley/signalk-mcp-server). Whether you're a developer interested in extending the capabilities or a boat owner wanting to try AI-powered monitoring, we'd love to hear from you. +The signalk-mcp-server project is open source and available on [GitHub](https://github.com/tonybentley/signalk-mcp-server). ### Resources From 5a92b5f70f84f491ec34021748f81e39436b1f5b Mon Sep 17 00:00:00 2001 From: Tony Bentley Date: Sun, 19 Oct 2025 09:17:05 -0700 Subject: [PATCH 5/6] remove cheese and bad references --- ...ucing-signalk-mcp-server-ai-powered-marine-data-access.mdx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx index 3d04eb4..e520311 100644 --- a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -570,7 +570,3 @@ The signalk-mcp-server project is open source and available on [GitHub](https:// - **Model Context Protocol**: [modelcontextprotocol.io](https://modelcontextprotocol.io/) - **SignalK**: [signalk.org](https://signalk.org) - **Claude Desktop**: [claude.ai](https://claude.ai) - -The future of marine data interaction is conversational. The SignalK MCP server is your bridge to that future. - -_Have you integrated AI with your boat's systems? Share your experiences in the [SignalK Slack community](https://signalk-dev.slack.com/)!_ From c05fea8972530a668a66bd88115360468b970412 Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Tue, 21 Oct 2025 07:56:20 -0400 Subject: [PATCH 6/6] Fix lint errors, update date --- ...ing-signalk-mcp-server-ai-powered-marine-data-access.mdx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx index e520311..4e1bcd4 100644 --- a/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx +++ b/_posts/2025/introducing-signalk-mcp-server-ai-powered-marine-data-access.mdx @@ -1,5 +1,5 @@ --- -publishDate: 2025-10-12 +publishDate: 2025-10-21 title: 'Introducing SignalK MCP Server: AI-Powered Marine Data Access' author: Tony Bentley image: ~/assets/images/signalk-mcp-server.webp @@ -57,7 +57,6 @@ The SignalK MCP server can be installed in multiple ways depending on your AI cl **Important**: The MCP server runs on the same computer as Claude Desktop and connects to your SignalK server over the network (local or remote). 1. **Install Node.js** (one-time requirement) - - Visit [nodejs.org](https://nodejs.org) and download the LTS version - **Mac**: Download the `.pkg` installer and double-click to install - **Windows**: Download the `.msi` installer and run the setup wizard @@ -93,7 +92,6 @@ The SignalK MCP server can be installed in multiple ways depending on your AI cl 1. **Install Node.js** (same as Option A above) 2. **Enable Developer Mode** - - Open ChatGPT Desktop → Settings → Advanced - Enable "Developer Mode" @@ -134,7 +132,6 @@ The AI automatically chooses which MCP server to use: **Installation (Claude Desktop):** 1. **Set up InfluxDB** on your boat's server (if not already running) - - Most SignalK installations can log data to InfluxDB - See [SignalK InfluxDB plugin documentation](https://github.com/signalk/signalk-to-influxdb2) @@ -312,7 +309,6 @@ Boat Sensors → SignalK Server → SignalK MCP Server → AI Client* → User **Network Connections:** - **SignalK MCP** connects to your SignalK server over the network (WebSocket/HTTP) - - **Local**: If SignalK runs on the same boat network, use hostname like `signalk.local` or `192.168.1.x` - **Remote**: If accessing remotely, use your boat's IP address or domain name - Port: typically 3000