kaax-mcp 0.1.0 → 0.1.1

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/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.1";
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.1",
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"