@hydradb/mcp 1.0.0 → 1.1.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.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * HandlerEnvelope unwrapping.
3
+ *
4
+ * Most `@hydradb/sdk` methods resolve to a `HandlerEnvelope{ data, success, meta,
5
+ * error }` and we want the inner `data`. But not every method is enveloped
6
+ * (`databases.updateMetadataSchema` and most `connectors.*` return bare
7
+ * objects), so we unwrap by *checking the envelope shape* rather than assuming
8
+ * it: a value is an envelope only if it carries a top-level `data` property
9
+ * alongside one of the envelope siblings (`success` / `meta` / `error`).
10
+ *
11
+ * Payload types (e.g. `FetchV2SourceFetchResponse`) may themselves carry a
12
+ * `success` field, but never a top-level `data`, so they are correctly left
13
+ * untouched when they arrive already unwrapped.
14
+ */
15
+ function isEnvelope(value) {
16
+ if (value == null || typeof value !== "object")
17
+ return false;
18
+ if (!("data" in value))
19
+ return false;
20
+ return "success" in value || "meta" in value || "error" in value;
21
+ }
22
+ export function unwrap(value) {
23
+ if (isEnvelope(value)) {
24
+ return value.data;
25
+ }
26
+ return value;
27
+ }
28
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/hydra/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,SAAS,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,KAAc;IACvC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,IAAS,CAAC;IACxB,CAAC;IACD,OAAO,KAAU,CAAC;AACnB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Error translation for the HydraDB wrapper.
3
+ *
4
+ * The wrapper is the firewall between the generated `@hydradb/sdk` and the host
5
+ * (this MCP server). SDK calls throw `HydraDBError` subclasses; we catch those
6
+ * and re-throw a `HydraWrapperError` whose `message` reproduces the exact
7
+ * template the hand-rolled v1 client used:
8
+ *
9
+ * Hydra DB ${path} → ${status}: ${body}
10
+ *
11
+ * The MCP runtime surfaces only `error.message` to the model (see
12
+ * `createToolError` in @modelcontextprotocol/sdk), so keeping this template
13
+ * byte-identical keeps model-visible error behaviour unchanged across the
14
+ * v1 → SDK migration. The `path`/`status`/`body` values naturally reflect the
15
+ * v2 endpoint now being called; changing the template text itself is a
16
+ * separate, later, deliberate step.
17
+ */
18
+ export declare class HydraWrapperError extends Error {
19
+ /** Logical endpoint path the failing call targeted (e.g. `/query`). */
20
+ readonly path: string;
21
+ /** HTTP status code, when the failure carried one. */
22
+ readonly status?: number;
23
+ /** Parsed error body from the SDK, preserved for programmatic handling. */
24
+ readonly body?: unknown;
25
+ /** The original SDK error, preserved as the cause. */
26
+ readonly cause?: unknown;
27
+ constructor(message: string, path: string, opts?: {
28
+ status?: number;
29
+ body?: unknown;
30
+ cause?: unknown;
31
+ });
32
+ }
33
+ /**
34
+ * Translate any error thrown by an SDK call into a `HydraWrapperError` carrying
35
+ * the byte-identical `Hydra DB ${path} → ${status}: ${body}` message.
36
+ */
37
+ export declare function translateError(path: string, err: unknown): HydraWrapperError;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Error translation for the HydraDB wrapper.
3
+ *
4
+ * The wrapper is the firewall between the generated `@hydradb/sdk` and the host
5
+ * (this MCP server). SDK calls throw `HydraDBError` subclasses; we catch those
6
+ * and re-throw a `HydraWrapperError` whose `message` reproduces the exact
7
+ * template the hand-rolled v1 client used:
8
+ *
9
+ * Hydra DB ${path} → ${status}: ${body}
10
+ *
11
+ * The MCP runtime surfaces only `error.message` to the model (see
12
+ * `createToolError` in @modelcontextprotocol/sdk), so keeping this template
13
+ * byte-identical keeps model-visible error behaviour unchanged across the
14
+ * v1 → SDK migration. The `path`/`status`/`body` values naturally reflect the
15
+ * v2 endpoint now being called; changing the template text itself is a
16
+ * separate, later, deliberate step.
17
+ */
18
+ import { HydraDBError } from "@hydradb/sdk";
19
+ export class HydraWrapperError extends Error {
20
+ constructor(message, path, opts) {
21
+ super(message);
22
+ this.name = "HydraWrapperError";
23
+ this.path = path;
24
+ this.status = opts?.status;
25
+ this.body = opts?.body;
26
+ this.cause = opts?.cause;
27
+ Object.setPrototypeOf(this, HydraWrapperError.prototype);
28
+ }
29
+ }
30
+ function bodyToString(body) {
31
+ if (body == null)
32
+ return "";
33
+ if (typeof body === "string")
34
+ return body;
35
+ try {
36
+ return JSON.stringify(body);
37
+ }
38
+ catch {
39
+ return String(body);
40
+ }
41
+ }
42
+ /**
43
+ * Translate any error thrown by an SDK call into a `HydraWrapperError` carrying
44
+ * the byte-identical `Hydra DB ${path} → ${status}: ${body}` message.
45
+ */
46
+ export function translateError(path, err) {
47
+ if (err instanceof HydraDBError) {
48
+ const status = err.statusCode;
49
+ const statusText = status != null ? String(status) : "ERR";
50
+ return new HydraWrapperError(`Hydra DB ${path} → ${statusText}: ${bodyToString(err.body)}`, path, { status, body: err.body, cause: err });
51
+ }
52
+ // Non-SDK failure (network error, aborted request, unexpected throw).
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ return new HydraWrapperError(`Hydra DB ${path} → ERR: ${message}`, path, {
55
+ cause: err,
56
+ });
57
+ }
58
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/hydra/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAU3C,YACC,OAAe,EACf,IAAY,EACZ,IAA2D;QAE3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACD;AAED,SAAS,YAAY,CAAC,IAAa;IAClC,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,GAAY;IACxD,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,OAAO,IAAI,iBAAiB,CAC3B,YAAY,IAAI,MAAM,UAAU,KAAK,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAC7D,IAAI,EACJ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CACtC,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,IAAI,iBAAiB,CAAC,YAAY,IAAI,WAAW,OAAO,EAAE,EAAE,IAAI,EAAE;QACxE,KAAK,EAAE,GAAG;KACV,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The hand-owned HydraDB wrapper. This module is the ONLY place that imports
3
+ * `@hydradb/sdk`; everything else in the server talks to `HydraDB` here.
4
+ *
5
+ * It is intentionally self-contained so the same pattern can be ported to the
6
+ * other client repos (per CONTRACT.md).
7
+ */
8
+ export { HydraDB, ContextResource, DatabasesResource } from "./client.js";
9
+ export type { HydraConfig, ContextKind, QueryKind, ConversationTurn, QueryParams, IngestParams, ListParams, InspectParams, IngestionStatusParams, RelationsParams, DeleteParams, CreateDatabaseParams, } from "./client.js";
10
+ export { HydraWrapperError, translateError } from "./errors.js";
11
+ export { unwrap } from "./envelope.js";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The hand-owned HydraDB wrapper. This module is the ONLY place that imports
3
+ * `@hydradb/sdk`; everything else in the server talks to `HydraDB` here.
4
+ *
5
+ * It is intentionally self-contained so the same pattern can be ported to the
6
+ * other client repos (per CONTRACT.md).
7
+ */
8
+ export { HydraDB, ContextResource, DatabasesResource } from "./client.js";
9
+ export { HydraWrapperError, translateError } from "./errors.js";
10
+ export { unwrap } from "./envelope.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hydra/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAe1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { resolveConfig } from "./config.js";
3
4
  import { createHydraDBServer } from "./server.js";
4
- const HYDRA_DB_API_KEY = process.env.HYDRA_DB_API_KEY;
5
- if (!HYDRA_DB_API_KEY) {
6
- console.error("Error: HYDRA_DB_API_KEY environment variable is required");
7
- process.exit(1);
5
+ // Fail fast with a clean message if required config is missing. Honours the
6
+ // canonical HYDRADB_* names (and the deprecated HYDRA_DB_* aliases).
7
+ try {
8
+ resolveConfig();
8
9
  }
9
- const HYDRA_DB_TENANT_ID = process.env.HYDRA_DB_TENANT_ID;
10
- if (!HYDRA_DB_TENANT_ID) {
11
- console.error("Error: HYDRA_DB_TENANT_ID environment variable is required");
10
+ catch (error) {
11
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
12
12
  process.exit(1);
13
13
  }
14
14
  async function main() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,4EAA4E;AAC5E,qEAAqE;AACrE,IAAI,CAAC;IACJ,aAAa,EAAE,CAAC;AACjB,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Structured logger for Hydra DB MCP Server.
3
+ * Outputs to stderr to avoid interfering with STDIO transport.
4
+ */
5
+ import { type EnvSource, type WarnFn } from "./config.js";
6
+ export declare enum LogLevel {
7
+ DEBUG = 0,
8
+ INFO = 1,
9
+ WARN = 2,
10
+ ERROR = 3
11
+ }
12
+ /**
13
+ * `HYDRADB_LOG_LEVEL` is the canonical name (CONTRACT §1). `HYDRA_DB_LOG_LEVEL`
14
+ * was the only variable the canonical-prefix migration missed; it is honoured as
15
+ * a deprecated alias on the same terms as every other legacy spelling.
16
+ */
17
+ export declare function resolveLogLevel(env?: EnvSource, warn?: WarnFn): LogLevel;
18
+ export declare const logger: {
19
+ debug(message: string, meta?: Record<string, unknown>): void;
20
+ info(message: string, meta?: Record<string, unknown>): void;
21
+ warn(message: string, meta?: Record<string, unknown>): void;
22
+ error(message: string, meta?: Record<string, unknown>): void;
23
+ };
package/dist/logger.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * Structured logger for Hydra DB MCP Server.
3
3
  * Outputs to stderr to avoid interfering with STDIO transport.
4
4
  */
5
+ import { readEnv } from "./config.js";
5
6
  export var LogLevel;
6
7
  (function (LogLevel) {
7
8
  LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
@@ -15,8 +16,15 @@ const LOG_LEVEL_NAMES = {
15
16
  [LogLevel.WARN]: "WARN",
16
17
  [LogLevel.ERROR]: "ERROR",
17
18
  };
18
- function getLogLevel() {
19
- const level = process.env.HYDRA_DB_LOG_LEVEL?.toUpperCase();
19
+ /**
20
+ * `HYDRADB_LOG_LEVEL` is the canonical name (CONTRACT §1). `HYDRA_DB_LOG_LEVEL`
21
+ * was the only variable the canonical-prefix migration missed; it is honoured as
22
+ * a deprecated alias on the same terms as every other legacy spelling.
23
+ */
24
+ export function resolveLogLevel(env = process.env, warn) {
25
+ // `warn` is optional here; passing it through undefined falls back to
26
+ // readEnv's own stderr default.
27
+ const level = readEnv(env, "HYDRADB_LOG_LEVEL", "HYDRA_DB_LOG_LEVEL", warn)?.toUpperCase();
20
28
  switch (level) {
21
29
  case "DEBUG":
22
30
  return LogLevel.DEBUG;
@@ -30,7 +38,7 @@ function getLogLevel() {
30
38
  return LogLevel.ERROR;
31
39
  }
32
40
  }
33
- const currentLogLevel = getLogLevel();
41
+ const currentLogLevel = resolveLogLevel();
34
42
  function formatMessage(level, message, meta) {
35
43
  const timestamp = new Date().toISOString();
36
44
  const levelName = LOG_LEVEL_NAMES[level];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { HydraDB } from "./hydra/index.js";
2
+ /** Test-only: reset the once-per-process alias warning dedupe. */
3
+ export declare function __resetAliasWarnings(): void;
4
+ export declare function createHydraDBServer(hydraOverride?: HydraDB): import("@modelcontextprotocol/sdk/server/index.js").Server<{
5
+ method: string;
6
+ params?: {
7
+ [x: string]: unknown;
8
+ _meta?: {
9
+ [x: string]: unknown;
10
+ progressToken?: string | number | undefined;
11
+ "io.modelcontextprotocol/related-task"?: {
12
+ taskId: string;
13
+ } | undefined;
14
+ } | undefined;
15
+ } | undefined;
16
+ }, {
17
+ method: string;
18
+ params?: {
19
+ [x: string]: unknown;
20
+ _meta?: {
21
+ [x: string]: unknown;
22
+ progressToken?: string | number | undefined;
23
+ "io.modelcontextprotocol/related-task"?: {
24
+ taskId: string;
25
+ } | undefined;
26
+ } | undefined;
27
+ } | undefined;
28
+ }, {
29
+ [x: string]: unknown;
30
+ _meta?: {
31
+ [x: string]: unknown;
32
+ progressToken?: string | number | undefined;
33
+ "io.modelcontextprotocol/related-task"?: {
34
+ taskId: string;
35
+ } | undefined;
36
+ } | undefined;
37
+ }>;