Commit Graph
76 Commits
Author SHA1 Message Date
admin dd6c86e17c docs: add monorepo landing and dbmole README
The root README described only dbmole and never mentioned esmole, even
though the repo now ships both servers. Rework it into a monorepo landing
page: a package table, a shared `.mcp.json` quick start, and the connection
model both servers inherit from @dbmole/core.

Move the dbmole-specific reference into packages/dbmole-mcp/README.md so the
package has its own doc on npm, mirroring esmole. Fix the stale Docker build
command there: the Dockerfile moved under packages/dbmole-mcp, so the build
now needs -f and the repo root as context. This also resolves esmole's
README link to ../dbmole-mcp/README.md, which pointed at a missing file.
2026-06-16 23:29:30 +05:00
admin 5af1b7daaa chore(esmole): bump to 0.1.1 for republish 2026-06-16 23:15:37 +05:00
admin 9bbd179a40 fix(esmole): publish typed add_connection inputSchema
add_connection advertised an empty `{ properties: {} }` while the server
validated strictly, so clients could not see field types or the required
`type` literal and sent port/verifyTls as strings.

Cause: the connection schema was wrapped in `.superRefine`, producing a
ZodEffects with no `.shape`. The MCP SDK's normalizeObjectSchema returns
undefined for it and falls back to EMPTY_OBJECT_JSON_SCHEMA. update_connection
passed a raw shape, so it serialized fine - hence the asymmetry.

Split the schema: a strict z.object (connectionObjectSchema) is advertised as
the wire schema, and the refined connectionConfigSchema is passed as a new
optional parseSchema applied in the handler. Strict unknown-key rejection and
the apiKey-or-user+password check are both preserved. fullSchema is now typed
as a ZodObject so a ZodEffects can no longer be passed by mistake.
2026-06-16 23:15:08 +05:00
admin a34d759598 chore(dbmole): bump to 0.1.1 for republish 2026-06-16 22:39:27 +05:00
admin a1a99ced08 chore: point dev .mcp.json at packages, add esmole entry 2026-06-16 22:36:14 +05:00
admin 82fe30a1f1 fix(esmole): declare ssh2 runtime dependency 2026-06-16 21:50:21 +05:00
admin 987ecd6fdc build: dbmole Dockerfile for monorepo; esmole README 2026-06-16 21:44:25 +05:00
admin 4dc2089547 build: esmole Dockerfile
Build from repo root so @dbmole/core resolves; tsup bundles core into
dist while undici/MCP SDK/zod/ssh2 ship as pruned node_modules.

Mark ssh2 external in tsup: it is pulled in transitively by the bundled
core and ships an optional native crypto addon (pure-JS fallback). Inlining
would force esbuild to resolve a .node binary that need not exist on the
target; node-gyp also cannot reliably build it on alpine. Externalizing lets
ssh2 resolve from node_modules at runtime.

npm nests undici under packages/esmole-mcp/node_modules, so the runtime
stage copies both the root and the per-package node_modules.
2026-06-16 21:38:41 +05:00
admin dd6ca2deff fix(esmole): truncate all tool responses; guard normalizes leading slash 2026-06-16 21:21:20 +05:00
admin ab5416f443 test(esmole): integration against ES 7 and 8 2026-06-16 21:12:55 +05:00
admin 5aad5f9304 feat(esmole): server wiring and stdio entry 2026-06-16 21:07:48 +05:00
admin 49fb98c18b feat(esmole): es_request, es_search, es_list_indices, es_get_mapping, es_cluster_health 2026-06-16 21:04:12 +05:00
admin 889e844768 feat(esmole): store, sources, registry, manager, backend binders 2026-06-16 20:56:03 +05:00
admin 42712d508c feat(esmole): undici HTTP backend with TLS servername 2026-06-16 20:51:21 +05:00
admin b2a9c3323f feat(esmole): mapping flatten 2026-06-16 20:48:10 +05:00
admin 7381db1189 feat(esmole): readonly request guard 2026-06-16 20:46:23 +05:00
admin a424963418 feat(esmole): connection schema 2026-06-16 20:44:11 +05:00
admin c902231786 chore: scaffold esmole-mcp package 2026-06-16 20:41:25 +05:00
admin 703df24b13 fix: injectable tunnel log label, honest truncate budget comment 2026-06-16 20:38:10 +05:00
admin 6a2706130a refactor: generic withManaged and connection tools in core 2026-06-16 20:28:31 +05:00
admin a1869b60bf refactor: generic Manager<TBackend> in core 2026-06-16 20:19:12 +05:00
admin 18381169e0 refactor: generic registry in core 2026-06-16 20:09:19 +05:00
admin f4249b58cf refactor: generic store and sources in core 2026-06-16 20:03:40 +05:00
admin 32b64460bf refactor: dbmole schema composes core base 2026-06-16 19:58:04 +05:00
admin 32b9b3f2c5 refactor: split format helpers into core 2026-06-16 19:54:22 +05:00
admin df64404d21 test(core): cover base schema + respond; neutralize tunnel log prefix 2026-06-16 19:51:13 +05:00
admin dd99f4a47b refactor: move tunnel and respond into core 2026-06-16 19:44:07 +05:00
admin c1c0e3383b feat(core): base connection schema 2026-06-16 19:40:49 +05:00
admin e88bb648b7 chore: scaffold @dbmole/core package 2026-06-16 19:39:06 +05:00
admin d51180348c test: root vitest projects across packages 2026-06-16 19:36:17 +05:00
admin 021dfcb66b chore: wire biome and workspace install 2026-06-16 19:34:28 +05:00
admin 1b4a77fba9 chore: relocate dbmole into packages/dbmole-mcp 2026-06-16 19:31:59 +05:00
admin 0771fa21c7 docs: fix plan — core devDep, docker prod deps, byte budget, barrel export 2026-06-16 19:30:03 +05:00
admin f4b22ab1f7 chore: convert root to npm workspaces 2026-06-16 19:21:36 +05:00
admin 1b2c0214d0 docs: clarify per-package coverage in plan 2026-06-16 19:18:53 +05:00
admin a63ee8a700 docs: address codex plan review (coverage, sequencing, schema) 2026-06-16 19:16:23 +05:00
admin cb316cfb8d docs: add esmole + monorepo implementation plan 2026-06-16 19:02:45 +05:00
admin 40280a3630 docs: address codex review in esmole spec 2026-06-16 18:51:23 +05:00
admin bbad46ddcf docs: add esmole + monorepo design spec 2026-06-16 18:45:11 +05:00
admin dc0ed0a307 chore: add project .mcp.json for dev server
Run the MCP server from src via tsx so the in-repo client always
uses current source. Avoids the stale/ missing dist trap from bare
`npx dbmole-mcp` resolving the local package in this folder.
2026-06-16 17:25:28 +05:00
smartass 71db883457 chore: package metadata for npm publish 2026-06-12 02:49:25 +05:00
smartass 32143566d4 fix: dispose races, tunnel guards, retry on stale 2026-06-12 01:48:25 +05:00
smartass 1fecb1cce4 fix: sql guard gaps, date tz, timeouts, payload 2026-06-12 01:37:15 +05:00
smartass 783e5bc5b9 fix: pre-own store dir for non-root volume mount 2026-06-12 00:54:01 +05:00
smartass 5e841e4956 fix: final polish — teardown, image pin, license 2026-06-12 00:49:58 +05:00
smartass 7f0b66b18d feat: add docker image and readme 2026-06-12 00:37:13 +05:00
smartass 90c8860ea7 test: ssh tunnel e2e via sshd container 2026-06-12 00:34:02 +05:00
smartass 9ed8e85813 test: mysql integration via testcontainers 2026-06-12 00:27:50 +05:00
smartass d5f9eafb35 test: postgres integration via testcontainers 2026-06-12 00:25:30 +05:00
smartass 858ed17d6b docs: registerTool accepts strict zod object 2026-06-12 00:22:46 +05:00