diff --git a/package-lock.json b/package-lock.json index 474d30a..094b094 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2861,6 +2861,10 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/esmole-mcp": { + "resolved": "packages/esmole-mcp", + "link": true + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -6489,6 +6493,33 @@ "engines": { "node": ">=20" } + }, + "packages/esmole-mcp": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.29.0", + "undici": "^6.21.0", + "zod": "^3.25.76" + }, + "bin": { + "esmole-mcp": "dist/index.js" + }, + "devDependencies": { + "@dbmole/core": "*" + }, + "engines": { + "node": ">=20" + } + }, + "packages/esmole-mcp/node_modules/undici": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz", + "integrity": "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } } } } diff --git a/packages/dbmole-mcp/tsup.config.ts b/packages/dbmole-mcp/tsup.config.ts index 8dde800..66e79e3 100644 --- a/packages/dbmole-mcp/tsup.config.ts +++ b/packages/dbmole-mcp/tsup.config.ts @@ -5,6 +5,7 @@ export default defineConfig({ format: 'esm', target: 'node20', clean: true, + noExternal: [/@dbmole\/core/], banner: { js: '#!/usr/bin/env node' } diff --git a/packages/esmole-mcp/package.json b/packages/esmole-mcp/package.json new file mode 100644 index 0000000..ad07543 --- /dev/null +++ b/packages/esmole-mcp/package.json @@ -0,0 +1,30 @@ +{ + "name": "esmole-mcp", + "version": "0.1.0", + "description": "MCP server for Elasticsearch with named connections and SSH tunnels", + "license": "MIT", + "author": "smartass", + "repository": { "type": "git", "url": "git+https://git.smartass.pw/admin/dbmole-mcp.git" }, + "homepage": "https://git.smartass.pw/admin/dbmole-mcp", + "keywords": ["mcp", "model-context-protocol", "elasticsearch", "opensearch", "search", "ssh-tunnel", "stdio"], + "type": "module", + "bin": { "esmole-mcp": "dist/index.js" }, + "files": ["dist"], + "engines": { "node": ">=20" }, + "scripts": { + "build": "tsup", + "dev": "tsx src/index.ts", + "typecheck": "tsc --noEmit", + "test:unit": "vitest run", + "coverage": "vitest run --coverage", + "prepublishOnly": "tsc --noEmit && tsup" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "^1.29.0", + "undici": "^6.21.0", + "zod": "^3.25.76" + }, + "devDependencies": { + "@dbmole/core": "*" + } +} diff --git a/packages/esmole-mcp/src/index.ts b/packages/esmole-mcp/src/index.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/packages/esmole-mcp/src/index.ts @@ -0,0 +1 @@ +export {} diff --git a/packages/esmole-mcp/tsconfig.json b/packages/esmole-mcp/tsconfig.json new file mode 100644 index 0000000..03a0928 --- /dev/null +++ b/packages/esmole-mcp/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src", "test"] +} diff --git a/packages/esmole-mcp/tsup.config.ts b/packages/esmole-mcp/tsup.config.ts new file mode 100644 index 0000000..2ac4f6c --- /dev/null +++ b/packages/esmole-mcp/tsup.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'tsup' + +export default defineConfig({ + entry: ['src/index.ts'], + format: 'esm', + target: 'node20', + clean: true, + noExternal: [/@dbmole\/core/], + banner: { js: '#!/usr/bin/env node' } +}) diff --git a/packages/esmole-mcp/vitest.config.ts b/packages/esmole-mcp/vitest.config.ts new file mode 100644 index 0000000..f1fd33e --- /dev/null +++ b/packages/esmole-mcp/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + include: ['test/unit/**/*.test.ts'], + coverage: { + provider: 'v8', + include: ['src/**'], + exclude: ['src/index.ts'], + thresholds: { lines: 90, functions: 90 } + } + } +})