@digital-science-dsl/dimensions-analytics-mcp 1.0.3 → 1.0.4

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/client/deployment-config.d.ts +3 -17
  3. package/dist/client/deployment-config.d.ts.map +1 -1
  4. package/dist/client/deployment-config.js +3 -23
  5. package/dist/client/deployment-config.js.map +1 -1
  6. package/dist/client/http-client.d.ts +4 -26
  7. package/dist/client/http-client.d.ts.map +1 -1
  8. package/dist/client/http-client.js +26 -79
  9. package/dist/client/http-client.js.map +1 -1
  10. package/dist/client/internal-dsl-client.d.ts +15 -3
  11. package/dist/client/internal-dsl-client.d.ts.map +1 -1
  12. package/dist/client/internal-dsl-client.js +32 -4
  13. package/dist/client/internal-dsl-client.js.map +1 -1
  14. package/dist/client/request-retry.d.ts +39 -0
  15. package/dist/client/request-retry.d.ts.map +1 -0
  16. package/dist/client/request-retry.js +85 -0
  17. package/dist/client/request-retry.js.map +1 -0
  18. package/dist/client/usage-context.d.ts +29 -0
  19. package/dist/client/usage-context.d.ts.map +1 -0
  20. package/dist/client/usage-context.js +33 -0
  21. package/dist/client/usage-context.js.map +1 -0
  22. package/dist/client/usage-headers.d.ts +19 -0
  23. package/dist/client/usage-headers.d.ts.map +1 -0
  24. package/dist/client/usage-headers.js +39 -0
  25. package/dist/client/usage-headers.js.map +1 -0
  26. package/dist/dsl/client.d.ts.map +1 -1
  27. package/dist/dsl/client.js +7 -4
  28. package/dist/dsl/client.js.map +1 -1
  29. package/dist/mcp/http-server.d.ts.map +1 -1
  30. package/dist/mcp/http-server.js +6 -0
  31. package/dist/mcp/http-server.js.map +1 -1
  32. package/dist/mcp/server.d.ts +4 -0
  33. package/dist/mcp/server.d.ts.map +1 -1
  34. package/dist/mcp/server.js +7 -0
  35. package/dist/mcp/server.js.map +1 -1
  36. package/dist/mcp/tools/analytics.d.ts.map +1 -1
  37. package/dist/mcp/tools/analytics.js +5 -4
  38. package/dist/mcp/tools/analytics.js.map +1 -1
  39. package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -1
  40. package/dist/mcp/tools/fetch-search-pages.js +2 -1
  41. package/dist/mcp/tools/fetch-search-pages.js.map +1 -1
  42. package/dist/mcp/tools/functions.d.ts.map +1 -1
  43. package/dist/mcp/tools/functions.js +3 -2
  44. package/dist/mcp/tools/functions.js.map +1 -1
  45. package/dist/mcp/tools/lookup.d.ts.map +1 -1
  46. package/dist/mcp/tools/lookup.js +4 -3
  47. package/dist/mcp/tools/lookup.js.map +1 -1
  48. package/dist/mcp/tools/query.d.ts.map +1 -1
  49. package/dist/mcp/tools/query.js +2 -1
  50. package/dist/mcp/tools/query.js.map +1 -1
  51. package/dist/mcp/tools/schema.d.ts.map +1 -1
  52. package/dist/mcp/tools/schema.js +3 -2
  53. package/dist/mcp/tools/schema.js.map +1 -1
  54. package/dist/mcp/tools/search.d.ts.map +1 -1
  55. package/dist/mcp/tools/search.js +2 -1
  56. package/dist/mcp/tools/search.js.map +1 -1
  57. package/dist/mcp/usage-tracking.d.ts +28 -0
  58. package/dist/mcp/usage-tracking.d.ts.map +1 -0
  59. package/dist/mcp/usage-tracking.js +52 -0
  60. package/dist/mcp/usage-tracking.js.map +1 -0
  61. package/package.json +1 -1
  62. package/src/client/deployment-config.ts +3 -36
  63. package/src/client/http-client.ts +27 -93
  64. package/src/client/internal-dsl-client.ts +48 -4
  65. package/src/client/request-retry.ts +115 -0
  66. package/src/client/usage-context.ts +53 -0
  67. package/src/client/usage-headers.ts +45 -0
  68. package/src/dsl/client.ts +7 -4
  69. package/src/mcp/http-server.ts +9 -0
  70. package/src/mcp/server.ts +12 -0
  71. package/src/mcp/tools/analytics.ts +9 -4
  72. package/src/mcp/tools/fetch-search-pages.ts +3 -1
  73. package/src/mcp/tools/functions.ts +5 -2
  74. package/src/mcp/tools/lookup.ts +7 -3
  75. package/src/mcp/tools/query.ts +3 -1
  76. package/src/mcp/tools/schema.ts +5 -2
  77. package/src/mcp/tools/search.ts +3 -1
  78. package/src/mcp/usage-tracking.ts +72 -0
  79. package/test/client/deployment-config.test.ts +1 -25
  80. package/test/client/http-client.test.ts +17 -17
  81. package/test/client/internal-dsl-client.test.ts +73 -10
  82. package/test/client/request-retry.test.ts +55 -0
  83. package/test/client/usage-headers.test.ts +45 -0
  84. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/mcp/tools/lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/mcp/tools/lookup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,GACvB,IAAI,CAgEN"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,GACvB,IAAI,CAiEN"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { buildExecuteDslPolicyHints, validateExecuteDslPolicy, } from "../../dsl/index.js";
8
+ import { registerTrackedTool } from "../usage-tracking.js";
8
9
  import { formatErrorResult, formatToolResult } from "../utils.js";
9
10
  /**
10
11
  * Registers the raw DSL query tool with the MCP server.
@@ -14,7 +15,7 @@ import { formatErrorResult, formatToolResult } from "../utils.js";
14
15
  */
15
16
  export function registerQueryTools(server, client, schemaStore) {
16
17
  const sources = schemaStore.structuredEntityTypes().join(", ");
17
- server.registerTool("execute_dsl", {
18
+ registerTrackedTool(server, "execute_dsl", {
18
19
  description: `Execute a raw Dimensions DSL query. Read dimensions://schema/policy and dimensions://examples first. Official docs: https://docs.dimensions.ai/dsl/
19
20
 
20
21
  Prefer search_* tools for keyword search with yearFrom/yearTo and sortBy — they build valid DSL automatically.
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/mcp/tools/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,MAAwB,EACxB,WAAwB;IAExB,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE;;;;;;;;;;;;;;;2BAeQ,OAAO,EAAE;QAC9B,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAChE,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,kFAAkF,CACnF;SACJ;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACvE,kBAAkB,EAAE,CAAC;iBAClB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;SAC9D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,wBAAwB,CAAC;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAA4B,CAAC;YAC9E,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/mcp/tools/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,MAAwB,EACxB,WAAwB;IAExB,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,mBAAmB,CACjB,MAAM,EACN,aAAa,EACb;QACE,WAAW,EAAE;;;;;;;;;;;;;;;2BAeQ,OAAO,EAAE;QAC9B,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAChE,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,kFAAkF,CACnF;SACJ;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACvE,kBAAkB,EAAE,CAAC;iBAClB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;SAC9D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,wBAAwB,CAAC;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAA4B,CAAC;YAC9E,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,aAAa,GACrB,IAAI,CAsGN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAYnE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,aAAa,GACrB,IAAI,CAwGN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAYnE"}
@@ -5,6 +5,7 @@
5
5
  import { z } from "zod";
6
6
  import { buildReverseAliasMap } from "../middleware/field-aliases.js";
7
7
  import { loadSchema } from "../schema/index.js";
8
+ import { registerTrackedTool } from "../usage-tracking.js";
8
9
  import { formatErrorResult, formatToolResult, READ_ONLY_API_ANNOTATIONS } from "../utils.js";
9
10
  /**
10
11
  * Registers schema introspection and validation tools.
@@ -13,7 +14,7 @@ import { formatErrorResult, formatToolResult, READ_ONLY_API_ANNOTATIONS } from "
13
14
  * @param context - Mutable schema context shared with refresh
14
15
  */
15
16
  export function registerSchemaTools(server, client, context) {
16
- server.registerTool("describe_schema", {
17
+ registerTrackedTool(server, "describe_schema", {
17
18
  description: "Return Dimensions DSL schema metadata loaded at server startup. " +
18
19
  "Default: compact summary with source/entity counts and resource URIs. " +
19
20
  "Use full=true or dimensions://schema for the complete describe payload. " +
@@ -84,7 +85,7 @@ export function registerSchemaTools(server, client, context) {
84
85
  return formatErrorResult(error);
85
86
  }
86
87
  });
87
- server.registerTool("refresh_schema", {
88
+ registerTrackedTool(server, "refresh_schema", {
88
89
  description: "Re-fetch describe schema from the Dimensions API, rebuild in-memory schema, and re-register MCP resources.",
89
90
  inputSchema: {},
90
91
  outputSchema: {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/mcp/tools/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/mcp/tools/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAI1B,MAAM,oBAAoB,CAAC;AAe5B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAoCR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,GACvB,IAAI,CA0EN"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAI1B,MAAM,oBAAoB,CAAC;AAgB5B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAoCR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,GACvB,IAAI,CA2EN"}
@@ -6,6 +6,7 @@
6
6
  import { z } from "zod";
7
7
  import { applyFilters, parseEntityResponse, resolveSkipAndLimit, searchResultKey, searchToolName, validateSearchPaginationPolicy, } from "../../dsl/index.js";
8
8
  import { withFieldAliases } from "../middleware/field-aliases.js";
9
+ import { registerTrackedTool } from "../usage-tracking.js";
9
10
  import { formatErrorResult, formatToolResult, READ_ONLY_API_ANNOTATIONS, withSearchPagination, } from "../utils.js";
10
11
  import { SEARCH_ENTITY_METADATA } from "./search-entity-metadata.js";
11
12
  import { PAGINATION_OUTPUT_SCHEMA, SHARED_SEARCH_INPUT } from "./search-input.js";
@@ -60,7 +61,7 @@ export function registerSearchTools(server, client, schemaStore) {
60
61
  continue;
61
62
  const resultKey = searchResultKey(source);
62
63
  const toolName = searchToolName(source);
63
- server.registerTool(toolName, {
64
+ registerTrackedTool(server, toolName, {
64
65
  description: meta.description,
65
66
  inputSchema: {
66
67
  ...SHARED_SEARCH_INPUT,
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * MCP tool usage tracking helpers.
3
+ * @module mcp/usage-tracking
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import { type McpDeploymentMode } from "../client/usage-context.js";
7
+ export interface McpUsageTrackingOptions {
8
+ readonly deployment: McpDeploymentMode;
9
+ readonly client?: string;
10
+ readonly sessionId?: string;
11
+ }
12
+ /**
13
+ * Initializes session-level MCP usage metadata for a server instance.
14
+ */
15
+ export declare function initMcpUsageTracking(options: McpUsageTrackingOptions): void;
16
+ /**
17
+ * Wraps a tool handler so the active tool name is available for usage headers.
18
+ */
19
+ export declare function withMcpUsageTracking<TArgs, TResult>(toolName: string, handler: (args: TArgs) => TResult | Promise<TResult>): (args: TArgs) => Promise<TResult>;
20
+ /**
21
+ * Registers an MCP tool with usage tracking for dsl-service headers.
22
+ */
23
+ export declare function registerTrackedTool(server: McpServer, toolName: string, config: Record<string, unknown>, handler: (args: any) => any): void;
24
+ /**
25
+ * Derives a coarse MCP client label from an HTTP User-Agent header.
26
+ */
27
+ export declare function mcpClientFromUserAgent(userAgent: string | undefined): string;
28
+ //# sourceMappingURL=usage-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracking.d.ts","sourceRoot":"","sources":["../../src/mcp/usage-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAO3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GACnD,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAEnC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,GAC1B,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAS5E"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * MCP tool usage tracking helpers.
3
+ * @module mcp/usage-tracking
4
+ */
5
+ import { randomUUID } from "node:crypto";
6
+ import pkg from "../../package.json" with { type: "json" };
7
+ import { runWithMcpTool, setMcpUsageSession, } from "../client/usage-context.js";
8
+ /**
9
+ * Initializes session-level MCP usage metadata for a server instance.
10
+ */
11
+ export function initMcpUsageTracking(options) {
12
+ setMcpUsageSession({
13
+ sessionId: options.sessionId ?? randomUUID(),
14
+ deployment: options.deployment,
15
+ client: options.client ?? "unknown",
16
+ version: pkg.version,
17
+ });
18
+ }
19
+ /**
20
+ * Wraps a tool handler so the active tool name is available for usage headers.
21
+ */
22
+ export function withMcpUsageTracking(toolName, handler) {
23
+ return async (args) => runWithMcpTool(toolName, () => handler(args));
24
+ }
25
+ /**
26
+ * Registers an MCP tool with usage tracking for dsl-service headers.
27
+ */
28
+ export function registerTrackedTool(server, toolName, config,
29
+ // biome-ignore lint/suspicious/noExplicitAny: preserve MCP SDK tool handler inference
30
+ handler) {
31
+ server.registerTool(toolName, config, withMcpUsageTracking(toolName, handler));
32
+ }
33
+ /**
34
+ * Derives a coarse MCP client label from an HTTP User-Agent header.
35
+ */
36
+ export function mcpClientFromUserAgent(userAgent) {
37
+ if (!userAgent)
38
+ return "unknown";
39
+ const ua = userAgent.toLowerCase();
40
+ if (ua.includes("cursor"))
41
+ return "cursor";
42
+ if (ua.includes("claude"))
43
+ return "claude-desktop";
44
+ if (ua.includes("vscode") || ua.includes("visual studio code"))
45
+ return "vscode";
46
+ if (ua.includes("windsurf"))
47
+ return "windsurf";
48
+ if (ua.includes("copilot"))
49
+ return "copilot";
50
+ return "unknown";
51
+ }
52
+ //# sourceMappingURL=usage-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracking.js","sourceRoot":"","sources":["../../src/mcp/usage-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAEL,cAAc,EACd,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAQpC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgC;IACnE,kBAAkB,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QACnC,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,OAAoD;IAEpD,OAAO,KAAK,EAAE,IAAW,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,QAAgB,EAChB,MAA+B;AAC/B,sFAAsF;AACtF,OAA2B;IAE3B,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR,MAAM,EACN,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAA6C,CACpF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChF,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digital-science-dsl/dimensions-analytics-mcp",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Dimensions Analytics MCP server for Dimensions DSL querying",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,5 +1,8 @@
1
1
  /**
2
2
  * Deployment mode and hosted backend configuration from environment.
3
+ *
4
+ * Hosted usage tracking: MCP sends X-Dimensions-* headers on dsl-service requests
5
+ * (see usage-headers.ts). dsl-service derives channel/user fields server-side.
3
6
  * @module client/deployment-config
4
7
  */
5
8
 
@@ -51,42 +54,6 @@ export function hostedBootstrapUser(host: string): string {
51
54
  return `mcp@${host}`;
52
55
  }
53
56
 
54
- /**
55
- * MCP-prefixed user label for dsl usage logs (reversible plus-addressing).
56
- */
57
- export function mcpTrackingUser(dimensionsUser: string): string {
58
- const at = dimensionsUser.indexOf("@");
59
- if (at <= 0) return `mcp+${dimensionsUser}`;
60
- return `mcp+${dimensionsUser.slice(0, at)}${dimensionsUser.slice(at)}`;
61
- }
62
-
63
- export interface HostedDslLoggingInfo {
64
- user: string;
65
- dimensions_user: string;
66
- channel: "mcp";
67
- mcp_user: string;
68
- product_variant: string;
69
- source: "dimensions-analytics-mcp-hosted";
70
- }
71
-
72
- /**
73
- * `additional_logging_info` for hosted dsl-service queries.
74
- * `X-DIMENSIONS-USER` stays the canonical Dimensions user; channel fields tag MCP traffic.
75
- */
76
- export function buildHostedDslLoggingInfo(
77
- dimensionsUser: string,
78
- variant: string,
79
- ): HostedDslLoggingInfo {
80
- return {
81
- user: dimensionsUser,
82
- dimensions_user: dimensionsUser,
83
- channel: "mcp",
84
- mcp_user: mcpTrackingUser(dimensionsUser),
85
- product_variant: variant,
86
- source: "dimensions-analytics-mcp-hosted",
87
- };
88
- }
89
-
90
57
  /**
91
58
  * Loads deployment configuration from environment variables.
92
59
  * @throws {Error} When hosted mode is enabled but required vars are missing
@@ -18,6 +18,9 @@ import {
18
18
  UnprocessableEntityError,
19
19
  } from "./errors.js";
20
20
  import type { RateLimiter } from "./rate-limiter.js";
21
+ import { executeRequestWithRetry } from "./request-retry.js";
22
+ import { getMcpUsageSession } from "./usage-context.js";
23
+ import { buildMcpUsageHeaders, buildMcpUserAgent } from "./usage-headers.js";
21
24
 
22
25
  /**
23
26
  * Configuration options for the HTTP client.
@@ -145,10 +148,24 @@ export class HttpClient {
145
148
  dsl: string,
146
149
  options?: RequestOptions,
147
150
  ): Promise<DimensionsResponse> {
151
+ const sessionHeaders: Record<string, string> = {};
152
+ const usageHeaders = buildMcpUsageHeaders();
153
+ if (Object.keys(usageHeaders).length > 0) {
154
+ Object.assign(sessionHeaders, usageHeaders);
155
+ const session = getMcpUsageSession();
156
+ if (session) {
157
+ sessionHeaders["User-Agent"] = buildMcpUserAgent(session.version, session.client);
158
+ }
159
+ }
160
+
148
161
  return this.wrapFetch<DimensionsResponse>({
149
162
  url,
150
163
  method: "POST",
151
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
164
+ headers: {
165
+ "Content-Type": "application/x-www-form-urlencoded",
166
+ ...sessionHeaders,
167
+ ...options?.headers,
168
+ },
152
169
  body: dsl,
153
170
  timeoutMs: options?.timeout ?? this.timeout,
154
171
  signal: options?.signal,
@@ -301,41 +318,16 @@ export class HttpClient {
301
318
  }
302
319
 
303
320
  /**
304
- * Determines if an error is retryable.
305
- * @param error - Error to check
306
- * @returns True if the error should be retried
307
- */
308
- private isRetryable(error: unknown): boolean {
309
- // Retry rate limit errors
310
- if (error instanceof RateLimitError) {
311
- return true;
312
- }
313
-
314
- // Retry server errors (5xx)
315
- if (error instanceof ServerError) {
316
- return true;
317
- }
318
-
319
- // Retry network errors
320
- if (error instanceof NetworkError) {
321
- return true;
322
- }
323
-
324
- // Retry timeout errors
325
- if (error instanceof TimeoutError) {
326
- return true;
327
- }
328
-
329
- // Don't retry other errors (400, 401, 403, etc.)
330
- return false;
331
- }
332
-
333
- /**
334
- * Delays execution for the specified time.
335
- * @param ms - Delay in milliseconds
321
+ * Executes a request with retry logic.
322
+ * @param requestFn - Function that executes the request
323
+ * @returns Response from successful request
336
324
  */
337
- private delay(ms: number): Promise<void> {
338
- return new Promise((resolve) => setTimeout(resolve, ms));
325
+ private async executeWithRetry<T>(requestFn: () => Promise<T>): Promise<T> {
326
+ return executeRequestWithRetry(requestFn, {
327
+ maxRetries: this.maxRetries,
328
+ retryDelay: this.retryDelay,
329
+ rateLimiter: this.rateLimiter,
330
+ });
339
331
  }
340
332
 
341
333
  /**
@@ -394,64 +386,6 @@ export class HttpClient {
394
386
  });
395
387
  }
396
388
 
397
- /**
398
- * Calculates the delay before the next retry attempt.
399
- * For rate-limit errors, uses the client rate limiter's slot timing.
400
- * For other transient errors, uses exponential backoff with jitter.
401
- * The result is capped at 60 seconds.
402
- * @param error - The error that triggered the retry
403
- * @param attempt - The current attempt number (0-based)
404
- * @returns Delay in milliseconds
405
- */
406
- private calculateRetryDelay(error: unknown, attempt: number): number {
407
- const MAX_DELAY = 60_000;
408
-
409
- if (error instanceof RateLimitError) {
410
- const delay =
411
- error.clientRateLimit?.retryAfterMs ??
412
- this.rateLimiter?.getRetryDelayMs() ??
413
- 2000 * 2 ** attempt;
414
- return Math.min(delay, MAX_DELAY);
415
- }
416
-
417
- const backoff = this.retryDelay * 2 ** attempt * (0.5 + Math.random() * 0.5);
418
- return Math.min(backoff, MAX_DELAY);
419
- }
420
-
421
- /**
422
- * Executes a request with retry logic.
423
- * Uses client-side throttling before each attempt and exponential backoff for transient errors.
424
- * @param requestFn - Function that executes the request
425
- * @returns Response from successful request
426
- */
427
- private async executeWithRetry<T>(requestFn: () => Promise<T>): Promise<T> {
428
- let lastError: Error | null = null;
429
-
430
- for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
431
- await this.rateLimiter?.waitIfNeeded();
432
- try {
433
- const result = await requestFn();
434
- this.rateLimiter?.recordRequest();
435
- return result;
436
- } catch (error) {
437
- lastError = error as Error;
438
-
439
- if (!this.isRetryable(error)) {
440
- throw error;
441
- }
442
-
443
- if (attempt >= this.maxRetries) {
444
- throw error;
445
- }
446
-
447
- const retryDelay = this.calculateRetryDelay(error, attempt);
448
- await this.delay(retryDelay);
449
- }
450
- }
451
-
452
- throw lastError ?? new NetworkError("Unknown error occurred");
453
- }
454
-
455
389
  /**
456
390
  * Sends a POST request with JSON body.
457
391
  * @param path - URL path (appended to baseUrl)
@@ -1,27 +1,39 @@
1
1
  /**
2
- * dsl-service adapter for hosted deployment (POST /query, JSON body).
2
+ * dsl-service adapter for hosted deployment (POST /query).
3
+ * Usage metadata is sent via X-Dimensions-* headers (see usage-headers.ts), not JSON body.
3
4
  * @module client/internal-dsl-client
4
5
  */
5
6
 
6
- import { buildHostedDslLoggingInfo, type InternalDslEnvConfig } from "./deployment-config.js";
7
+ import type { InternalDslEnvConfig } from "./deployment-config.js";
7
8
  import {
8
9
  AuthenticationError,
9
10
  DimensionsError,
10
11
  NetworkError,
11
12
  QuerySyntaxError,
13
+ RateLimitError,
12
14
  ServerError,
13
15
  sanitizeErrorMessage,
14
16
  TimeoutError,
15
17
  } from "./errors.js";
18
+ import type { RateLimiter } from "./rate-limiter.js";
19
+ import { executeRequestWithRetry } from "./request-retry.js";
16
20
  import type { DslResponse, QueryExecutorOptions } from "./types.js";
21
+ import { getMcpUsageSession } from "./usage-context.js";
22
+ import { buildMcpUsageHeaders, buildMcpUserAgent } from "./usage-headers.js";
17
23
 
18
24
  export interface InternalDslClientOptions {
19
25
  readonly config: InternalDslEnvConfig;
20
26
  /** User email for X-DIMENSIONS-USER (required by dsl-service) */
21
27
  readonly userEmail: string;
22
- /** Optional client IP to forward */
28
+ /**
29
+ * End-user IP forwarded as X-Forwarded-For for dsl-service per-IP throttling.
30
+ * Set from the inbound MCP HTTP request (see mcp/http-server.ts).
31
+ */
23
32
  readonly clientIp?: string;
24
33
  readonly timeout?: number;
34
+ readonly maxRetries?: number;
35
+ readonly retryDelay?: number;
36
+ readonly rateLimiter?: RateLimiter;
25
37
  }
26
38
 
27
39
  /**
@@ -32,29 +44,51 @@ export class InternalDslClient {
32
44
  private readonly userEmail: string;
33
45
  private readonly clientIp?: string;
34
46
  private readonly timeout: number;
47
+ private readonly maxRetries: number;
48
+ private readonly retryDelay: number;
49
+ private readonly rateLimiter?: RateLimiter;
35
50
 
36
51
  constructor(options: InternalDslClientOptions) {
37
52
  this.config = options.config;
38
53
  this.userEmail = options.userEmail;
39
54
  this.clientIp = options.clientIp;
40
55
  this.timeout = options.timeout ?? 30_000;
56
+ this.maxRetries = options.maxRetries ?? 3;
57
+ this.retryDelay = options.retryDelay ?? 1000;
58
+ this.rateLimiter = options.rateLimiter;
41
59
  }
42
60
 
43
61
  /**
44
62
  * Runs a DSL query through dsl-service POST /query.
45
63
  */
46
64
  async query(dsl: string, options?: QueryExecutorOptions): Promise<DslResponse> {
65
+ return executeRequestWithRetry(() => this.executeQuery(dsl, options), {
66
+ maxRetries: this.maxRetries,
67
+ retryDelay: this.retryDelay,
68
+ rateLimiter: this.rateLimiter,
69
+ });
70
+ }
71
+
72
+ private async executeQuery(dsl: string, options?: QueryExecutorOptions): Promise<DslResponse> {
47
73
  const url = `${this.config.serviceUrl.replace(/\/$/, "")}/query`;
48
74
  const controller = new AbortController();
49
75
  const timeoutMs = options?.timeout ?? this.timeout;
50
76
  const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
51
77
 
78
+ const session = getMcpUsageSession();
79
+ const usageHeaders = buildMcpUsageHeaders();
80
+
52
81
  const headers: Record<string, string> = {
53
82
  "Content-Type": "application/json",
54
83
  "X-DIMENSIONS-USER": this.userEmail,
55
84
  Authorization: `Basic ${Buffer.from(`${this.config.username}:${this.config.password}`).toString("base64")}`,
85
+ ...usageHeaders,
56
86
  };
57
87
 
88
+ if (session) {
89
+ headers["User-Agent"] = buildMcpUserAgent(session.version, session.client);
90
+ }
91
+
58
92
  if (this.clientIp) {
59
93
  headers["X-Forwarded-For"] = this.clientIp;
60
94
  }
@@ -64,7 +98,6 @@ export class InternalDslClient {
64
98
  dsl_schema: this.config.dslSchema,
65
99
  host: this.config.host,
66
100
  variant: this.config.variant,
67
- additional_logging_info: buildHostedDslLoggingInfo(this.userEmail, this.config.variant),
68
101
  };
69
102
 
70
103
  try {
@@ -114,6 +147,17 @@ export class InternalDslClient {
114
147
  return new AuthenticationError(message);
115
148
  case 400:
116
149
  return new QuerySyntaxError(message);
150
+ case 429: {
151
+ const retryAfterMs = this.rateLimiter?.getRetryDelayMs() ?? 2000;
152
+ return new RateLimitError(
153
+ "Rate limit exceeded — wait before retrying",
154
+ Math.ceil(retryAfterMs / 1000),
155
+ {
156
+ remaining: this.rateLimiter?.getRemainingRequests() ?? 0,
157
+ retryAfterMs,
158
+ },
159
+ );
160
+ }
117
161
  default:
118
162
  if (response.status >= 500) {
119
163
  return new ServerError(message, response.status);