@yugabytedb/meko-mcp 1.0.6 → 1.1.0
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 +189 -36
- package/assets/hooks-handlers/lib/capture.js +177 -78
- package/assets/hooks-handlers/lib/package.json +1 -0
- package/assets/hooks-handlers/test_single_conversation.sh +1 -1
- package/assets/skills/meko-mcp-tools/SKILL.md +167 -53
- package/assets/skills/meko-mcp-tools/references/_sections.md +1 -1
- package/assets/skills/meko-mcp-tools/references/tools-agent-id-conventions.md +84 -22
- package/assets/skills/meko-mcp-tools/references/tools-cookbook.md +89 -56
- package/assets/skills/meko-mcp-tools/references/tools-datapack-workflow.md +15 -7
- package/assets/skills/meko-mcp-tools/references/tools-known-limitations.md +17 -9
- package/assets/skills/meko-mcp-tools/references/tools-memory-vs-conversation.md +94 -5
- package/assets/skills/meko-mcp-tools/references/tools-overview.md +52 -37
- package/assets/skills/meko-mcp-tools/references/tools-rag-workflow.md +108 -37
- package/assets/skills/meko-mcp-tools/references/tools-scope-permissions.md +6 -10
- package/assets/skills/meko-mcp-tools/references/tools-troubleshooting.md +30 -18
- package/assets/skills/meko-mcp-tools/references/tools-user-id-conventions.md +55 -69
- package/bin/create-meko-setup.mjs +152 -26
- package/lib/clients/aliases.mjs +30 -0
- package/lib/clients/claude-code.mjs +384 -69
- package/lib/clients/claude-desktop.mjs +43 -8
- package/lib/clients/codex.mjs +977 -0
- package/lib/clients/common.mjs +142 -1
- package/lib/clients/cursor.mjs +73 -5
- package/lib/clients/index.mjs +2 -0
- package/lib/config.mjs +30 -0
- package/lib/detect.mjs +52 -44
- package/lib/installer.mjs +9 -2
- package/lib/mcp-transport.mjs +63 -4
- package/lib/migrate/adapters/memory-md.mjs +13 -6
- package/lib/migrate/datapack.mjs +167 -0
- package/lib/migrate/id.mjs +127 -9
- package/lib/migrate/mcp-client.mjs +1 -1
- package/lib/migrate/orchestrator.mjs +68 -10
- package/lib/migrate.mjs +346 -3
- package/lib/prompt.mjs +50 -76
- package/lib/validate.mjs +314 -10
- package/lib/version-check.mjs +178 -0
- package/package.json +2 -1
|
@@ -8,7 +8,14 @@ import {
|
|
|
8
8
|
readJsonFile,
|
|
9
9
|
removeKeys,
|
|
10
10
|
} from "../config.mjs";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
getInstallerVersion,
|
|
13
|
+
getRepoRoot,
|
|
14
|
+
markerIsStale,
|
|
15
|
+
readInstallerMarker,
|
|
16
|
+
run,
|
|
17
|
+
writeInstallerMarker,
|
|
18
|
+
} from "./common.mjs";
|
|
12
19
|
|
|
13
20
|
/**
|
|
14
21
|
* Claude Desktop adapter.
|
|
@@ -24,13 +31,13 @@ import { getRepoRoot, run } from "./common.mjs";
|
|
|
24
31
|
* "meko": {
|
|
25
32
|
* "command": "npx",
|
|
26
33
|
* "args": ["-y", "mcp-remote", "<url>", "--transport", "http-only",
|
|
27
|
-
* "--header", "
|
|
34
|
+
* "--header", "Authorization:Bearer ${MEKO_API_KEY}"],
|
|
28
35
|
* "env": { "MEKO_API_KEY": "<key>" }
|
|
29
36
|
* }
|
|
30
37
|
*
|
|
31
38
|
* The header uses the `${ENV_VAR}` interpolation form (documented by
|
|
32
|
-
* mcp-remote) with no space around the colon
|
|
33
|
-
* space-containing `--header` args.
|
|
39
|
+
* mcp-remote) with no space around the colon after the header name —
|
|
40
|
+
* some clients mis-parse space-containing `--header` args.
|
|
34
41
|
*
|
|
35
42
|
* installSkills() runs skills/scripts/package-desktop-skill.sh to build the
|
|
36
43
|
* .skill bundle and prints import instructions. Desktop has no programmatic
|
|
@@ -122,10 +129,17 @@ export function createClaudeDesktopAdapter(options = {}) {
|
|
|
122
129
|
const repoRoot = repoRootResolver();
|
|
123
130
|
const script = join(repoRoot, "skills", "scripts", "package-desktop-skill.sh");
|
|
124
131
|
const output = join(repoRoot, "skills", "meko-mcp-tools-desktop.skill");
|
|
132
|
+
// The .skill output is a ZIP file, so we can't drop a marker inside it.
|
|
133
|
+
// Stamp the marker in the parent dir instead — it signals which
|
|
134
|
+
// installer version produced the bundle sitting alongside it, so a
|
|
135
|
+
// re-run can tell whether the existing .skill is stale.
|
|
136
|
+
const markerDir = dirname(output);
|
|
137
|
+
const currentVersion = getInstallerVersion();
|
|
125
138
|
|
|
126
139
|
if (dryRun) {
|
|
127
140
|
log.dim(` Would run: bash ${script}`);
|
|
128
141
|
log.dim(` Would produce: ${output}`);
|
|
142
|
+
log.dim(` Would write .meko-installer marker (version=${currentVersion}) in ${markerDir}`);
|
|
129
143
|
return { marketplace: "skipped", skills: "dry-run", output };
|
|
130
144
|
}
|
|
131
145
|
|
|
@@ -137,6 +151,17 @@ export function createClaudeDesktopAdapter(options = {}) {
|
|
|
137
151
|
return { marketplace: "skipped", skills: "script-missing" };
|
|
138
152
|
}
|
|
139
153
|
|
|
154
|
+
// If a previous build's marker is stale, warn visibly — the user has to
|
|
155
|
+
// re-drag the .skill into Claude Desktop's Extensions panel; we can't do
|
|
156
|
+
// that step for them. Keep rebuilding either way.
|
|
157
|
+
const existingMarker = readInstallerMarker(markerDir);
|
|
158
|
+
if (existsSync(output) && existingMarker && markerIsStale(markerDir, currentVersion)) {
|
|
159
|
+
log.warn(
|
|
160
|
+
`Claude Desktop .skill bundle was produced by installer ${existingMarker.version}. ` +
|
|
161
|
+
`Rebuilding — you will need to re-drag it into Claude Desktop > Settings > Extensions.`,
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
140
165
|
try {
|
|
141
166
|
packageRunner(script);
|
|
142
167
|
} catch (err) {
|
|
@@ -149,6 +174,15 @@ export function createClaudeDesktopAdapter(options = {}) {
|
|
|
149
174
|
return { marketplace: "skipped", skills: "error" };
|
|
150
175
|
}
|
|
151
176
|
|
|
177
|
+
// Stamp the marker after a successful build so the next run knows what
|
|
178
|
+
// version the sibling .skill was produced by.
|
|
179
|
+
try {
|
|
180
|
+
writeInstallerMarker(markerDir);
|
|
181
|
+
} catch (err) {
|
|
182
|
+
// Marker is best-effort — a failure here doesn't invalidate the build.
|
|
183
|
+
log.warn(`Could not write .skill installer marker: ${err.message}`);
|
|
184
|
+
}
|
|
185
|
+
|
|
152
186
|
log.info(`Built Meko skill bundle: ${output}`);
|
|
153
187
|
log.info(
|
|
154
188
|
"Install it in Claude Desktop: Settings > Extensions > Import skill, " +
|
|
@@ -228,10 +262,11 @@ export function buildMcpRemoteEntry({ url, apiKey }) {
|
|
|
228
262
|
const args = ["-y", "mcp-remote", url, "--transport", "http-only"];
|
|
229
263
|
const entry = { command: "npx", args };
|
|
230
264
|
if (apiKey) {
|
|
231
|
-
// `
|
|
232
|
-
// docs call out a spacing bug in some
|
|
233
|
-
//
|
|
234
|
-
|
|
265
|
+
// `Authorization:Bearer ${MEKO_API_KEY}` with no space around the colon
|
|
266
|
+
// after the header name — mcp-remote docs call out a spacing bug in some
|
|
267
|
+
// clients' arg parsing. The space between `Bearer` and the token value
|
|
268
|
+
// is part of the header value and is required by RFC 6750.
|
|
269
|
+
args.push("--header", "Authorization:Bearer ${MEKO_API_KEY}");
|
|
235
270
|
entry.env = { MEKO_API_KEY: apiKey };
|
|
236
271
|
}
|
|
237
272
|
return entry;
|