kaax-mcp 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -82,17 +82,29 @@ The full list:
82
82
  - `kaax_organize_data` — audit and clean up tags
83
83
  - `kaax_import_shapefile` — convert + upload .shp parcels
84
84
 
85
- ## Install
85
+ ## Install (the one-liner)
86
86
 
87
87
  ```bash
88
- git clone https://github.com/Ahau-x/Kaax-LandingPage.git
89
- cd Kaax-LandingPage/mcp
90
- npm install
91
- npm run build
88
+ npx -y kaax-mcp init
92
89
  ```
93
90
 
94
- The build emits a runnable `dist/index.js` you can invoke directly via
95
- `node dist/index.js` or once published `npx -y @kaax/mcp-server`.
91
+ That's it. The installer auto-detects every MCP client you have installed
92
+ (Claude Desktop, Claude Code, Cursor, Windsurf), asks which ones to wire
93
+ Kaax into, and edits their config for you — non-destructively, preserving
94
+ every other MCP server you already had configured. A `.bak` is written
95
+ next to each file the first time it's touched.
96
+
97
+ After the installer finishes, **restart your MCP client** and try:
98
+
99
+ ```
100
+ "Crea cuenta en Kaax y guíame paso a paso"
101
+ ```
102
+
103
+ For scripted / CI use, skip the prompts:
104
+
105
+ ```bash
106
+ npx -y kaax-mcp init --yes
107
+ ```
96
108
 
97
109
  ## Configure
98
110
 
@@ -108,52 +120,30 @@ The build emits a runnable `dist/index.js` you can invoke directly via
108
120
  binds it to the session. Save the key from the tool output so you don't
109
121
  have to onboard again next time.
110
122
 
111
- ### Claude Desktop
123
+ ### Manual config (if you'd rather skip the installer)
112
124
 
113
- Edit `~/Library/Application Support/Claude/claude_desktop_config.json` on
114
- macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows:
125
+ Paste this block into your MCP client's config and restart:
115
126
 
116
127
  ```json
117
128
  {
118
129
  "mcpServers": {
119
130
  "kaax": {
120
- "command": "node",
121
- "args": ["C:/path/to/Kaax-LandingPage/mcp/dist/index.js"],
131
+ "command": "npx",
132
+ "args": ["-y", "kaax-mcp"],
122
133
  "env": {
123
- "KAAX_API_KEY": "your_api_key_here"
134
+ "KAAX_API_KEY": "",
135
+ "KAAX_LOCALE": "es"
124
136
  }
125
137
  }
126
138
  }
127
139
  }
128
140
  ```
129
141
 
130
- Restart Claude Desktop. The Kaax tools appear in the tool picker.
131
-
132
- ### Claude Code
133
-
134
- Add to `.mcp.json` at the root of any project (or `~/.claude/mcp.json` for
135
- all projects):
136
-
137
- ```json
138
- {
139
- "mcpServers": {
140
- "kaax": {
141
- "command": "node",
142
- "args": ["/absolute/path/to/Kaax-LandingPage/mcp/dist/index.js"],
143
- "env": { "KAAX_API_KEY": "your_api_key_here" }
144
- }
145
- }
146
- }
147
- ```
148
-
149
- ### Cursor
150
-
151
- `Settings → MCP → Add new MCP server`. Use the same `command` / `args` /
152
- `env` shape as above.
153
-
154
- ### Windsurf
155
-
156
- `Settings → Cascade → MCP Servers → Add new`. Same payload.
142
+ Config file locations:
143
+ - **Claude Desktop**: `%APPDATA%\Claude\claude_desktop_config.json` (Windows) · `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
144
+ - **Claude Code**: `~/.claude.json` (global) or `.mcp.json` (project root)
145
+ - **Cursor**: `~/.cursor/mcp.json`
146
+ - **Windsurf**: `~/.codeium/windsurf/mcp_config.json`
157
147
 
158
148
  ### Zed
159
149
 
@@ -163,8 +153,8 @@ Add to `~/.config/zed/settings.json`:
163
153
  {
164
154
  "context_servers": {
165
155
  "kaax": {
166
- "command": { "path": "node", "args": ["…/mcp/dist/index.js"] },
167
- "env": { "KAAX_API_KEY": "your_api_key_here" }
156
+ "command": { "path": "npx", "args": ["-y", "kaax-mcp"] },
157
+ "env": { "KAAX_LOCALE": "es" }
168
158
  }
169
159
  }
170
160
  }
@@ -229,30 +219,6 @@ or the short version below:
229
219
  - Shapefile conversion is local file I/O — your .shp never leaves your
230
220
  machine.
231
221
 
232
- ## Develop
233
-
234
- ```bash
235
- npm run dev # tsx watch on src/index.ts
236
- npm run build # tsc → dist/
237
- ```
238
-
239
- Type-check only: `npx tsc --noEmit`.
240
-
241
- ## Architecture
242
-
243
- ```
244
- mcp/src/
245
- ├── index.ts stdio bootstrap — wires tools, resources, prompts
246
- ├── client.ts HTTP wrapper + standalone onboarding helpers
247
- ├── tools.ts 19 callable tools
248
- ├── resources.ts 7 markdown docs served as MCP resources
249
- ├── prompts.ts 5 guided conversation starters
250
- ├── spatial.ts Haversine, KML centroid, cosine, density aggregation
251
- ├── convert.ts shapefile → KML in pure JS (no GDAL)
252
- ├── platform.ts openBrowser + streaming file download (no extra deps)
253
- └── types.ts shared types for v0, v2 and landing shapes
254
- ```
255
-
256
222
  ## Performance & resource use
257
223
 
258
224
  The MCP is engineered to stay light:
@@ -269,6 +235,11 @@ The MCP is engineered to stay light:
269
235
  - **Detached child processes** — `openBrowser` spawns + `unref`s the
270
236
  browser so the MCP exits cleanly even if you leave the browser open.
271
237
 
238
+ ## Support
239
+
240
+ - Email: support@kaax-agritech.com
241
+ - Website: https://www.kaax-agritech.com
242
+
272
243
  ## License
273
244
 
274
- MIT — see [LICENSE](../LICENSE).
245
+ MIT.
package/dist/index.d.ts CHANGED
@@ -1,16 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Kaax MCP server entry point.
3
+ * Kaax MCP entry point — bifurcates between server mode and CLI mode based
4
+ * on the first positional argument:
4
5
  *
5
- * Starts a stdio-transport MCP server that exposes the Kaax API plus a
6
- * handful of agent-friendly heuristics (tag suggestions, configuration
7
- * presets, peer-averaged configs, similarity search, shapefile conversion).
6
+ * `npx -y kaax-mcp` → boots the stdio MCP server (the normal
7
+ * runtime path that Claude Desktop /
8
+ * Cursor / Windsurf use).
9
+ * `npx -y kaax-mcp init` → runs the interactive installer that
10
+ * edits MCP client config files so the
11
+ * user never has to paste JSON.
12
+ * `npx -y kaax-mcp init --yes` → same, no prompts (scripted use).
13
+ * `npx -y kaax-mcp --help` → quick usage.
8
14
  *
9
- * Configuration:
10
- * • KAAX_API_KEY (required) — issued at /dashboard/api-manage.
15
+ * Server-mode env:
16
+ * • KAAX_API_KEY (optional) — issued at /dashboard/api-manage. Without
17
+ * it the MCP runs in onboarding mode and the
18
+ * agent walks the user through signup.
11
19
  * • KAAX_BASE_URL (optional) — defaults to https://www.kaax-agritech.com.
20
+ * • KAAX_LOCALE (optional) — "es" (default) or "en".
12
21
  *
13
- * The server logs to stderr only — the LLM never sees logs, only tool
14
- * outputs.
22
+ * stderr only for logs — the LLM never sees them, only tool outputs.
15
23
  */
16
24
  export {};
package/dist/index.js CHANGED
@@ -1,17 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Kaax MCP server entry point.
3
+ * Kaax MCP entry point — bifurcates between server mode and CLI mode based
4
+ * on the first positional argument:
4
5
  *
5
- * Starts a stdio-transport MCP server that exposes the Kaax API plus a
6
- * handful of agent-friendly heuristics (tag suggestions, configuration
7
- * presets, peer-averaged configs, similarity search, shapefile conversion).
6
+ * `npx -y kaax-mcp` → boots the stdio MCP server (the normal
7
+ * runtime path that Claude Desktop /
8
+ * Cursor / Windsurf use).
9
+ * `npx -y kaax-mcp init` → runs the interactive installer that
10
+ * edits MCP client config files so the
11
+ * user never has to paste JSON.
12
+ * `npx -y kaax-mcp init --yes` → same, no prompts (scripted use).
13
+ * `npx -y kaax-mcp --help` → quick usage.
8
14
  *
9
- * Configuration:
10
- * • KAAX_API_KEY (required) — issued at /dashboard/api-manage.
15
+ * Server-mode env:
16
+ * • KAAX_API_KEY (optional) — issued at /dashboard/api-manage. Without
17
+ * it the MCP runs in onboarding mode and the
18
+ * agent walks the user through signup.
11
19
  * • KAAX_BASE_URL (optional) — defaults to https://www.kaax-agritech.com.
20
+ * • KAAX_LOCALE (optional) — "es" (default) or "en".
12
21
  *
13
- * The server logs to stderr only — the LLM never sees logs, only tool
14
- * outputs.
22
+ * stderr only for logs — the LLM never sees them, only tool outputs.
15
23
  */
16
24
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
17
25
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
@@ -20,13 +28,54 @@ import { KaaxClient } from "./client.js";
20
28
  import { buildTools } from "./tools.js";
21
29
  import { buildResources } from "./resources.js";
22
30
  import { buildPrompts } from "./prompts.js";
31
+ import { runInit } from "./init.js";
23
32
  const SERVER_NAME = "kaax-mcp";
24
- const SERVER_VERSION = "0.1.0";
33
+ const SERVER_VERSION = "0.1.2";
25
34
  function bail(msg) {
26
35
  // stderr only — MCP clients pipe stdout for protocol traffic.
27
36
  process.stderr.write(`[${SERVER_NAME}] ${msg}\n`);
28
37
  process.exit(1);
29
38
  }
39
+ function printHelp() {
40
+ process.stdout.write([
41
+ "kaax-mcp — MCP server for Kaax (agritech AI platform).",
42
+ "",
43
+ "Usage:",
44
+ " npx -y kaax-mcp Start the MCP server (stdio transport).",
45
+ " npx -y kaax-mcp init Interactive installer — adds Kaax to your",
46
+ " MCP clients (Claude Desktop, Claude Code,",
47
+ " Cursor, Windsurf) so you never paste JSON.",
48
+ " npx -y kaax-mcp init --yes Same, no prompts.",
49
+ " npx -y kaax-mcp --help This help.",
50
+ "",
51
+ "Environment:",
52
+ " KAAX_API_KEY apiKey from /dashboard/api-manage. Optional — without it,",
53
+ " the MCP runs in onboarding mode.",
54
+ " KAAX_BASE_URL Override the Kaax server URL (default: production).",
55
+ " KAAX_LOCALE 'es' (default) or 'en' for user-facing messages.",
56
+ "",
57
+ "Docs: https://github.com/Ahau-x/Kaax-LandingPage/tree/main/mcp",
58
+ "",
59
+ ].join("\n"));
60
+ }
61
+ async function dispatch() {
62
+ const args = process.argv.slice(2);
63
+ const cmd = args[0];
64
+ if (cmd === "--help" || cmd === "-h" || cmd === "help") {
65
+ printHelp();
66
+ return;
67
+ }
68
+ if (cmd === "init") {
69
+ const yes = args.includes("--yes") || args.includes("-y");
70
+ await runInit({ yes });
71
+ return;
72
+ }
73
+ if (cmd && !cmd.startsWith("-")) {
74
+ process.stderr.write(`[${SERVER_NAME}] Unknown command: ${cmd}. Run \`kaax-mcp --help\`.\n`);
75
+ process.exit(2);
76
+ }
77
+ await main();
78
+ }
30
79
  async function main() {
31
80
  // KAAX_API_KEY is OPTIONAL. The MCP must be able to boot without it so a
32
81
  // brand-new user can run `kaax_start_onboarding` to provision an account
@@ -100,7 +149,7 @@ async function main() {
100
149
  const keyState = client.hasApiKey() ? "configured" : "missing (onboarding mode)";
101
150
  process.stderr.write(`[${SERVER_NAME}] v${SERVER_VERSION} ready · tools=${tools.length} resources=${resources.length} prompts=${prompts.length} · apiKey=${keyState}\n`);
102
151
  }
103
- main().catch((err) => {
152
+ dispatch().catch((err) => {
104
153
  bail(`fatal: ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
105
154
  });
106
155
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/init.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `kaax-mcp init` — interactive installer.
3
+ *
4
+ * The whole point: a brand-new user runs ONE command in their terminal
5
+ *
6
+ * npx -y kaax-mcp init
7
+ *
8
+ * and walks away with Kaax registered in every MCP-aware agent they have
9
+ * installed locally. No JSON copying, no path-hunting.
10
+ *
11
+ * Design:
12
+ * - We probe well-known config paths per client (Claude Desktop, Claude
13
+ * Code, Cursor, Windsurf, Zed). Anything that exists is offered to
14
+ * the user; anything that does not is silently skipped.
15
+ * - Edits are **non-destructive**: we read the existing JSON, splice
16
+ * our `kaax` entry into `mcpServers`, and write it back preserving
17
+ * every other server the user already had configured.
18
+ * - We back the file up to `<config>.bak` before the first write, so
19
+ * the user can revert with a simple rename.
20
+ * - We never store the apiKey — only env scaffolding. The user fills
21
+ * it in later, or starts in onboarding mode.
22
+ *
23
+ * Output is in the locale chosen by KAAX_LOCALE (default 'es').
24
+ */
25
+ export declare function runInit(opts?: {
26
+ yes?: boolean;
27
+ }): Promise<void>;
package/dist/init.js ADDED
@@ -0,0 +1,228 @@
1
+ /**
2
+ * `kaax-mcp init` — interactive installer.
3
+ *
4
+ * The whole point: a brand-new user runs ONE command in their terminal
5
+ *
6
+ * npx -y kaax-mcp init
7
+ *
8
+ * and walks away with Kaax registered in every MCP-aware agent they have
9
+ * installed locally. No JSON copying, no path-hunting.
10
+ *
11
+ * Design:
12
+ * - We probe well-known config paths per client (Claude Desktop, Claude
13
+ * Code, Cursor, Windsurf, Zed). Anything that exists is offered to
14
+ * the user; anything that does not is silently skipped.
15
+ * - Edits are **non-destructive**: we read the existing JSON, splice
16
+ * our `kaax` entry into `mcpServers`, and write it back preserving
17
+ * every other server the user already had configured.
18
+ * - We back the file up to `<config>.bak` before the first write, so
19
+ * the user can revert with a simple rename.
20
+ * - We never store the apiKey — only env scaffolding. The user fills
21
+ * it in later, or starts in onboarding mode.
22
+ *
23
+ * Output is in the locale chosen by KAAX_LOCALE (default 'es').
24
+ */
25
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync } from "fs";
26
+ import { homedir, platform } from "os";
27
+ import { dirname, join } from "path";
28
+ import { createInterface } from "readline/promises";
29
+ import { stdin, stdout } from "process";
30
+ import { getLocale } from "./i18n.js";
31
+ const KAAX_ENTRY = {
32
+ command: "npx",
33
+ args: ["-y", "kaax-mcp"],
34
+ env: {
35
+ // Placeholder so the user notices it and fills it in. Empty string is
36
+ // ignored by the server — it boots in onboarding mode just fine.
37
+ KAAX_API_KEY: "",
38
+ KAAX_LOCALE: "es",
39
+ },
40
+ };
41
+ function home() {
42
+ return process.env.HOME || process.env.USERPROFILE || homedir();
43
+ }
44
+ /**
45
+ * Resolve well-known MCP client config paths for the current OS. Returns
46
+ * one entry per client even if its file doesn't exist yet — we'll create
47
+ * the file on write, as long as its parent directory exists or we can
48
+ * make it.
49
+ */
50
+ function detectTargets() {
51
+ const os = platform();
52
+ const h = home();
53
+ const targets = [];
54
+ // Claude Desktop
55
+ if (os === "win32") {
56
+ targets.push({
57
+ name: "Claude Desktop",
58
+ configPath: join(process.env.APPDATA || join(h, "AppData", "Roaming"), "Claude", "claude_desktop_config.json"),
59
+ });
60
+ }
61
+ else if (os === "darwin") {
62
+ targets.push({
63
+ name: "Claude Desktop",
64
+ configPath: join(h, "Library", "Application Support", "Claude", "claude_desktop_config.json"),
65
+ });
66
+ }
67
+ else {
68
+ targets.push({
69
+ name: "Claude Desktop",
70
+ configPath: join(h, ".config", "Claude", "claude_desktop_config.json"),
71
+ });
72
+ }
73
+ // Claude Code (CLI)
74
+ targets.push({
75
+ name: "Claude Code",
76
+ configPath: join(h, ".claude.json"),
77
+ });
78
+ // Cursor
79
+ targets.push({
80
+ name: "Cursor",
81
+ configPath: join(h, ".cursor", "mcp.json"),
82
+ });
83
+ // Windsurf
84
+ targets.push({
85
+ name: "Windsurf",
86
+ configPath: join(h, ".codeium", "windsurf", "mcp_config.json"),
87
+ });
88
+ return targets.map((t) => ({ ...t, exists: existsSync(t.configPath) }));
89
+ }
90
+ function readConfig(path) {
91
+ if (!existsSync(path))
92
+ return {};
93
+ try {
94
+ const raw = readFileSync(path, "utf8");
95
+ if (!raw.trim())
96
+ return {};
97
+ return JSON.parse(raw);
98
+ }
99
+ catch {
100
+ // Corrupt JSON — bail rather than overwriting.
101
+ throw new Error(`Could not parse ${path}. Fix the file by hand and re-run \`npx -y kaax-mcp init\`.`);
102
+ }
103
+ }
104
+ function writeConfig(path, config) {
105
+ mkdirSync(dirname(path), { recursive: true });
106
+ writeFileSync(path, JSON.stringify(config, null, 2) + "\n", "utf8");
107
+ }
108
+ function backupOnce(path) {
109
+ if (!existsSync(path))
110
+ return;
111
+ const bak = path + ".bak";
112
+ if (existsSync(bak))
113
+ return; // never clobber an existing backup
114
+ copyFileSync(path, bak);
115
+ }
116
+ function applyKaaxEntry(config) {
117
+ config.mcpServers ||= {};
118
+ const existing = config.mcpServers["kaax"];
119
+ config.mcpServers["kaax"] = KAAX_ENTRY;
120
+ return { added: !existing, replaced: !!existing };
121
+ }
122
+ const STRINGS = {
123
+ es: {
124
+ banner: "\n🌱 Kaax MCP installer\n" +
125
+ " Conecta Kaax a tu agente (Claude Desktop, Claude Code, Cursor, Windsurf).\n",
126
+ noTargets: "No detecté ningún cliente MCP instalado. Instalá Claude Desktop, Claude Code, Cursor o Windsurf y volvé a correr este comando.",
127
+ found: (name, path) => ` ✓ Encontrado: ${name} → ${path}`,
128
+ notFound: (name) => ` · No encontrado: ${name} (lo creo igual si confirmás)`,
129
+ promptInstall: (name) => `\n¿Agregar Kaax MCP a ${name}? [Y/n]: `,
130
+ installed: (name, replaced) => replaced ? ` ✅ Actualizado en ${name}` : ` ✅ Agregado a ${name}`,
131
+ skipped: (name) => ` ⏭️ Saltado: ${name}`,
132
+ failed: (name, err) => ` ❌ Falló en ${name}: ${err}`,
133
+ done: "\n🎉 ¡Listo! Reiniciá tu cliente para cargar el MCP.",
134
+ tryThese: "\nProbá pedirle a tu agente:",
135
+ examples: [
136
+ ' "Crea cuenta en Kaax y guíame paso a paso"',
137
+ ' "Sugerime tags para una parcela de caña en Escuintla"',
138
+ ' "Convertí este shapefile a KML: C:\\path\\a\\parcela.shp"',
139
+ ],
140
+ apiKeyHint: "\nℹ️ Si ya tenés un apiKey de Kaax (Pro), pegalo en la env `KAAX_API_KEY`\n del bloque kaax dentro de cada config. Sin él el MCP arranca en modo\n onboarding y te ayuda a crear cuenta.",
141
+ yes: ["y", "yes", "s", "si", "sí"],
142
+ no: ["n", "no"],
143
+ },
144
+ en: {
145
+ banner: "\n🌱 Kaax MCP installer\n" +
146
+ " Connect Kaax to your agent (Claude Desktop, Claude Code, Cursor, Windsurf).\n",
147
+ noTargets: "Did not detect any MCP client. Install Claude Desktop, Claude Code, Cursor or Windsurf and re-run.",
148
+ found: (name, path) => ` ✓ Found: ${name} → ${path}`,
149
+ notFound: (name) => ` · Not found: ${name} (I'll create it if you confirm)`,
150
+ promptInstall: (name) => `\nAdd Kaax MCP to ${name}? [Y/n]: `,
151
+ installed: (name, replaced) => replaced ? ` ✅ Updated in ${name}` : ` ✅ Added to ${name}`,
152
+ skipped: (name) => ` ⏭️ Skipped: ${name}`,
153
+ failed: (name, err) => ` ❌ Failed on ${name}: ${err}`,
154
+ done: "\n🎉 Done! Restart your client to load the MCP.",
155
+ tryThese: "\nTry asking your agent:",
156
+ examples: [
157
+ ' "Create a Kaax account and guide me step by step"',
158
+ ' "Suggest tags for a sugarcane parcel in Escuintla"',
159
+ ' "Convert this shapefile to KML: C:\\path\\to\\parcel.shp"',
160
+ ],
161
+ apiKeyHint: "\nℹ️ If you already have a Kaax apiKey (Pro), paste it into the\n `KAAX_API_KEY` env of the kaax block in each config. Without it the\n MCP boots in onboarding mode and helps you create an account.",
162
+ yes: ["y", "yes"],
163
+ no: ["n", "no"],
164
+ },
165
+ };
166
+ // ─────────────────────────────────────────────────────────────────────────
167
+ // Main
168
+ // ─────────────────────────────────────────────────────────────────────────
169
+ export async function runInit(opts = {}) {
170
+ const locale = getLocale();
171
+ const s = STRINGS[locale];
172
+ // stdout is consumed by the MCP transport when running as a server. In
173
+ // CLI mode we write to stdout normally. The two never overlap because
174
+ // `runInit` is only invoked via `kaax-mcp init`, never alongside the
175
+ // stdio transport.
176
+ process.stdout.write(s.banner);
177
+ const targets = detectTargets();
178
+ const reachable = targets.filter((t) => t.exists);
179
+ if (reachable.length === 0) {
180
+ process.stdout.write("\n" + s.noTargets + "\n");
181
+ return;
182
+ }
183
+ for (const t of targets) {
184
+ if (t.exists) {
185
+ process.stdout.write("\n" + s.found(t.name, t.configPath));
186
+ }
187
+ else {
188
+ // Skip non-existent clients in non-interactive mode; never create
189
+ // bogus configs for tools the user has not installed.
190
+ continue;
191
+ }
192
+ }
193
+ const rl = createInterface({ input: stdin, output: stdout });
194
+ try {
195
+ for (const t of reachable) {
196
+ let go = opts.yes;
197
+ if (!go) {
198
+ const answer = (await rl.question(s.promptInstall(t.name))).trim().toLowerCase();
199
+ // Default = yes (empty answer).
200
+ go = answer === "" || s.yes.includes(answer);
201
+ if (!go) {
202
+ process.stdout.write(s.skipped(t.name) + "\n");
203
+ continue;
204
+ }
205
+ }
206
+ try {
207
+ backupOnce(t.configPath);
208
+ const config = readConfig(t.configPath);
209
+ const { replaced } = applyKaaxEntry(config);
210
+ writeConfig(t.configPath, config);
211
+ process.stdout.write(s.installed(t.name, replaced) + "\n");
212
+ }
213
+ catch (err) {
214
+ process.stdout.write(s.failed(t.name, err.message) + "\n");
215
+ }
216
+ }
217
+ }
218
+ finally {
219
+ rl.close();
220
+ }
221
+ process.stdout.write(s.done + "\n");
222
+ process.stdout.write(s.tryThese + "\n");
223
+ for (const example of s.examples) {
224
+ process.stdout.write(example + "\n");
225
+ }
226
+ process.stdout.write(s.apiKeyHint + "\n");
227
+ }
228
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kaax-mcp",
3
- "version": "0.1.0",
4
- "description": "MCP server for Kaax — lets any LLM agent (Claude, Cursor, Windsurf…) onboard new Kaax users, query analyses, suggest configurations, convert shapefiles to KML and guide downloads.",
3
+ "version": "0.1.2",
4
+ "description": "MCP server for Kaax — one-liner installer (`npx -y kaax-mcp init`) that wires Kaax into Claude Desktop, Claude Code, Cursor and Windsurf. Onboards new users, queries analyses, suggests configurations, converts shapefiles to KML and guides downloads.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "kaax-mcp": "./dist/index.js"
@@ -32,14 +32,9 @@
32
32
  ],
33
33
  "author": "Kaax · Ahau-x <support@kaax-agritech.com>",
34
34
  "license": "MIT",
35
- "homepage": "https://github.com/Ahau-x/Kaax-LandingPage/tree/main/mcp#readme",
36
- "repository": {
37
- "type": "git",
38
- "url": "git+https://github.com/Ahau-x/Kaax-LandingPage.git",
39
- "directory": "mcp"
40
- },
35
+ "homepage": "https://www.kaax-agritech.com",
41
36
  "bugs": {
42
- "url": "https://github.com/Ahau-x/Kaax-LandingPage/issues"
37
+ "email": "support@kaax-agritech.com"
43
38
  },
44
39
  "engines": {
45
40
  "node": ">=18.0.0"