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 +38 -67
- package/dist/index.d.ts +16 -8
- package/dist/index.js +59 -10
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +27 -0
- package/dist/init.js +228 -0
- package/dist/init.js.map +1 -0
- package/package.json +4 -9
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
|
-
|
|
89
|
-
cd Kaax-LandingPage/mcp
|
|
90
|
-
npm install
|
|
91
|
-
npm run build
|
|
88
|
+
npx -y kaax-mcp init
|
|
92
89
|
```
|
|
93
90
|
|
|
94
|
-
The
|
|
95
|
-
|
|
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
|
-
###
|
|
123
|
+
### Manual config (if you'd rather skip the installer)
|
|
112
124
|
|
|
113
|
-
|
|
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": "
|
|
121
|
-
"args": ["
|
|
131
|
+
"command": "npx",
|
|
132
|
+
"args": ["-y", "kaax-mcp"],
|
|
122
133
|
"env": {
|
|
123
|
-
"KAAX_API_KEY": "
|
|
134
|
+
"KAAX_API_KEY": "",
|
|
135
|
+
"KAAX_LOCALE": "es"
|
|
124
136
|
}
|
|
125
137
|
}
|
|
126
138
|
}
|
|
127
139
|
}
|
|
128
140
|
```
|
|
129
141
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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": "
|
|
167
|
-
"env": { "
|
|
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
|
|
245
|
+
MIT.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Kaax MCP server
|
|
3
|
+
* Kaax MCP entry point — bifurcates between server mode and CLI mode based
|
|
4
|
+
* on the first positional argument:
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
10
|
-
* • KAAX_API_KEY (
|
|
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
|
-
*
|
|
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
|
|
3
|
+
* Kaax MCP entry point — bifurcates between server mode and CLI mode based
|
|
4
|
+
* on the first positional argument:
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
10
|
-
* • KAAX_API_KEY (
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
|
|
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":";AACA
|
|
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
|
package/dist/init.js.map
ADDED
|
@@ -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.
|
|
4
|
-
"description": "MCP server for Kaax —
|
|
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://
|
|
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
|
-
"
|
|
37
|
+
"email": "support@kaax-agritech.com"
|
|
43
38
|
},
|
|
44
39
|
"engines": {
|
|
45
40
|
"node": ">=18.0.0"
|