@gizmodata/gizmosql-mcp 0.2.2 → 0.3.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/CHANGELOG.md +24 -0
- package/README.md +53 -11
- package/dist/connection.d.ts +44 -15
- package/dist/connection.js +105 -52
- package/dist/connection.js.map +1 -1
- package/dist/registry.d.ts +43 -0
- package/dist/registry.js +90 -0
- package/dist/registry.js.map +1 -0
- package/dist/server.d.ts +4 -3
- package/dist/server.js +152 -54
- package/dist/server.js.map +1 -1
- package/dist/transports.d.ts +1 -1
- package/dist/transports.js +21 -13
- package/dist/transports.js.map +1 -1
- package/package.json +1 -1
package/dist/transports.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as http from "node:http";
|
|
2
|
-
import {
|
|
2
|
+
import type { McpConfig } from "./connection.js";
|
|
3
3
|
/** Runs the server on stdio (Claude Desktop / `claude mcp add`). */
|
|
4
4
|
export declare function startStdio(config: McpConfig): Promise<void>;
|
|
5
5
|
export interface HttpOptions {
|
package/dist/transports.js
CHANGED
|
@@ -3,11 +3,19 @@ import { timingSafeEqual } from "node:crypto";
|
|
|
3
3
|
import * as http from "node:http";
|
|
4
4
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
5
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
6
|
-
import {
|
|
6
|
+
import { ConnectionRegistry } from "./registry.js";
|
|
7
7
|
import { createServer } from "./server.js";
|
|
8
8
|
import { PACKAGE_NAME, PACKAGE_VERSION } from "./version.js";
|
|
9
9
|
const log = (message) => console.error(message);
|
|
10
|
-
|
|
10
|
+
/** "host:port" for one connection, or "name=host:port, ..." for several. */
|
|
11
|
+
function describeTargets(config) {
|
|
12
|
+
if (config.connections.length === 1) {
|
|
13
|
+
const c = config.connections[0];
|
|
14
|
+
return `${c.host}:${c.port}`;
|
|
15
|
+
}
|
|
16
|
+
return config.connections.map((c) => `${c.name}=${c.host}:${c.port}`).join(", ");
|
|
17
|
+
}
|
|
18
|
+
function installShutdown(registry, extra) {
|
|
11
19
|
let closing = false;
|
|
12
20
|
const shutdown = async () => {
|
|
13
21
|
if (closing)
|
|
@@ -15,7 +23,7 @@ function installShutdown(connection, extra) {
|
|
|
15
23
|
closing = true;
|
|
16
24
|
try {
|
|
17
25
|
await extra?.();
|
|
18
|
-
await
|
|
26
|
+
await registry.close();
|
|
19
27
|
}
|
|
20
28
|
finally {
|
|
21
29
|
process.exit(0);
|
|
@@ -26,16 +34,16 @@ function installShutdown(connection, extra) {
|
|
|
26
34
|
}
|
|
27
35
|
/** Runs the server on stdio (Claude Desktop / `claude mcp add`). */
|
|
28
36
|
export async function startStdio(config) {
|
|
29
|
-
const
|
|
30
|
-
const server = createServer({
|
|
37
|
+
const registry = new ConnectionRegistry(config, log);
|
|
38
|
+
const server = createServer({ registry, config, transport: "stdio" });
|
|
31
39
|
const transport = new StdioServerTransport();
|
|
32
|
-
installShutdown(
|
|
40
|
+
installShutdown(registry, () => server.close());
|
|
33
41
|
// When the client closes stdin the transport closes; exit cleanly.
|
|
34
42
|
transport.onclose = () => {
|
|
35
|
-
void
|
|
43
|
+
void registry.close().finally(() => process.exit(0));
|
|
36
44
|
};
|
|
37
45
|
await server.connect(transport);
|
|
38
|
-
log(`[gizmosql-mcp] ${PACKAGE_NAME} ${PACKAGE_VERSION} ready on stdio (${config
|
|
46
|
+
log(`[gizmosql-mcp] ${PACKAGE_NAME} ${PACKAGE_VERSION} ready on stdio (${describeTargets(config)}, writes ${config.allowWrites ? "enabled" : "disabled"})`);
|
|
39
47
|
}
|
|
40
48
|
function bearerMatches(header, expected) {
|
|
41
49
|
if (!header)
|
|
@@ -57,7 +65,7 @@ function bearerMatches(header, expected) {
|
|
|
57
65
|
* replace `authorize()` with an OAuth token verifier.
|
|
58
66
|
*/
|
|
59
67
|
export async function startHttp(config, options) {
|
|
60
|
-
const
|
|
68
|
+
const registry = new ConnectionRegistry(config, log);
|
|
61
69
|
const bearer = config.mcpBearerToken;
|
|
62
70
|
const authorize = (req) => {
|
|
63
71
|
if (!bearer)
|
|
@@ -86,7 +94,7 @@ export async function startHttp(config, options) {
|
|
|
86
94
|
res.end();
|
|
87
95
|
return;
|
|
88
96
|
}
|
|
89
|
-
const server = createServer({
|
|
97
|
+
const server = createServer({ registry, config, transport: "http" });
|
|
90
98
|
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
91
99
|
res.on("close", () => {
|
|
92
100
|
void transport.close();
|
|
@@ -97,14 +105,14 @@ export async function startHttp(config, options) {
|
|
|
97
105
|
await transport.handleRequest(req, res);
|
|
98
106
|
}
|
|
99
107
|
catch (err) {
|
|
100
|
-
log(`[gizmosql-mcp] request error: ${
|
|
108
|
+
log(`[gizmosql-mcp] request error: ${registry.redact(err instanceof Error ? err.message : String(err))}`);
|
|
101
109
|
if (!res.headersSent) {
|
|
102
110
|
res.writeHead(500, { "content-type": "application/json" });
|
|
103
111
|
res.end(JSON.stringify({ error: "internal error" }));
|
|
104
112
|
}
|
|
105
113
|
}
|
|
106
114
|
});
|
|
107
|
-
installShutdown(
|
|
115
|
+
installShutdown(registry, () => new Promise((resolve) => httpServer.close(() => resolve())));
|
|
108
116
|
await new Promise((resolve, reject) => {
|
|
109
117
|
httpServer.once("error", reject);
|
|
110
118
|
httpServer.listen(options.port, options.host, () => resolve());
|
|
@@ -112,7 +120,7 @@ export async function startHttp(config, options) {
|
|
|
112
120
|
const addr = httpServer.address();
|
|
113
121
|
const shown = typeof addr === "object" && addr ? `${addr.address}:${addr.port}` : `${options.host}:${options.port}`;
|
|
114
122
|
log(`[gizmosql-mcp] ${PACKAGE_NAME} ${PACKAGE_VERSION} listening on http://${shown}/mcp ` +
|
|
115
|
-
`(${config
|
|
123
|
+
`(${describeTargets(config)}, writes ${config.allowWrites ? "enabled" : "disabled"}, ` +
|
|
116
124
|
`auth ${bearer ? "bearer" : "none"})`);
|
|
117
125
|
return httpServer;
|
|
118
126
|
}
|
package/dist/transports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAExD,4EAA4E;AAC5E,SAAS,eAAe,CAAC,MAAiB;IACxC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,eAAe,CAAC,QAA4B,EAAE,KAA2B;IAChF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,MAAM,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAiB;IAChD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,mEAAmE;IACnE,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;QACvB,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IACF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,GAAG,CAAC,kBAAkB,YAAY,IAAI,eAAe,oBAAoB,eAAe,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;AAC9J,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,QAAgB;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAiB,EAAE,OAAoB;IACrE,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IAErC,MAAM,SAAS,GAAG,CAAC,GAAyB,EAAW,EAAE;QACvD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAChC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,iCAAiC,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACpH,GAAG,CACD,kBAAkB,YAAY,IAAI,eAAe,wBAAwB,KAAK,OAAO;QACnF,IAAI,eAAe,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI;QACtF,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CACxC,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC"}
|