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#
| 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
One-click links#
- 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.