@database-mcp/core
Advanced tools
+6
-0
@@ -17,5 +17,11 @@ import { Secret } from "./secret.js"; | ||
| } | ||
| export interface TransportConfig { | ||
| type: "stdio" | "http"; | ||
| /** http only; the server binds 127.0.0.1. */ | ||
| port: number; | ||
| } | ||
| export interface Config { | ||
| connection: Connection; | ||
| guardrails: Guardrails; | ||
| transport: TransportConfig; | ||
| } | ||
@@ -22,0 +28,0 @@ export interface ConfigOptions { |
+5
-0
@@ -44,2 +44,3 @@ import { readFileSync } from "node:fs"; | ||
| const fg = (file.guardrails ?? {}); | ||
| const ft = (file.transport ?? {}); | ||
| const P = opts.envPrefix; | ||
@@ -84,2 +85,6 @@ const pwVar = opts.passwordEnvVar ?? `${P}_PASSWORD`; | ||
| }, | ||
| transport: { | ||
| type: (flag("--transport") ?? ft.type ?? "stdio"), | ||
| port: Number(flag("--port") ?? ft.port ?? 8080), | ||
| }, | ||
| }; | ||
@@ -86,0 +91,0 @@ // Debug aid; goes through the redacting serializer (Secret.toJSON = "***"). |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA4CrD,+EAA+E;AAC/E,SAAS,MAAM,CAAC,KAAa,EAAE,GAAsB,EAAE,IAAY;IACjE,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE;QACvD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,oBAAoB,IAAI,2CAA2C,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,GAAsB,EAAE,IAAI,GAAG,EAAE;IAClE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,GAAsB,EAAE,IAAmB;IACpF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAsB,EAAE;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC;IACzD,MAAM,IAAI,GAAG,UAAU;QACrB,CAAC,CAAE,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAA6C;QAC3G,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAgD,CAAC;IAClF,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;IAC9D,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAgD,CAAC;IACjF,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,WAAW,CAAC;IACrD,MAAM,YAAY,GAAI,EAAE,CAAC,aAAoC,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QAC3C,CAAC,CAAC,CAAE,EAAE,CAAC,QAA+B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAK,EAAE,CAAC,GAA0B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrI,6EAA6E;IAC7E,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,QAAQ;gBAAE,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,MAAM,MAAM,GAAW;QACrB,UAAU,EAAE;YACV,GAAG;YACH,IAAI,EAAG,EAAE,CAAC,IAA2B,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YACzD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,EAAG,EAAE,CAAC,IAA2B,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YACzD,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,QAAQ,EAAG,EAAE,CAAC,QAA+B,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;SACtE;QACD,UAAU,EAAE;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACtC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,SAAS;oBAChC,CAAC,CAAC,EAAE,CAAC,QAAQ;oBACb,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;wBAC7B,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;wBAC5B,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;YACzE,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,cAAc,IAAI,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC;SACzG;QACD,SAAS,EAAE;YACT,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,OAAO,CAAqB;YACrE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC;SAChD;KACF,CAAC;IAEF,4EAA4E;IAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"} |
+1
-1
| export type { DatabaseAdapter, QueryOptions, QueryResult, TableSummary, TableDescription, ColumnInfo, IndexInfo, ForeignKeyInfo, } from "./adapter.js"; | ||
| export { guardSql } from "./sql-guard.js"; | ||
| export { loadConfig, type Config, type Connection, type ConfigOptions, type Guardrails } from "./config.js"; | ||
| export { loadConfig, type Config, type Connection, type ConfigOptions, type Guardrails, type TransportConfig, } from "./config.js"; | ||
| export { Secret, redact, registerSecret, sanitizeDsn, installLogRedaction } from "./secret.js"; | ||
| export { buildServer } from "./server.js"; | ||
| export { serve } from "./serve.js"; |
+1
-1
| export { guardSql } from "./sql-guard.js"; | ||
| export { loadConfig } from "./config.js"; | ||
| export { loadConfig, } from "./config.js"; | ||
| export { Secret, redact, registerSecret, sanitizeDsn, installLogRedaction } from "./secret.js"; | ||
@@ -4,0 +4,0 @@ export { buildServer } from "./server.js"; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAqE,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,UAAU,GAMX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"} |
+3
-3
| import type { DatabaseAdapter } from "./adapter.js"; | ||
| import type { Config } from "./config.js"; | ||
| /** | ||
| * Connects the adapter, registers the tools, and serves over stdio. | ||
| * The whole lifecycle an engine entry point needs — an engine package is | ||
| * just an adapter plus a few lines calling this. | ||
| * Connects the adapter, registers the tools, and serves over the configured | ||
| * transport (stdio by default, Streamable HTTP with --transport http). | ||
| * The whole lifecycle an engine entry point needs. | ||
| */ | ||
| export declare function serve(adapter: DatabaseAdapter, config: Config, version: string): Promise<void>; |
+73
-3
| import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; | ||
| import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; | ||
| import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js"; | ||
| import http from "node:http"; | ||
| import { randomUUID } from "node:crypto"; | ||
| import { installLogRedaction, redact } from "./secret.js"; | ||
| import { buildServer } from "./server.js"; | ||
| /** | ||
| * Connects the adapter, registers the tools, and serves over stdio. | ||
| * The whole lifecycle an engine entry point needs — an engine package is | ||
| * just an adapter plus a few lines calling this. | ||
| * Connects the adapter, registers the tools, and serves over the configured | ||
| * transport (stdio by default, Streamable HTTP with --transport http). | ||
| * The whole lifecycle an engine entry point needs. | ||
| */ | ||
@@ -21,2 +25,6 @@ export async function serve(adapter, config, version) { | ||
| } | ||
| if (config.transport.type === "http") { | ||
| await serveHttp(adapter, config, version); | ||
| return; | ||
| } | ||
| const server = buildServer(adapter, config.guardrails, version); | ||
@@ -33,2 +41,64 @@ const shutdown = async () => { | ||
| } | ||
| /** | ||
| * Streamable HTTP (the current spec transport; SSE is deprecated and not | ||
| * implemented). One MCP session per client, all sharing the adapter's pool. | ||
| * Binds 127.0.0.1 only; remote auth is deliberately out of scope for now. | ||
| */ | ||
| async function serveHttp(adapter, config, version) { | ||
| const transports = new Map(); | ||
| const httpServer = http.createServer(async (req, res) => { | ||
| try { | ||
| if (!req.url?.startsWith("/mcp")) { | ||
| res.writeHead(404).end(); | ||
| return; | ||
| } | ||
| let body; | ||
| if (req.method === "POST") { | ||
| const chunks = []; | ||
| for await (const chunk of req) | ||
| chunks.push(chunk); | ||
| body = JSON.parse(Buffer.concat(chunks).toString() || "null"); | ||
| } | ||
| const sessionId = req.headers["mcp-session-id"]; | ||
| let transport = sessionId ? transports.get(sessionId) : undefined; | ||
| if (!transport) { | ||
| if (req.method !== "POST" || !isInitializeRequest(body)) { | ||
| res | ||
| .writeHead(400, { "content-type": "application/json" }) | ||
| .end(JSON.stringify({ jsonrpc: "2.0", error: { code: -32000, message: "Bad Request: no valid session" }, id: null })); | ||
| return; | ||
| } | ||
| const t = new StreamableHTTPServerTransport({ | ||
| sessionIdGenerator: () => randomUUID(), | ||
| onsessioninitialized: (id) => { | ||
| transports.set(id, t); | ||
| }, | ||
| }); | ||
| t.onclose = () => { | ||
| if (t.sessionId) | ||
| transports.delete(t.sessionId); | ||
| }; | ||
| await buildServer(adapter, config.guardrails, version).connect(t); | ||
| transport = t; | ||
| } | ||
| await transport.handleRequest(req, res, body); | ||
| } | ||
| catch (e) { | ||
| console.error(redact(e instanceof Error ? e.message : String(e))); | ||
| if (!res.headersSent) | ||
| res.writeHead(500).end(); | ||
| } | ||
| }); | ||
| const shutdown = async () => { | ||
| httpServer.close(); | ||
| for (const t of transports.values()) | ||
| await t.close().catch(() => { }); | ||
| await adapter.close(); | ||
| process.exit(0); | ||
| }; | ||
| process.on("SIGINT", shutdown); | ||
| process.on("SIGTERM", shutdown); | ||
| await new Promise((resolve) => httpServer.listen(config.transport.port, "127.0.0.1", resolve)); | ||
| console.error(`database-mcp-${adapter.engine} ${version} listening on http://127.0.0.1:${config.transport.port}/mcp (read-only: ${config.guardrails.readOnly})`); | ||
| } | ||
| //# sourceMappingURL=serve.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAwB,EAAE,MAAc,EAAE,OAAe;IACnF,oEAAoE;IACpE,uEAAuE;IACvE,mBAAmB,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,oEAAoE;QACpE,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,MAAM,IAAI,OAAO,sBAAsB,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9G,CAAC"} | ||
| {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@database-mcp/core", | ||
| "version": "0.2.2", | ||
| "version": "0.3.0", | ||
| "description": "Engine-agnostic core for database-mcp MCP servers: protocol layer, adapter interface, guardrails, SQL guard", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
+2
-2
@@ -7,4 +7,4 @@ # @database-mcp/core | ||
| You probably want an engine package instead — `@database-mcp/sqlite`, | ||
| `@database-mcp/mysql`, ... — each of which is a thin adapter on top of this core. | ||
| You probably want an engine package instead (`@database-mcp/sqlite`, | ||
| `@database-mcp/mysql`, and so on). Each is a thin adapter on top of this core. | ||
@@ -11,0 +11,0 @@ ## Writing an engine package |
Network access
Supply chain riskThis module accesses the network.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
39716
19.97%567
16.67%3
200%1
Infinity%