APIs and integrationsEdit on GitHubSource: docs/MCP-INSTALL.md

Install the Kshana MCP server (v0.35.0)

Advisory, not type-approved navigation equipment: the operator remains responsible for navigation. The server runs on your computer; nothing is sent to Ashforde OÜ.

Every channel, with the pinned form for this release. The one-click links and every snippet below are generated by scripts/gen_mcp_install.py and decoded again by scripts/test_gen_mcp_install.py.

Every channel#

A passage naming third-party AI clients is left out here; it is in docs/MCP-INSTALL.md on GitHub.

A passage naming third-party AI clients is left out here; it is in docs/MCP-INSTALL.md on GitHub.

Channel Command or button Requires Pinned form
Cursor (one click) npx (Node) · Docker Node, or Docker kshana-mcp@0.35.0 / ghcr.io/ashfordeou/kshana-mcp:0.35.0
VS Code (one click) npx (Node) · Docker · Insiders (npx) Node, or Docker kshana-mcp@0.35.0 / ghcr.io/ashfordeou/kshana-mcp:0.35.0
npx npx -y kshana-mcp@0.35.0 Node 18+ kshana-mcp@0.35.0
uvx / pipx uvx kshana-mcp==0.35.0 · pipx run kshana-mcp==0.35.0 Python 3.9+ with uv or pipx kshana-mcp==0.35.0
Docker docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.35.0 Docker ghcr.io/ashfordeou/kshana-mcp:0.35.0
Homebrew brew install ashfordeOU/tap/kshana-mcp brew formula for v0.35.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket then scoop install kshana-mcp Scoop (Windows) manifest for v0.35.0
winget winget install AshfordeOU.KshanaMcp winget (Windows) --version 0.35.0
cargo cargo install kshana-mcp --version 0.35.0 Rust 1.88+ kshana-mcp 0.35.0
Prebuilt binary the release page: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], checked by SHA256SUMS and gh attestation verify none v0.35.0
MCP registry io.github.ashfordeOU/kshana-mcp (found by registry-aware clients) a registry-aware client 0.35.0
Remote (streamable HTTP) kshana-mcp --http 127.0.0.1:8080, self-hosted: see ../docs/deploy/mcp-http.md your own host v0.35.0

Pick a way to start the server#

Each client below takes one of three server definitions. They start the same server:

  • npx (Node) (needs Node 18+): npx -y kshana-mcp@0.35.0
  • Docker (needs Docker): docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.35.0
  • kshana-mcp on PATH (needs the binary (brew, scoop, winget, cargo or a release download)): kshana-mcp
  • Cursor, npx (Node): web link · cursor://anysphere.cursor-deeplink/mcp/install?name=kshana&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImtzaGFuYS1tY3BAMC4zNS4wIl19
  • Cursor, Docker: web link · cursor://anysphere.cursor-deeplink/mcp/install?name=kshana&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCJnaGNyLmlvL2FzaGZvcmRlb3Uva3NoYW5hLW1jcDowLjM1LjAiXX0=
  • Cursor, kshana-mcp on PATH: web link · cursor://anysphere.cursor-deeplink/mcp/install?name=kshana&config=eyJjb21tYW5kIjoia3NoYW5hLW1jcCIsImFyZ3MiOltdfQ==
  • VS Code, npx (Node): open · Insiders
  • VS Code, Docker: open · Insiders
  • VS Code, kshana-mcp on PATH: open · Insiders
  • Goose, npx: goose://extension?cmd=npx&arg=-y&arg=kshana-mcp%400.35.0&timeout=300&id=kshana&name=Kshana&description=Kshana%20PNT-resilience%20simulator%20%28advisory%29

Another client

/plugin marketplace add ashfordeOU/kshana
/plugin install kshana@ashforde

Each client's configuration#

Another client

Where: run in a terminal (add --scope user for every project). Or the plugin below.

npx (Node):

A passage naming third-party AI clients is left out here; it is in docs/MCP-INSTALL.md on GitHub.

Docker:

A passage naming third-party AI clients is left out here; it is in docs/MCP-INSTALL.md on GitHub.

kshana-mcp on PATH:

A passage naming third-party AI clients is left out here; it is in docs/MCP-INSTALL.md on GitHub.

Another client

Where: claude_desktop_config.json (Settings, Developer, Edit Config). Or double-click the .mcpb extension from the release: no config file.

npx (Node):

{
  "mcpServers": {
    "kshana": {
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

Docker:

{
  "mcpServers": {
    "kshana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

kshana-mcp on PATH:

{
  "mcpServers": {
    "kshana": {
      "command": "kshana-mcp",
      "args": []
    }
  }
}

Cursor#

Where: ~/.cursor/mcp.json (or .cursor/mcp.json in a project).

npx (Node):

{
  "mcpServers": {
    "kshana": {
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

Docker:

{
  "mcpServers": {
    "kshana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

kshana-mcp on PATH:

{
  "mcpServers": {
    "kshana": {
      "command": "kshana-mcp",
      "args": []
    }
  }
}

VS Code#

Where: .vscode/mcp.json. Or code --add-mcp with the same object plus a name.

npx (Node):

{
  "servers": {
    "kshana": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

Docker:

{
  "servers": {
    "kshana": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

kshana-mcp on PATH:

{
  "servers": {
    "kshana": {
      "type": "stdio",
      "command": "kshana-mcp",
      "args": []
    }
  }
}

Windsurf#

Where: mcp_config.json (open it from Cascade's MCP settings).

npx (Node):

{
  "mcpServers": {
    "kshana": {
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

Docker:

{
  "mcpServers": {
    "kshana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

kshana-mcp on PATH:

{
  "mcpServers": {
    "kshana": {
      "command": "kshana-mcp",
      "args": []
    }
  }
}

Zed#

Where: settings.json.

npx (Node):

{
  "context_servers": {
    "kshana": {
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

Docker:

{
  "context_servers": {
    "kshana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

kshana-mcp on PATH:

{
  "context_servers": {
    "kshana": {
      "command": "kshana-mcp",
      "args": []
    }
  }
}

Goose#

Where: ~/.config/goose/config.yaml.

npx (Node):

extensions:
  kshana:
    name: Kshana
    type: stdio
    cmd: npx
    args: ["-y", "kshana-mcp@0.35.0"]
    enabled: true
    timeout: 300

Docker:

extensions:
  kshana:
    name: Kshana
    type: stdio
    cmd: docker
    args: ["run", "-i", "--rm", "ghcr.io/ashfordeou/kshana-mcp:0.35.0"]
    enabled: true
    timeout: 300

kshana-mcp on PATH:

extensions:
  kshana:
    name: Kshana
    type: stdio
    cmd: kshana-mcp
    args: []
    enabled: true
    timeout: 300

Codex CLI#

Where: run in a terminal, or ~/.codex/config.toml.

npx (Node):

codex mcp add kshana -- npx -y kshana-mcp@0.35.0

# or in config.toml:
[mcp_servers.kshana]
command = "npx"
args = ["-y", "kshana-mcp@0.35.0"]

Docker:

codex mcp add kshana -- docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.35.0

# or in config.toml:
[mcp_servers.kshana]
command = "docker"
args = ["run", "-i", "--rm", "ghcr.io/ashfordeou/kshana-mcp:0.35.0"]

kshana-mcp on PATH:

codex mcp add kshana -- kshana-mcp

# or in config.toml:
[mcp_servers.kshana]
command = "kshana-mcp"
args = []

Gemini CLI#

Where: ~/.gemini/settings.json, or gemini mcp add.

npx (Node):

{
  "mcpServers": {
    "kshana": {
      "command": "npx",
      "args": [
        "-y",
        "kshana-mcp@0.35.0"
      ]
    }
  }
}

# or:
gemini mcp add kshana npx -- -y kshana-mcp@0.35.0

Docker:

{
  "mcpServers": {
    "kshana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ashfordeou/kshana-mcp:0.35.0"
      ]
    }
  }
}

# or:
gemini mcp add kshana docker -- run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.35.0

kshana-mcp on PATH:

{
  "mcpServers": {
    "kshana": {
      "command": "kshana-mcp",
      "args": []
    }
  }
}

# or:
gemini mcp add kshana kshana-mcp

Continue#

Where: .continue/mcpServers/kshana.yaml.

npx (Node):

name: Kshana
version: 0.0.1
schema: v1
mcpServers:
  - name: kshana
    command: npx
    args:
      - "-y"
      - "kshana-mcp@0.35.0"

Docker:

name: Kshana
version: 0.0.1
schema: v1
mcpServers:
  - name: kshana
    command: docker
    args:
      - "run"
      - "-i"
      - "--rm"
      - "ghcr.io/ashfordeou/kshana-mcp:0.35.0"

kshana-mcp on PATH:

name: Kshana
version: 0.0.1
schema: v1
mcpServers:
  - name: kshana
    command: kshana-mcp
    args: []

Remote use#

kshana-mcp --http <addr> serves the same tools over streamable HTTP for a client that cannot run a local process. It is for self-hosting; Ashforde OÜ does not run a public endpoint. See deploy/mcp-http.md.