Provides AI agents with read-only access to SignalK marine data systems, enabling queries of vessel navigation data, AIS targets, and system alarms.
A Model Context Protocol (MCP) server that provides AI agents with read-only access to SignalK marine data systems. This server enables Claude and other AI assistants to query vessel navigation data, monitor AIS targets, and access system alarms from SignalK installations.
The easiest way to use this MCP server is via npx:
npx signalk-mcp-server
Or install globally:
npm install -g signalk-mcp-server
git clone <repository-url>
cd signalk-mcp-server
npm install
npm run build
Configure the server using environment variables. Create a .env
file in the project root:
# SignalK Connection
SIGNALK_HOST=localhost # SignalK server hostname/IP
SIGNALK_PORT=3000 # SignalK server port
SIGNALK_TLS=false # Use secure connections (WSS/HTTPS)
# Authentication & Context
SIGNALK_TOKEN= # Optional authentication token
SIGNALK_CONTEXT=vessels.self # Default vessel context
# Connection Behavior
RECONNECT_INTERVAL=5000 # Reconnection delay (ms)
REQUEST_TIMEOUT=5000 # Request timeout (ms)
DEFAULT_PERIOD=1000 # Default subscription period (ms)
MIN_PERIOD=200 # Minimum update period (ms)
SUBSCRIPTION_POLICY=ideal # ideal|instant|minimum|maximum
# MCP Server Settings
SERVER_NAME=signalk-mcp-server # MCP server identifier
SERVER_VERSION=1.0.0 # Version string
DEBUG=false # Enable debug logging
LOG_LEVEL=info # Logging level
Local development (default):
SIGNALK_HOST=localhost
SIGNALK_PORT=3000
SIGNALK_TLS=false
Remote server with custom port:
SIGNALK_HOST=192.168.1.100
SIGNALK_PORT=8080
SIGNALK_TLS=false
Secure remote server:
SIGNALK_HOST=myboat.signalk.io
SIGNALK_PORT=443
SIGNALK_TLS=true
Development mode with hot reload:
npm run dev
Production mode:
npm start
Using ts-node directly:
npm run start:dev
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"signalk": {
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "localhost",
"SIGNALK_PORT": "3000",
"SIGNALK_TLS": "false"
}
}
}
}
{
"mcpServers": {
"signalk": {
"command": "node",
"args": ["/path/to/signalk-mcp-server/dist/src/index.js"],
"env": {
"SIGNALK_HOST": "localhost",
"SIGNALK_PORT": "3000",
"SIGNALK_TLS": "false"
}
}
}
}
npm install -g @anthropic-ai/claude-code
claude --version
claude --help
The simplest way to add the SignalK MCP server:
claude mcp add signalk npx signalk-mcp-server
With environment variables:
claude mcp add signalk \
-e SIGNALK_HOST=localhost \
-e SIGNALK_PORT=3000 \
-e SIGNALK_TLS=false \
-- npx signalk-mcp-server
Add the server using JSON configuration:
claude mcp add-json signalk '{
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "localhost",
"SIGNALK_PORT": "3000",
"SIGNALK_TLS": "false"
}
}'
Create a .mcp.json
file in your project root to share the configuration with your team:
{
"mcpServers": {
"signalk": {
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "localhost",
"SIGNALK_PORT": "3000",
"SIGNALK_TLS": "false"
}
}
}
}
Then add it as a project-scoped server:
claude mcp add signalk -s project npx signalk-mcp-server
If you installed globally with npm install -g signalk-mcp-server
:
claude mcp add signalk signalk-mcp-server
List all configured servers:
claude mcp list
Check server status:
claude mcp get signalk
Debug configuration issues:
claude --mcp-debug
Reset project choices (if needed):
claude mcp reset-project-choices
Local development:
claude mcp add-json signalk-local '{
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "localhost",
"SIGNALK_PORT": "3000",
"SIGNALK_TLS": "false"
}
}'
Remote server:
claude mcp add-json signalk-remote '{
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "192.168.1.100",
"SIGNALK_PORT": "8080",
"SIGNALK_TLS": "false"
}
}'
Secure remote server:
claude mcp add-json signalk-secure '{
"command": "npx",
"args": ["-y", "signalk-mcp-server"],
"env": {
"SIGNALK_HOST": "myboat.signalk.io",
"SIGNALK_PORT": "443",
"SIGNALK_TLS": "true",
"SIGNALK_TOKEN": "your-auth-token"
}
}'
The MCP server provides the following tools to AI agents:
get_initial_context()
šStart here! Returns comprehensive SignalK context and documentation to help AI agents understand the system. This tool provides:
Usage: Call this tool first to gain essential context about the SignalK system before using other tools.
get_vessel_state()
Returns current vessel navigation data including position, heading, speed, wind information, and vessel identity (name, MMSI). Combines delta message data with top-level SignalK properties for comprehensive vessel information.
get_ais_targets(page?, pageSize?)
Retrieves nearby vessels from AIS sorted by distance from self vessel (closest first). Returns position, course, speed, identification data, and distance in meters. Supports pagination with optional parameters:
page
: Page number (1-based, default: 1)pageSize
: Number of targets per page (default: 10, max: 50)get_active_alarms()
Returns current system notifications, alerts, and alarm states.
list_available_paths()
Discovers and lists all available SignalK data paths on the connected server.
get_path_value(path)
Gets the latest value for any specific SignalK path.
get_connection_status()
Returns WebSocket connection state, health metrics, and reconnection status.
The server exposes these static reference resources:
signalk://signalk_overview
- SignalK overview and core conceptssignalk://data_model_reference
- Comprehensive SignalK data model referencesignalk://path_categories_guide
- Guide to understanding SignalK pathssignalk://mcp_tool_reference
- Reference for available MCP tools and usage patternsNote: While these resources can be accessed individually via the MCP resource protocol, the get_initial_context()
tool provides a more convenient way to access all reference materials in a single call, making it the recommended approach for AI agents to understand the system.
npm run build
- Compile TypeScript to JavaScriptnpm run dev
- Run in development mode with hot reloadnpm run test
- Run unit testsnpm run test:watch
- Run tests in watch modenpm run test:coverage
- Run tests with coverage reportnpm run typecheck
- Type checking without compilationThe project includes comprehensive test suites:
# Run all tests
npm run test:all
# Unit tests only
npm run test:unit
# End-to-end tests
npm run test:e2e
# Watch mode for development
npm run test:watch
src/
āāā index.ts # Main entry point and MCP server setup
āāā signalk-client.ts # WebSocket client with reconnection logic
āāā signalk-mcp-server.ts # MCP server implementation with tools and resources
āāā types/ # TypeScript type definitions
āāā index.ts
āāā interfaces.ts
āāā mcp.ts
āāā signalk.ts
The server processes SignalK delta messages in this format:
{
"context": "vessels.self",
"updates": [{
"timestamp": "2025-06-19T10:30:15.123Z",
"source": {"label": "GPS1", "type": "NMEA0183"},
"values": [{
"path": "navigation.position",
"value": {"latitude": 37.8199, "longitude": -122.4783}
}]
}]
}
This is a minimal viable product (MVP) focused on basic functionality. The following features are explicitly out of scope:
Connection refused:
Authentication errors:
Missing data:
list_available_paths()
to discover available dataWebSocket disconnections:
get_connection_status()
Node.js version issues:
Enable detailed logging:
DEBUG=true
LOG_LEVEL=debug
MIT License - see LICENSE file for details.
npm run test
and npm run typecheck
For issues and questions:
Multimodal MCP server for generating images, audio, and text with no authentication required
Interact with EduBase, a comprehensive e-learning platform with advanced quizzing, exam management, and content organization capabilities
MCP to interface with multiple blockchains, staking, DeFi, swap, bridging, wallet management, DCA, Limit Orders, Coin Lookup, Tracking and more.
generate lyrics, song and background music(instrumental)
Detects Chinese mobile phone carriers, including China Mobile, China Unicom, China Telecom, and virtual operators.
Provides AI assistants with comprehensive access to a Plex Media Server.
Connects Large Language Models (LLMs) with Guild Wars 2 data sources. Requires a Guild Wars 2 API key for wallet functionality.
Provides weather data using the Open-Meteo API.
Execute stock and crypto trades via Trade Agent
Generates true random coin flips using the random.org API.