{
  "markdown": "# kip-mcp-server\n\n[![CI](https://img.shields.io/github/actions/workflow/status/dillan/kip-mcp-server/ci.yml?branch=main&label=CI)](https://github.com/dillan/kip-mcp-server/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/kip-mcp-server)](https://www.npmjs.com/package/kip-mcp-server)\n[![npm downloads](https://img.shields.io/npm/dm/kip-mcp-server)](https://www.npmjs.com/package/kip-mcp-server)\n[![license](https://img.shields.io/npm/l/kip-mcp-server)](./LICENSE)\n[![node](https://img.shields.io/node/v/kip-mcp-server)](https://www.npmjs.com/package/kip-mcp-server)\n\nAn [MCP](https://modelcontextprotocol.io) server that lets an AI assistant (such as\nClaude, Codex, or Gemini) look at your boat's [Signal K](https://signalk.org) data and\nhelp you design and install [KIP](https://github.com/mxtommy/Kip) dashboards — the\ngauges and panels you see on your chartplotter or tablet.\n\nYou stay in control: the assistant shows you a picture of each dashboard first, and it\nonly saves anything to your boat after you say yes.\n\n## What it does\n\n- **Looks at your boat's data.** It finds the values your boat reports through Signal K\n  — speed, wind, depth, batteries, engine, and so on.\n- **Suggests dashboards.** It proposes a general dashboard plus ones for specific jobs:\n  sailing, motoring, power, anchoring, navigation, and weather.\n- **Shows you a preview.** You see a simple picture of each dashboard before anything is\n  saved.\n- **Installs them — with your OK.** It writes the dashboards to your KIP setup, or hands\n  you a file you can import yourself.\n\n## What it looks like\n\nA short session with an AI assistant, after pointing it at your boat:\n\n```text\nYou:  Look at my boat's data and suggest some KIP dashboards.\n\n  → analyze_signalk_data            142 paths · speed, wind, depth, battery, engine\n  → recommend_dashboard_set         6 dashboards the data supports\n\nAssistant: Your boat reports navigation, wind, depth, electrical and engine data,\nso I can build these. Here's the \"Sailing\" one — a preview, nothing saved yet:\n\n  ┌─────────────┬─────────────┬───────────────────────────┐\n  │ SOG  6.2 kn │ AWS 14 kn   │                           │\n  ├─────────────┼─────────────┤        wind steering       │\n  │ DPT  8.4 m  │ AWA  42°    │                           │\n  └─────────────┴─────────────┴───────────────────────────┘\n\nYou:  Looks good — install the sailing and anchor ones.\n\n  → apply_kip_config (dry run)      2 dashboards → KipConfig (global)\nAssistant: This will add \"Sailing\" and \"Anchor\" to KIP. Go ahead?\nYou:  Yes.\n  → apply_kip_config                written ✓  — open KIP to see them.\n```\n\nThe assistant always shows a preview first and asks before writing anything to your boat.\n\n## Quick start (for boat owners)\n\nYou need a [Signal K](https://signalk.org) server running on your boat (or on your\nnetwork), with KIP installed.\n\n1. **Find your Signal K address.** It usually looks like `http://your-boat:3000`. Note\n   the host name (or IP) and port.\n2. **Get this server.** You don't need to install anything by hand — your AI assistant can\n   run it on demand with [`npx`](https://docs.npmjs.com/cli/commands/npx) (which comes with\n   [Node.js](https://nodejs.org) 24 or newer):\n   ```bash\n   npx -y kip-mcp-server\n   ```\n   The next step wires this command into your assistant. (Prefer to build from source? See\n   [Develop](#develop) below.)\n3. **Connect it to your AI assistant.** Pick your assistant in [docs/clients](./docs/clients/)\n   and follow the short setup there. You tell the assistant your boat's host and port.\n4. **Ask it to help.** Say something like *\"Look at my boat's data and suggest some KIP\n   dashboards.\"* Review the previews it shows you.\n5. **Say yes.** When you're happy, tell it to go ahead. It asks before writing anything.\n   If your Signal K server is older, it gives you a `KipConfig.json` file to import from\n   KIP's Settings instead.\n\n## How to connect it\n\nThe server reads a few settings from its environment:\n\n| Setting | What it is | Default |\n| --- | --- | --- |\n| `SIGNALK_HOST` | Your Signal K host name or IP | `localhost` |\n| `SIGNALK_PORT` | Your Signal K port | `3000` |\n| `SIGNALK_TLS` | Set to `true` if your server uses `https` | `false` |\n| `SIGNALK_TOKEN` | A Signal K login token, needed to **write** dashboards | (none) |\n| `SIGNALK_USER` | A Signal K username — used with `SIGNALK_PASSWORD` instead of a token | (none) |\n| `SIGNALK_PASSWORD` | The matching Signal K password | (none) |\n| `KIP_URL` | Override where KIP is served, if it's not the default | (derived) |\n\nReading your data needs no login. Writing dashboards to the server needs either a token or\na username and password; you can always use the file-export option instead, which needs\nnothing extra. For how to get a token (or why a username/password is simpler), see\n[Signal K authentication](./docs/signalk-auth.md).\n\n## Remote access over HTTP (optional, advanced)\n\nBy default the server talks over **stdio** — the assistant runs it as a local subprocess.\nThere is also an optional **HTTP** mode (`kip-mcp-http`) for hosting the server so a remote\nassistant (such as Claude.ai) can reach it over the network. It is opt-in and meant for a\nsingle operator behind a reverse proxy that adds TLS.\n\n```bash\n# Behind a TLS-terminating reverse proxy that forwards to 127.0.0.1:3017\nMCP_BEARER_TOKEN=a-long-random-secret \\\nMCP_PUBLIC_URL=https://boat.example.com/mcp \\\n  npx kip-mcp-http\n```\n\n| Setting | What it is | Default |\n| --- | --- | --- |\n| `HTTP_HOST` | Address to bind | `127.0.0.1` (loopback) |\n| `HTTP_PORT` | Port to listen on | `3017` |\n| `HTTP_PATH` | URL path for the MCP endpoint | `/mcp` |\n| `MCP_BEARER_TOKEN` | One or more (comma-separated) bearer tokens that callers must present | (none) |\n| `MCP_PUBLIC_URL` | The public URL clients reach, used for the Host allowlist and metadata | (derived) |\n| `MCP_ALLOWED_ORIGINS` | Comma-separated browser origins to accept (off by default) | (none) |\n| `MCP_ALLOWED_HOSTS` | Override the Host allowlist | (derived) |\n| `MCP_ALLOW_INSECURE` | Set to `true` to start anyway in an unsafe setup | (unset) |\n\nEvery request must present a valid `Authorization: Bearer <token>` and pass a Host/Origin\nallowlist before it reaches the MCP layer. **The server refuses to start** if it would bind\nto a non-loopback address or run without a bearer token, unless you set\n`MCP_ALLOW_INSECURE=true`. It uses one Signal K login for all sessions, so treat it as a\nsingle-tenant deployment; the same `SIGNALK_*` settings above apply.\n\n## What the assistant can do\n\nThe server gives the assistant a set of tools, grouped by job:\n\n- **Look at the boat** — list the data paths, their units, and which plugins are installed.\n- **Know KIP's parts** — list every KIP widget and how it's configured, plus the colours,\n  icons and units KIP understands.\n- **Design dashboards** — suggest a set of dashboards, build one for a chosen job, and draw\n  a preview.\n- **Review the UX** — critique a dashboard for marine usability (hierarchy, grouping,\n  consistency, labels) with severity-tagged findings; the `review_dashboard` prompt drives it,\n  backed by a deterministic `check_dashboard_ux` lint.\n- **Check and save** — check a dashboard is well-formed, export it to a file, or write it to\n  the boat (asking first).\n\n## More help\n\n- **[Recipes](./docs/recipes.md)** — worked examples of asking the assistant to design dashboards.\n- **[Troubleshooting](./docs/troubleshooting.md)** — fixes for the common problems, starting with\n  the built-in `--doctor` check.\n- **[Tool reference](./docs/tools.md)** — every tool and prompt the assistant can use.\n\n## Glossary\n\nA few terms, in plain words:\n\n- **Signal K** — the open system many boats use to share data (speed, wind, depth, …) over\n  the network.\n- **path** — the name of one piece of data, like `navigation.speedOverGround` (speed over\n  ground).\n- **KIP** — the app that shows your boat's data as dashboards of gauges and panels.\n- **widget** — one gauge or panel on a dashboard (a number, a dial, a wind display, …).\n- **dashboard** — a screen full of widgets, laid out on a grid.\n- **token** — like a password for software: it lets the server save changes to your boat.\n- **dry run** — the assistant tells you what it *would* do, without actually doing it. Saving\n  is a dry run by default.\n\n## Develop\n\nThis project uses Node.js 24 (LTS). Common commands:\n\n```bash\nnpm install        # install dependencies\nnpm run typecheck  # check types\nnpm run lint       # check code style\nnpm test           # run the tests\nnpm run build      # compile to dist/\nnpm run smoke      # start the built server and check it answers\nnpm run ci         # run the full set of checks\n```\n\nFor a full guide to running and testing the server locally during development — pointing an AI\nclient or the MCP Inspector at a local build, running the HTTP transport, and testing against\nSignal K (or offline) — see [docs/development.md](./docs/development.md).\n\nCommits follow [Conventional Commits](https://www.conventionalcommits.org/); releases and\nversion numbers are produced automatically from those commit messages.\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n",
  "bytes": 9195,
  "sha": "dce48120d745505f3eb3e4b72b9c584fbd5a69a96b61e94932c0de1828a8f857",
  "repo_slug": "dillan/kip-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_dillan_kip_mcp_server_5b56556c/readme"
}