db-mcp 1.0.2 → 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/.gitattributes +2 -0
- package/LICENSE +1 -1
- package/README.md +244 -518
- package/dist/chunk-4IA3DB5C.js +135 -0
- package/dist/chunk-AOUL5SHS.js +930 -0
- package/dist/chunk-DWJXQEFA.js +13759 -0
- package/dist/chunk-DZQLDEQS.js +879 -0
- package/dist/chunk-S5IDDSSB.js +74 -0
- package/dist/chunk-Z2GFQU3G.js +363 -0
- package/dist/cli.d.ts +0 -7
- package/dist/cli.js +227 -183
- package/dist/http-VSB7DBJR.js +1541 -0
- package/dist/index.d.ts +842 -10
- package/dist/index.js +5 -17
- package/dist/sqlite-VHBA4ABV.js +600 -0
- package/dist/sqlite-native-D2LH5ZT7.js +2498 -0
- package/dist/worker-script.d.ts +2 -0
- package/dist/worker-script.js +126 -0
- package/package.json +26 -16
- package/playwright.config.ts +101 -0
- package/scripts/generate-server-instructions.ts +111 -0
- package/server.json +5 -6
- package/test-server/README.md +118 -0
- package/test-server/code-map.md +409 -0
- package/test-server/fixtures/sample.csv +6 -0
- package/test-server/reset-database.ps1 +373 -0
- package/test-server/sample.csv +11 -0
- package/test-server/test-agent-experience.md +243 -0
- package/test-server/test-database.sql +388 -0
- package/test-server/test-group-tools.md +861 -0
- package/test-server/test-help-resources.mjs +238 -0
- package/test-server/test-preflight.md +53 -0
- package/test-server/test-prompts.md +354 -0
- package/test-server/test-resources.md +245 -0
- package/test-server/test-tool-annotations.mjs +157 -0
- package/test-server/test-tools-advanced-1.md +517 -0
- package/test-server/test-tools-advanced-2.md +487 -0
- package/test-server/test-tools-codemode.md +629 -0
- package/test-server/test-tools.md +176 -0
- package/test-server/tool-reference.md +236 -0
- package/tsconfig.test.json +9 -0
- package/dist/adapters/DatabaseAdapter.d.ts +0 -141
- package/dist/adapters/DatabaseAdapter.d.ts.map +0 -1
- package/dist/adapters/DatabaseAdapter.js +0 -131
- package/dist/adapters/DatabaseAdapter.js.map +0 -1
- package/dist/adapters/sqlite/SchemaManager.d.ts +0 -58
- package/dist/adapters/sqlite/SchemaManager.d.ts.map +0 -1
- package/dist/adapters/sqlite/SchemaManager.js +0 -187
- package/dist/adapters/sqlite/SchemaManager.js.map +0 -1
- package/dist/adapters/sqlite/SqliteAdapter.d.ts +0 -161
- package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +0 -1
- package/dist/adapters/sqlite/SqliteAdapter.js +0 -741
- package/dist/adapters/sqlite/SqliteAdapter.js.map +0 -1
- package/dist/adapters/sqlite/index.d.ts +0 -9
- package/dist/adapters/sqlite/index.d.ts.map +0 -1
- package/dist/adapters/sqlite/index.js +0 -8
- package/dist/adapters/sqlite/index.js.map +0 -1
- package/dist/adapters/sqlite/json-utils.d.ts +0 -100
- package/dist/adapters/sqlite/json-utils.d.ts.map +0 -1
- package/dist/adapters/sqlite/json-utils.js +0 -274
- package/dist/adapters/sqlite/json-utils.js.map +0 -1
- package/dist/adapters/sqlite/output-schemas.d.ts +0 -1187
- package/dist/adapters/sqlite/output-schemas.d.ts.map +0 -1
- package/dist/adapters/sqlite/output-schemas.js +0 -1337
- package/dist/adapters/sqlite/output-schemas.js.map +0 -1
- package/dist/adapters/sqlite/prompts.d.ts +0 -13
- package/dist/adapters/sqlite/prompts.d.ts.map +0 -1
- package/dist/adapters/sqlite/prompts.js +0 -605
- package/dist/adapters/sqlite/prompts.js.map +0 -1
- package/dist/adapters/sqlite/resources.d.ts +0 -13
- package/dist/adapters/sqlite/resources.d.ts.map +0 -1
- package/dist/adapters/sqlite/resources.js +0 -251
- package/dist/adapters/sqlite/resources.js.map +0 -1
- package/dist/adapters/sqlite/tools/admin.d.ts +0 -14
- package/dist/adapters/sqlite/tools/admin.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/admin.js +0 -788
- package/dist/adapters/sqlite/tools/admin.js.map +0 -1
- package/dist/adapters/sqlite/tools/core.d.ts +0 -25
- package/dist/adapters/sqlite/tools/core.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/core.js +0 -359
- package/dist/adapters/sqlite/tools/core.js.map +0 -1
- package/dist/adapters/sqlite/tools/fts.d.ts +0 -13
- package/dist/adapters/sqlite/tools/fts.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/fts.js +0 -347
- package/dist/adapters/sqlite/tools/fts.js.map +0 -1
- package/dist/adapters/sqlite/tools/geo.d.ts +0 -14
- package/dist/adapters/sqlite/tools/geo.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/geo.js +0 -252
- package/dist/adapters/sqlite/tools/geo.js.map +0 -1
- package/dist/adapters/sqlite/tools/index.d.ts +0 -30
- package/dist/adapters/sqlite/tools/index.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/index.js +0 -61
- package/dist/adapters/sqlite/tools/index.js.map +0 -1
- package/dist/adapters/sqlite/tools/json-helpers.d.ts +0 -14
- package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/json-helpers.js +0 -477
- package/dist/adapters/sqlite/tools/json-helpers.js.map +0 -1
- package/dist/adapters/sqlite/tools/json-operations.d.ts +0 -14
- package/dist/adapters/sqlite/tools/json-operations.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/json-operations.js +0 -839
- package/dist/adapters/sqlite/tools/json-operations.js.map +0 -1
- package/dist/adapters/sqlite/tools/stats.d.ts +0 -15
- package/dist/adapters/sqlite/tools/stats.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/stats.js +0 -1219
- package/dist/adapters/sqlite/tools/stats.js.map +0 -1
- package/dist/adapters/sqlite/tools/text.d.ts +0 -14
- package/dist/adapters/sqlite/tools/text.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/text.js +0 -1141
- package/dist/adapters/sqlite/tools/text.js.map +0 -1
- package/dist/adapters/sqlite/tools/vector.d.ts +0 -14
- package/dist/adapters/sqlite/tools/vector.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/vector.js +0 -613
- package/dist/adapters/sqlite/tools/vector.js.map +0 -1
- package/dist/adapters/sqlite/tools/virtual.d.ts +0 -13
- package/dist/adapters/sqlite/tools/virtual.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/virtual.js +0 -930
- package/dist/adapters/sqlite/tools/virtual.js.map +0 -1
- package/dist/adapters/sqlite/types.d.ts +0 -207
- package/dist/adapters/sqlite/types.d.ts.map +0 -1
- package/dist/adapters/sqlite/types.js +0 -186
- package/dist/adapters/sqlite/types.js.map +0 -1
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +0 -163
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +0 -748
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +0 -1
- package/dist/adapters/sqlite-native/index.d.ts +0 -11
- package/dist/adapters/sqlite-native/index.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/index.js +0 -11
- package/dist/adapters/sqlite-native/index.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts +0 -19
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/spatialite.js +0 -628
- package/dist/adapters/sqlite-native/tools/spatialite.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/transactions.d.ts +0 -12
- package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/transactions.js +0 -255
- package/dist/adapters/sqlite-native/tools/transactions.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/window.d.ts +0 -12
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/window.js +0 -370
- package/dist/adapters/sqlite-native/tools/window.js.map +0 -1
- package/dist/auth/AuthorizationServerDiscovery.d.ts +0 -90
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +0 -1
- package/dist/auth/AuthorizationServerDiscovery.js +0 -204
- package/dist/auth/AuthorizationServerDiscovery.js.map +0 -1
- package/dist/auth/OAuthResourceServer.d.ts +0 -65
- package/dist/auth/OAuthResourceServer.d.ts.map +0 -1
- package/dist/auth/OAuthResourceServer.js +0 -121
- package/dist/auth/OAuthResourceServer.js.map +0 -1
- package/dist/auth/TokenValidator.d.ts +0 -60
- package/dist/auth/TokenValidator.d.ts.map +0 -1
- package/dist/auth/TokenValidator.js +0 -235
- package/dist/auth/TokenValidator.js.map +0 -1
- package/dist/auth/errors.d.ts +0 -74
- package/dist/auth/errors.d.ts.map +0 -1
- package/dist/auth/errors.js +0 -133
- package/dist/auth/errors.js.map +0 -1
- package/dist/auth/index.d.ts +0 -13
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -15
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -81
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -291
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/scopes.d.ts +0 -136
- package/dist/auth/scopes.d.ts.map +0 -1
- package/dist/auth/scopes.js +0 -349
- package/dist/auth/scopes.js.map +0 -1
- package/dist/auth/types.d.ts +0 -257
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -8
- package/dist/auth/types.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/constants/ServerInstructions.d.ts +0 -45
- package/dist/constants/ServerInstructions.d.ts.map +0 -1
- package/dist/constants/ServerInstructions.js +0 -356
- package/dist/constants/ServerInstructions.js.map +0 -1
- package/dist/filtering/ToolConstants.d.ts +0 -34
- package/dist/filtering/ToolConstants.d.ts.map +0 -1
- package/dist/filtering/ToolConstants.js +0 -174
- package/dist/filtering/ToolConstants.js.map +0 -1
- package/dist/filtering/ToolFilter.d.ts +0 -82
- package/dist/filtering/ToolFilter.d.ts.map +0 -1
- package/dist/filtering/ToolFilter.js +0 -296
- package/dist/filtering/ToolFilter.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/server/McpServer.d.ts +0 -61
- package/dist/server/McpServer.d.ts.map +0 -1
- package/dist/server/McpServer.js +0 -270
- package/dist/server/McpServer.js.map +0 -1
- package/dist/transports/http.d.ts +0 -134
- package/dist/transports/http.d.ts.map +0 -1
- package/dist/transports/http.js +0 -516
- package/dist/transports/http.js.map +0 -1
- package/dist/transports/index.d.ts +0 -5
- package/dist/transports/index.d.ts.map +0 -1
- package/dist/transports/index.js +0 -5
- package/dist/transports/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -380
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -68
- package/dist/types/index.js.map +0 -1
- package/dist/utils/annotations.d.ts +0 -44
- package/dist/utils/annotations.d.ts.map +0 -1
- package/dist/utils/annotations.js +0 -77
- package/dist/utils/annotations.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -155
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -329
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/identifiers.d.ts +0 -121
- package/dist/utils/identifiers.d.ts.map +0 -1
- package/dist/utils/identifiers.js +0 -319
- package/dist/utils/identifiers.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/insightsManager.d.ts +0 -39
- package/dist/utils/insightsManager.d.ts.map +0 -1
- package/dist/utils/insightsManager.js +0 -63
- package/dist/utils/insightsManager.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -189
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -394
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/progress-utils.d.ts +0 -54
- package/dist/utils/progress-utils.d.ts.map +0 -1
- package/dist/utils/progress-utils.js +0 -74
- package/dist/utils/progress-utils.js.map +0 -1
- package/dist/utils/resourceAnnotations.d.ts +0 -36
- package/dist/utils/resourceAnnotations.d.ts.map +0 -1
- package/dist/utils/resourceAnnotations.js +0 -57
- package/dist/utils/resourceAnnotations.js.map +0 -1
- package/dist/utils/where-clause.d.ts +0 -41
- package/dist/utils/where-clause.d.ts.map +0 -1
- package/dist/utils/where-clause.js +0 -116
- package/dist/utils/where-clause.js.map +0 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Test: Help Resources + Slim Instructions
|
|
3
|
+
*
|
|
4
|
+
* Starts the server with various --tool-filter configs and verifies:
|
|
5
|
+
* 1. Instructions are slim (~680 chars, within client limits)
|
|
6
|
+
* 2. sqlite://help resources are registered based on tool filter
|
|
7
|
+
* 3. Group-specific help resources are only registered for enabled groups
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* npm run build
|
|
11
|
+
* node test-server/test-help-resources.mjs
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { spawn } from "child_process";
|
|
15
|
+
|
|
16
|
+
const PROJECT_DIR = "C:\\Users\\chris\\Desktop\\db-mcp";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Start server, send initialize + resources/list, return results
|
|
20
|
+
*/
|
|
21
|
+
function testServer(args) {
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
const proc = spawn("node", ["dist/cli.js", ...args], {
|
|
24
|
+
cwd: PROJECT_DIR,
|
|
25
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
let buffer = "";
|
|
29
|
+
let instructions = "";
|
|
30
|
+
let resourceUris = [];
|
|
31
|
+
let gotInitialize = false;
|
|
32
|
+
|
|
33
|
+
proc.stdout.on("data", (chunk) => {
|
|
34
|
+
buffer += chunk.toString();
|
|
35
|
+
const lines = buffer.split("\n");
|
|
36
|
+
buffer = lines.pop(); // Keep incomplete line
|
|
37
|
+
|
|
38
|
+
for (const line of lines) {
|
|
39
|
+
const trimmed = line.trim();
|
|
40
|
+
if (!trimmed) continue;
|
|
41
|
+
try {
|
|
42
|
+
const msg = JSON.parse(trimmed);
|
|
43
|
+
|
|
44
|
+
// Response to initialize (id=1)
|
|
45
|
+
if (msg.id === 1 && msg.result) {
|
|
46
|
+
instructions =
|
|
47
|
+
msg.result?.serverInfo?.instructions ||
|
|
48
|
+
msg.result?.instructions ||
|
|
49
|
+
msg.result?.capabilities?.instructions ||
|
|
50
|
+
"";
|
|
51
|
+
gotInitialize = true;
|
|
52
|
+
|
|
53
|
+
// Send resources/list
|
|
54
|
+
proc.stdin.write(
|
|
55
|
+
JSON.stringify({
|
|
56
|
+
jsonrpc: "2.0",
|
|
57
|
+
id: 2,
|
|
58
|
+
method: "resources/list",
|
|
59
|
+
params: {},
|
|
60
|
+
}) + "\n",
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Response to resources/list (id=2)
|
|
65
|
+
if (msg.id === 2 && msg.result) {
|
|
66
|
+
const resources = msg.result.resources || [];
|
|
67
|
+
resourceUris = resources.map((r) => r.uri);
|
|
68
|
+
proc.kill();
|
|
69
|
+
resolve({
|
|
70
|
+
instructions,
|
|
71
|
+
instructionChars: instructions.length,
|
|
72
|
+
resourceUris,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
} catch {
|
|
76
|
+
// Not complete JSON yet
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
proc.stderr.on("data", () => {});
|
|
82
|
+
|
|
83
|
+
// Send initialize request
|
|
84
|
+
proc.stdin.write(
|
|
85
|
+
JSON.stringify({
|
|
86
|
+
jsonrpc: "2.0",
|
|
87
|
+
id: 1,
|
|
88
|
+
method: "initialize",
|
|
89
|
+
params: {
|
|
90
|
+
protocolVersion: "2025-03-26",
|
|
91
|
+
capabilities: {},
|
|
92
|
+
clientInfo: { name: "help-resource-test", version: "1.0" },
|
|
93
|
+
},
|
|
94
|
+
}) + "\n",
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
proc.kill();
|
|
99
|
+
reject(new Error(`Timeout for args: ${args.join(" ")}`));
|
|
100
|
+
}, 10000);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async function main() {
|
|
105
|
+
let allPassed = true;
|
|
106
|
+
|
|
107
|
+
// ── Test 1: Slim Instructions ──
|
|
108
|
+
console.log("=== Test 1: Slim Instructions ===\n");
|
|
109
|
+
|
|
110
|
+
const baseResult = await testServer([]);
|
|
111
|
+
console.log(` Instruction chars: ${baseResult.instructionChars}`);
|
|
112
|
+
console.log(
|
|
113
|
+
` Token estimate: ~${Math.round(baseResult.instructionChars / 4)}`,
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
const isSlim = baseResult.instructionChars < 1000;
|
|
117
|
+
console.log(` Under 1000 chars: ${isSlim ? "✅" : "❌"}`);
|
|
118
|
+
if (!isSlim) allPassed = false;
|
|
119
|
+
|
|
120
|
+
const hasHelpPointer = baseResult.instructions.includes("sqlite://help");
|
|
121
|
+
console.log(
|
|
122
|
+
` Contains sqlite://help pointer: ${hasHelpPointer ? "✅" : "❌"}`,
|
|
123
|
+
);
|
|
124
|
+
if (!hasHelpPointer) allPassed = false;
|
|
125
|
+
|
|
126
|
+
const noOldContent = !baseResult.instructions.includes("Critical Gotchas");
|
|
127
|
+
console.log(
|
|
128
|
+
` No old gotchas in instructions: ${noOldContent ? "✅" : "❌"}`,
|
|
129
|
+
);
|
|
130
|
+
if (!noOldContent) allPassed = false;
|
|
131
|
+
|
|
132
|
+
// ── Test 2: Core-only Filter ──
|
|
133
|
+
console.log("\n=== Test 2: Core-only Filter (--tool-filter core) ===\n");
|
|
134
|
+
|
|
135
|
+
const coreResult = await testServer(["--tool-filter", "core"]);
|
|
136
|
+
const coreHelpUris = coreResult.resourceUris.filter((u) =>
|
|
137
|
+
u.startsWith("sqlite://help"),
|
|
138
|
+
);
|
|
139
|
+
console.log(` Help resources: ${coreHelpUris.join(", ") || "(none)"}`);
|
|
140
|
+
|
|
141
|
+
const coreHasBaseHelp = coreHelpUris.includes("sqlite://help");
|
|
142
|
+
console.log(` Has sqlite://help: ${coreHasBaseHelp ? "✅" : "❌"}`);
|
|
143
|
+
if (!coreHasBaseHelp) allPassed = false;
|
|
144
|
+
|
|
145
|
+
const coreNoGroupHelp = coreHelpUris.length === 1;
|
|
146
|
+
console.log(
|
|
147
|
+
` No group-specific help: ${coreNoGroupHelp ? "✅" : "❌"} (count: ${coreHelpUris.length})`,
|
|
148
|
+
);
|
|
149
|
+
if (!coreNoGroupHelp) allPassed = false;
|
|
150
|
+
|
|
151
|
+
// ── Test 3: Stats Filter ──
|
|
152
|
+
console.log("\n=== Test 3: Stats Filter (--tool-filter stats) ===\n");
|
|
153
|
+
|
|
154
|
+
const statsResult = await testServer(["--tool-filter", "stats"]);
|
|
155
|
+
const statsHelpUris = statsResult.resourceUris.filter((u) =>
|
|
156
|
+
u.startsWith("sqlite://help"),
|
|
157
|
+
);
|
|
158
|
+
console.log(` Help resources: ${statsHelpUris.join(", ")}`);
|
|
159
|
+
|
|
160
|
+
const statsHasBaseHelp = statsHelpUris.includes("sqlite://help");
|
|
161
|
+
const statsHasStatsHelp = statsHelpUris.includes("sqlite://help/stats");
|
|
162
|
+
console.log(` Has sqlite://help: ${statsHasBaseHelp ? "✅" : "❌"}`);
|
|
163
|
+
console.log(` Has sqlite://help/stats: ${statsHasStatsHelp ? "✅" : "❌"}`);
|
|
164
|
+
if (!statsHasBaseHelp || !statsHasStatsHelp) allPassed = false;
|
|
165
|
+
|
|
166
|
+
const statsNoJsonHelp = !statsHelpUris.includes("sqlite://help/json");
|
|
167
|
+
console.log(` No sqlite://help/json: ${statsNoJsonHelp ? "✅" : "❌"}`);
|
|
168
|
+
if (!statsNoJsonHelp) allPassed = false;
|
|
169
|
+
|
|
170
|
+
// ── Test 4: Multi-group Filter ──
|
|
171
|
+
console.log(
|
|
172
|
+
"\n=== Test 4: Multi-group Filter (--tool-filter core,json,text,stats) ===\n",
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
const multiResult = await testServer([
|
|
176
|
+
"--tool-filter",
|
|
177
|
+
"core,json,text,stats",
|
|
178
|
+
]);
|
|
179
|
+
const multiHelpUris = multiResult.resourceUris.filter((u) =>
|
|
180
|
+
u.startsWith("sqlite://help"),
|
|
181
|
+
);
|
|
182
|
+
console.log(` Help resources: ${multiHelpUris.join(", ")}`);
|
|
183
|
+
|
|
184
|
+
const expectedMulti = [
|
|
185
|
+
"sqlite://help",
|
|
186
|
+
"sqlite://help/json",
|
|
187
|
+
"sqlite://help/text",
|
|
188
|
+
"sqlite://help/stats",
|
|
189
|
+
];
|
|
190
|
+
for (const uri of expectedMulti) {
|
|
191
|
+
const found = multiHelpUris.includes(uri);
|
|
192
|
+
console.log(` Has ${uri}: ${found ? "✅" : "❌"}`);
|
|
193
|
+
if (!found) allPassed = false;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const multiNoVector = !multiHelpUris.includes("sqlite://help/vector");
|
|
197
|
+
const multiNoGeo = !multiHelpUris.includes("sqlite://help/geo");
|
|
198
|
+
console.log(` No sqlite://help/vector: ${multiNoVector ? "✅" : "❌"}`);
|
|
199
|
+
console.log(` No sqlite://help/geo: ${multiNoGeo ? "✅" : "❌"}`);
|
|
200
|
+
if (!multiNoVector || !multiNoGeo) allPassed = false;
|
|
201
|
+
|
|
202
|
+
// ── Test 5: Full Filter ──
|
|
203
|
+
console.log("\n=== Test 5: Full Filter (--tool-filter full) ===\n");
|
|
204
|
+
|
|
205
|
+
const fullResult = await testServer(["--tool-filter", "full"]);
|
|
206
|
+
const fullHelpUris = fullResult.resourceUris.filter((u) =>
|
|
207
|
+
u.startsWith("sqlite://help"),
|
|
208
|
+
);
|
|
209
|
+
console.log(
|
|
210
|
+
` Help resources (${fullHelpUris.length}): ${fullHelpUris.join(", ")}`,
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
const expectedFull = [
|
|
214
|
+
"sqlite://help",
|
|
215
|
+
"sqlite://help/json",
|
|
216
|
+
"sqlite://help/text",
|
|
217
|
+
"sqlite://help/stats",
|
|
218
|
+
"sqlite://help/vector",
|
|
219
|
+
"sqlite://help/geo",
|
|
220
|
+
"sqlite://help/admin",
|
|
221
|
+
"sqlite://help/introspection",
|
|
222
|
+
"sqlite://help/migration",
|
|
223
|
+
];
|
|
224
|
+
const fullHasAll = expectedFull.every((u) => fullHelpUris.includes(u));
|
|
225
|
+
console.log(` Has all 9 help resources: ${fullHasAll ? "✅" : "❌"}`);
|
|
226
|
+
if (!fullHasAll) allPassed = false;
|
|
227
|
+
|
|
228
|
+
// ── Summary ──
|
|
229
|
+
console.log(
|
|
230
|
+
`\n=== Overall: ${allPassed ? "✅ ALL PASSED" : "❌ FAILURES"} ===`,
|
|
231
|
+
);
|
|
232
|
+
process.exit(allPassed ? 0 : 1);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
main().catch((err) => {
|
|
236
|
+
console.error("Fatal:", err.message);
|
|
237
|
+
process.exit(1);
|
|
238
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# MCP Server Pre-Flight Check — db-mcp (SQLite)
|
|
2
|
+
|
|
3
|
+
> **Purpose:** Validate that slim instructions, help resources, and data resources are working correctly before running full test passes. Run this in a fresh conversation with the server enabled.
|
|
4
|
+
|
|
5
|
+
Do NOT read any files from disk. Answer using ONLY what you received via MCP initialization and resource reads.
|
|
6
|
+
|
|
7
|
+
## Step 1: Instructions Audit
|
|
8
|
+
|
|
9
|
+
Report exactly what you received in the MCP server instructions during initialization:
|
|
10
|
+
|
|
11
|
+
- Paste the FULL raw text you received (use a code block)
|
|
12
|
+
- Character count of the instructions
|
|
13
|
+
- Does it mention help resources? If so, what URIs?
|
|
14
|
+
- Does it contain detailed tool parameter tables or response structure docs? (It should NOT)
|
|
15
|
+
|
|
16
|
+
## Step 2: Help Resource Access
|
|
17
|
+
|
|
18
|
+
Read the main help resource `sqlite://help`. Report:
|
|
19
|
+
|
|
20
|
+
- Did it succeed?
|
|
21
|
+
- Approximate character count of the content
|
|
22
|
+
- First 3 lines of content
|
|
23
|
+
|
|
24
|
+
Then read ONE group-specific help resource (e.g., `sqlite://help/core`, `sqlite://help/json`, or whichever is available). Report:
|
|
25
|
+
|
|
26
|
+
- Which URI did you read?
|
|
27
|
+
- Did it succeed?
|
|
28
|
+
- Does it contain tool-specific parameter details and response structures?
|
|
29
|
+
|
|
30
|
+
## Step 3: Data Resource Access
|
|
31
|
+
|
|
32
|
+
Read the schema resource `sqlite://schema`. Report:
|
|
33
|
+
|
|
34
|
+
- Did it succeed?
|
|
35
|
+
- How many tables are listed?
|
|
36
|
+
|
|
37
|
+
## Step 4: Tool Inventory
|
|
38
|
+
|
|
39
|
+
List the tool groups you see and count of tools per group. Do NOT call any tools — just report what's in your tool list.
|
|
40
|
+
|
|
41
|
+
## Step 5: Verdict
|
|
42
|
+
|
|
43
|
+
Based on steps 1-4, answer:
|
|
44
|
+
|
|
45
|
+
| # | Check | Result |
|
|
46
|
+
| --- | ---------------------------------------------------------- | -------- |
|
|
47
|
+
| 1 | Instructions are slim (<1000 chars), not monolithic | ✅ or ❌ |
|
|
48
|
+
| 2 | Instructions reference help resources (`sqlite://help`) | ✅ or ❌ |
|
|
49
|
+
| 3 | Main help resource is readable | ✅ or ❌ |
|
|
50
|
+
| 4 | Group-specific help resource is readable | ✅ or ❌ |
|
|
51
|
+
| 5 | Data resources are readable | ✅ or ❌ |
|
|
52
|
+
| 6 | Tool count matches expected for configured `--tool-filter` | ✅ or ❌ |
|
|
53
|
+
| 7 | No detailed parameter tables leaked into instructions | ✅ or ❌ |
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# db-mcp Prompt Testing Plan (Cursor)
|
|
2
|
+
|
|
3
|
+
This plan documents how to test all 10 MCP prompts in Cursor, since prompts aren't supported in AntiGravity.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
1. Open Cursor and connect to the SQLite MCP server
|
|
8
|
+
2. Test database must be loaded: `test-server/test.db`
|
|
9
|
+
3. Server command: `node dist/cli.js --transport stdio --sqlite-native "test-server/test.db"`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Prompt Categories
|
|
14
|
+
|
|
15
|
+
Prompts fall into two categories:
|
|
16
|
+
|
|
17
|
+
### Data-Fetching Prompts (Work Without Tools)
|
|
18
|
+
|
|
19
|
+
These prompts call adapter methods directly and provide real database information to the LLM. They work regardless of tool filter settings.
|
|
20
|
+
|
|
21
|
+
| Prompt | Data Source |
|
|
22
|
+
| ----------------------- | --------------------------------------------------------------------- |
|
|
23
|
+
| `sqlite_explain_schema` | `adapter.getSchema()`, `adapter.listTables()` |
|
|
24
|
+
| `sqlite_optimization` | `adapter.getSchema()`, `adapter.listTables()`, `adapter.getIndexes()` |
|
|
25
|
+
| `sqlite_documentation` | `adapter.getSchema()` |
|
|
26
|
+
|
|
27
|
+
### Template Prompts (Need Tools for Execution)
|
|
28
|
+
|
|
29
|
+
These prompts format a structured request but require database tools to execute queries. The LLM can provide SQL guidance without tools, but running queries requires tools.
|
|
30
|
+
|
|
31
|
+
| Prompt | Purpose |
|
|
32
|
+
| ------------------------------- | ------------------------------------------------ |
|
|
33
|
+
| `sqlite_query_builder` | Helps construct SQL (running it needs tools) |
|
|
34
|
+
| `sqlite_data_analysis` | Guides analysis workflow (execution needs tools) |
|
|
35
|
+
| `sqlite_migration` | Helps write migration scripts |
|
|
36
|
+
| `sqlite_debug_query` | Helps fix SQL queries |
|
|
37
|
+
| `sqlite_summarize_table` | Guides table analysis (execution needs tools) |
|
|
38
|
+
| `sqlite_hybrid_search_workflow` | Provides hybrid search template |
|
|
39
|
+
| `sqlite_demo` | Interactive demo (full execution needs tools) |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Prompts Summary
|
|
44
|
+
|
|
45
|
+
| # | Prompt | Arguments | Category |
|
|
46
|
+
| --- | ------------------------------- | ---------------------- | ------------- |
|
|
47
|
+
| 1 | `sqlite_explain_schema` | None | Data-fetching |
|
|
48
|
+
| 2 | `sqlite_query_builder` | 3 required | Template |
|
|
49
|
+
| 3 | `sqlite_data_analysis` | 1 required, 1 optional | Template |
|
|
50
|
+
| 4 | `sqlite_optimization` | None | Data-fetching |
|
|
51
|
+
| 5 | `sqlite_migration` | 1 required, 1 optional | Template |
|
|
52
|
+
| 6 | `sqlite_debug_query` | 1 required, 2 optional | Template |
|
|
53
|
+
| 7 | `sqlite_documentation` | 1 optional | Data-fetching |
|
|
54
|
+
| 8 | `sqlite_summarize_table` | 1 required, 1 optional | Template |
|
|
55
|
+
| 9 | `sqlite_hybrid_search_workflow` | 1 required | Template |
|
|
56
|
+
| 10 | `sqlite_demo` | 1 required | Template |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Detailed Test Procedures
|
|
61
|
+
|
|
62
|
+
### 1. sqlite_explain_schema
|
|
63
|
+
|
|
64
|
+
**Slash Command:** `/sqlite_explain_schema`
|
|
65
|
+
|
|
66
|
+
**Arguments:** None
|
|
67
|
+
|
|
68
|
+
**What to Enter:** Just invoke the slash command, no additional input needed.
|
|
69
|
+
|
|
70
|
+
**Expected Behavior:**
|
|
71
|
+
|
|
72
|
+
- LLM receives schema and table list from test database
|
|
73
|
+
- Should explain purpose of all 11 test tables
|
|
74
|
+
- Should identify relationships (e.g., `test_orders.product_id` → `test_products.id`)
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### 2. sqlite_query_builder
|
|
79
|
+
|
|
80
|
+
**Slash Command:** `/sqlite_query_builder`
|
|
81
|
+
|
|
82
|
+
**Arguments (pop-up prompts):**
|
|
83
|
+
|
|
84
|
+
| Argument | Value to Enter |
|
|
85
|
+
| ------------- | ------------------------------------------------------------- |
|
|
86
|
+
| `operation` | `aggregate` |
|
|
87
|
+
| `tables` | `test_orders, test_products` |
|
|
88
|
+
| `description` | `Calculate total sales by product category with order counts` |
|
|
89
|
+
|
|
90
|
+
**Expected Behavior:**
|
|
91
|
+
|
|
92
|
+
- LLM builds a JOIN query with GROUP BY aggregations
|
|
93
|
+
- Should provide SQL with explanation
|
|
94
|
+
|
|
95
|
+
**Alternative Test Case:**
|
|
96
|
+
|
|
97
|
+
| Argument | Value to Enter |
|
|
98
|
+
| ------------- | ----------------------------------------------- |
|
|
99
|
+
| `operation` | `select` |
|
|
100
|
+
| `tables` | `test_users` |
|
|
101
|
+
| `description` | `Find all users with gmail.com email addresses` |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### 3. sqlite_data_analysis
|
|
106
|
+
|
|
107
|
+
**Slash Command:** `/sqlite_data_analysis`
|
|
108
|
+
|
|
109
|
+
**Arguments (pop-up prompts):**
|
|
110
|
+
|
|
111
|
+
| Argument | Value to Enter |
|
|
112
|
+
| ------------------ | ------------------- |
|
|
113
|
+
| `table` | `test_measurements` |
|
|
114
|
+
| `focus` (optional) | `distribution` |
|
|
115
|
+
|
|
116
|
+
**Expected Behavior:**
|
|
117
|
+
|
|
118
|
+
- LLM uses SQLite tools to analyze the 200-row measurements table
|
|
119
|
+
- Should provide statistics for temperature, humidity, pressure columns
|
|
120
|
+
- Should detect patterns across 5 sensor_ids
|
|
121
|
+
|
|
122
|
+
**Alternative Test Case:**
|
|
123
|
+
|
|
124
|
+
| Argument | Value to Enter |
|
|
125
|
+
| ------------------ | -------------- |
|
|
126
|
+
| `table` | `test_orders` |
|
|
127
|
+
| `focus` (optional) | `trends` |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 4. sqlite_optimization
|
|
132
|
+
|
|
133
|
+
**Slash Command:** `/sqlite_optimization`
|
|
134
|
+
|
|
135
|
+
**Arguments:** None
|
|
136
|
+
|
|
137
|
+
**What to Enter:** Just invoke the slash command, no additional input needed.
|
|
138
|
+
|
|
139
|
+
**Expected Behavior:**
|
|
140
|
+
|
|
141
|
+
- LLM receives full schema and index information
|
|
142
|
+
- Should identify existing indexes (`idx_orders_status`, `idx_orders_date`, `idx_products_category`)
|
|
143
|
+
- May suggest additional indexes or optimizations
|
|
144
|
+
- Should check for VACUUM recommendations
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### 5. sqlite_migration
|
|
149
|
+
|
|
150
|
+
**Slash Command:** `/sqlite_migration`
|
|
151
|
+
|
|
152
|
+
**Arguments (pop-up prompts):**
|
|
153
|
+
|
|
154
|
+
| Argument | Value to Enter |
|
|
155
|
+
| ----------------------- | ----------------------------------------------------------------------------- |
|
|
156
|
+
| `change` | `Add a 'discount_percent' column to test_products table with default value 0` |
|
|
157
|
+
| `reversible` (optional) | `true` |
|
|
158
|
+
|
|
159
|
+
**Expected Behavior:**
|
|
160
|
+
|
|
161
|
+
- LLM provides UP migration: `ALTER TABLE test_products ADD COLUMN discount_percent REAL DEFAULT 0`
|
|
162
|
+
- LLM provides DOWN migration (if reversible=true)
|
|
163
|
+
- Should include data migration steps if needed
|
|
164
|
+
- Should include testing/verification steps
|
|
165
|
+
|
|
166
|
+
**Alternative Test Case:**
|
|
167
|
+
|
|
168
|
+
| Argument | Value to Enter |
|
|
169
|
+
| ----------------------- | ------------------------------------------------------------------------------ |
|
|
170
|
+
| `change` | `Create a new index on test_events(event_type, user_id) for dashboard queries` |
|
|
171
|
+
| `reversible` (optional) | `false` |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### 6. sqlite_debug_query
|
|
176
|
+
|
|
177
|
+
**Slash Command:** `/sqlite_debug_query`
|
|
178
|
+
|
|
179
|
+
**Arguments (pop-up prompts):**
|
|
180
|
+
|
|
181
|
+
| Argument | Value to Enter |
|
|
182
|
+
| --------------------- | ---------------------------------------------------- |
|
|
183
|
+
| `query` | `SELECT * FROM test_orders WHERE status = completed` |
|
|
184
|
+
| `error` (optional) | `SQLITE_ERROR: no such column: completed` |
|
|
185
|
+
| `expected` (optional) | `All orders with completed status` |
|
|
186
|
+
|
|
187
|
+
**Expected Behavior:**
|
|
188
|
+
|
|
189
|
+
- LLM identifies the bug: `completed` should be `'completed'` (quoted string)
|
|
190
|
+
- Provides corrected query: `SELECT * FROM test_orders WHERE status = 'completed'`
|
|
191
|
+
- Explains that unquoted text is treated as column name
|
|
192
|
+
|
|
193
|
+
**Alternative Test Case:**
|
|
194
|
+
|
|
195
|
+
| Argument | Value to Enter |
|
|
196
|
+
| --------------------- | --------------------------------------------------------- |
|
|
197
|
+
| `query` | `SELECT customer_name, SUM(total_price) FROM test_orders` |
|
|
198
|
+
| `error` (optional) | `Returns only one row instead of per-customer totals` |
|
|
199
|
+
| `expected` (optional) | `Sum of total_price grouped by each customer` |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
### 7. sqlite_documentation
|
|
204
|
+
|
|
205
|
+
**Slash Command:** `/sqlite_documentation`
|
|
206
|
+
|
|
207
|
+
**Arguments (pop-up prompts):**
|
|
208
|
+
|
|
209
|
+
| Argument | Value to Enter |
|
|
210
|
+
| ------------------- | -------------- |
|
|
211
|
+
| `format` (optional) | `markdown` |
|
|
212
|
+
|
|
213
|
+
**What to Enter:** Optionally specify format, or leave blank for default `markdown`.
|
|
214
|
+
|
|
215
|
+
**Expected Behavior:**
|
|
216
|
+
|
|
217
|
+
- LLM generates comprehensive schema documentation
|
|
218
|
+
- Should include overview, ERD description, table docs
|
|
219
|
+
- Should provide common query examples
|
|
220
|
+
|
|
221
|
+
**Alternative Test Case:**
|
|
222
|
+
|
|
223
|
+
| Argument | Value to Enter |
|
|
224
|
+
| ------------------- | -------------- |
|
|
225
|
+
| `format` (optional) | `json` |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
### 8. sqlite_summarize_table
|
|
230
|
+
|
|
231
|
+
**Slash Command:** `/sqlite_summarize_table`
|
|
232
|
+
|
|
233
|
+
**Arguments (pop-up prompts):**
|
|
234
|
+
|
|
235
|
+
| Argument | Value to Enter |
|
|
236
|
+
| --------------------------- | --------------- |
|
|
237
|
+
| `table_name` | `test_products` |
|
|
238
|
+
| `analysis_depth` (optional) | `detailed` |
|
|
239
|
+
|
|
240
|
+
**Expected Behavior:**
|
|
241
|
+
|
|
242
|
+
- LLM uses `sqlite_describe_table` to get schema
|
|
243
|
+
- Runs statistics queries on 16 products
|
|
244
|
+
- Performs NULL analysis, unique value analysis
|
|
245
|
+
- Provides data quality assessment
|
|
246
|
+
|
|
247
|
+
**Alternative Test Case:**
|
|
248
|
+
|
|
249
|
+
| Argument | Value to Enter |
|
|
250
|
+
| --------------------------- | ----------------- |
|
|
251
|
+
| `table_name` | `test_embeddings` |
|
|
252
|
+
| `analysis_depth` (optional) | `comprehensive` |
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### 9. sqlite_hybrid_search_workflow
|
|
257
|
+
|
|
258
|
+
**Slash Command:** `/sqlite_hybrid_search_workflow`
|
|
259
|
+
|
|
260
|
+
**Arguments (pop-up prompts):**
|
|
261
|
+
|
|
262
|
+
| Argument | Value to Enter |
|
|
263
|
+
| ---------- | ---------------- |
|
|
264
|
+
| `use_case` | `article_search` |
|
|
265
|
+
|
|
266
|
+
**Expected Behavior:**
|
|
267
|
+
|
|
268
|
+
- LLM provides template for FTS5 + vector hybrid search
|
|
269
|
+
- Should create `article_search_fts` virtual table example
|
|
270
|
+
- Should create `article_search_embeddings` table example
|
|
271
|
+
- Provides weighted scoring template (keyword + semantic)
|
|
272
|
+
|
|
273
|
+
**Alternative Test Case:**
|
|
274
|
+
|
|
275
|
+
| Argument | Value to Enter |
|
|
276
|
+
| ---------- | ----------------- |
|
|
277
|
+
| `use_case` | `product_catalog` |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
### 10. sqlite_demo
|
|
282
|
+
|
|
283
|
+
**Slash Command:** `/sqlite_demo`
|
|
284
|
+
|
|
285
|
+
**Arguments (pop-up prompts):**
|
|
286
|
+
|
|
287
|
+
| Argument | Value to Enter |
|
|
288
|
+
| -------- | -------------- |
|
|
289
|
+
| `topic` | `retail sales` |
|
|
290
|
+
|
|
291
|
+
**Expected Behavior:**
|
|
292
|
+
|
|
293
|
+
- LLM creates interactive business narrative scenario
|
|
294
|
+
- May create demo tables with synthetic data
|
|
295
|
+
- Presents query options to user
|
|
296
|
+
- Uses `sqlite_append_insight` to capture findings in `memo://insights`
|
|
297
|
+
- Demonstrates prompts + tools + resources workflow
|
|
298
|
+
|
|
299
|
+
**Alternative Test Case:**
|
|
300
|
+
|
|
301
|
+
| Argument | Value to Enter |
|
|
302
|
+
| -------- | ----------------------- |
|
|
303
|
+
| `topic` | `IoT sensor monitoring` |
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Pass/Fail Criteria
|
|
308
|
+
|
|
309
|
+
| Symbol | Meaning |
|
|
310
|
+
| ------ | -------------------------------------------------------------------------- |
|
|
311
|
+
| ✅ | Prompt invoked successfully, arguments collected, LLM response appropriate |
|
|
312
|
+
| ❌ | Prompt fails to invoke or arguments not collected properly |
|
|
313
|
+
| ⚠️ | Prompt works but unexpected behavior or improvement opportunity |
|
|
314
|
+
| 📝 | Documentation issue or unclear prompt description |
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Test Artifacts
|
|
319
|
+
|
|
320
|
+
| File | Description |
|
|
321
|
+
| ------------------------- | ---------------------------------------- |
|
|
322
|
+
| `test-prompts-plan.md` | This testing plan |
|
|
323
|
+
| `test-prompts-results.md` | Summary report after testing (to create) |
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Test Database Reference
|
|
328
|
+
|
|
329
|
+
The test database contains 11 tables (417 total rows):
|
|
330
|
+
|
|
331
|
+
| Table | Rows | Best for Testing |
|
|
332
|
+
| ------------------- | ---- | ---------------------------- |
|
|
333
|
+
| `test_products` | 16 | Query builder, documentation |
|
|
334
|
+
| `test_orders` | 20 | Query builder, data analysis |
|
|
335
|
+
| `test_jsonb_docs` | 6 | JSON-related prompts |
|
|
336
|
+
| `test_articles` | 8 | Text/FTS prompts |
|
|
337
|
+
| `test_users` | 9 | Debug query scenarios |
|
|
338
|
+
| `test_measurements` | 200 | Data analysis, stats |
|
|
339
|
+
| `test_embeddings` | 20 | Hybrid search workflow |
|
|
340
|
+
| `test_locations` | 15 | Geo-related analysis |
|
|
341
|
+
| `test_categories` | 17 | Hierarchical data |
|
|
342
|
+
| `test_events` | 100 | Time-series analysis |
|
|
343
|
+
| `temp_text_test` | 5 | Quick tests |
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Summary
|
|
348
|
+
|
|
349
|
+
| Metric | Value |
|
|
350
|
+
| ------------------------------------ | -------------------------------------------------- |
|
|
351
|
+
| Total prompts to test | 10 |
|
|
352
|
+
| Prompts with no arguments | 2 (`sqlite_explain_schema`, `sqlite_optimization`) |
|
|
353
|
+
| Prompts with required arguments | 8 |
|
|
354
|
+
| Prompts with optional-only arguments | 1 (`sqlite_documentation`) |
|