jxp 4.2.0 → 5.0.2

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 (104) hide show
  1. package/.env.sample +16 -0
  2. package/README.md +2 -0
  3. package/dist/bin/mcp-stdio-bridge.d.ts +3 -0
  4. package/dist/bin/mcp-stdio-bridge.d.ts.map +1 -0
  5. package/dist/bin/mcp-stdio-bridge.js +87 -0
  6. package/dist/bin/mcp-stdio-bridge.js.map +1 -0
  7. package/dist/bin/server.d.ts.map +1 -1
  8. package/dist/bin/server.js +2 -1
  9. package/dist/bin/server.js.map +1 -1
  10. package/dist/globals.d.ts +2 -2
  11. package/dist/globals.d.ts.map +1 -1
  12. package/dist/libs/docs-auth.d.ts.map +1 -1
  13. package/dist/libs/docs-auth.js +4 -2
  14. package/dist/libs/docs-auth.js.map +1 -1
  15. package/dist/libs/docs.js +74 -43
  16. package/dist/libs/docs.js.map +1 -1
  17. package/dist/libs/jxp.d.ts.map +1 -1
  18. package/dist/libs/jxp.js +22 -321
  19. package/dist/libs/jxp.js.map +1 -1
  20. package/dist/libs/load-config.d.ts +1 -1
  21. package/dist/libs/load-config.d.ts.map +1 -1
  22. package/dist/libs/load-config.js +2 -2
  23. package/dist/libs/load-config.js.map +1 -1
  24. package/dist/libs/mcp/auth.d.ts +4 -0
  25. package/dist/libs/mcp/auth.d.ts.map +1 -0
  26. package/dist/libs/mcp/auth.js +49 -0
  27. package/dist/libs/mcp/auth.js.map +1 -0
  28. package/dist/libs/mcp/config.d.ts +21 -0
  29. package/dist/libs/mcp/config.d.ts.map +1 -0
  30. package/dist/libs/mcp/config.js +66 -0
  31. package/dist/libs/mcp/config.js.map +1 -0
  32. package/dist/libs/mcp/context.d.ts +5 -0
  33. package/dist/libs/mcp/context.d.ts.map +1 -0
  34. package/dist/libs/mcp/context.js +14 -0
  35. package/dist/libs/mcp/context.js.map +1 -0
  36. package/dist/libs/mcp/describe.d.ts +13 -0
  37. package/dist/libs/mcp/describe.d.ts.map +1 -0
  38. package/dist/libs/mcp/describe.js +36 -0
  39. package/dist/libs/mcp/describe.js.map +1 -0
  40. package/dist/libs/mcp/docs_auth.d.ts +5 -0
  41. package/dist/libs/mcp/docs_auth.d.ts.map +1 -0
  42. package/dist/libs/mcp/docs_auth.js +36 -0
  43. package/dist/libs/mcp/docs_auth.js.map +1 -0
  44. package/dist/libs/mcp/dynamic_import.d.ts +6 -0
  45. package/dist/libs/mcp/dynamic_import.d.ts.map +1 -0
  46. package/dist/libs/mcp/dynamic_import.js +12 -0
  47. package/dist/libs/mcp/dynamic_import.js.map +1 -0
  48. package/dist/libs/mcp/execute_tool.d.ts +10 -0
  49. package/dist/libs/mcp/execute_tool.d.ts.map +1 -0
  50. package/dist/libs/mcp/execute_tool.js +65 -0
  51. package/dist/libs/mcp/execute_tool.js.map +1 -0
  52. package/dist/libs/mcp/guides/default.md +67 -0
  53. package/dist/libs/mcp/guides.d.ts +14 -0
  54. package/dist/libs/mcp/guides.d.ts.map +1 -0
  55. package/dist/libs/mcp/guides.js +127 -0
  56. package/dist/libs/mcp/guides.js.map +1 -0
  57. package/dist/libs/mcp/model_visibility.d.ts +31 -0
  58. package/dist/libs/mcp/model_visibility.d.ts.map +1 -0
  59. package/dist/libs/mcp/model_visibility.js +73 -0
  60. package/dist/libs/mcp/model_visibility.js.map +1 -0
  61. package/dist/libs/mcp/mount.d.ts +10 -0
  62. package/dist/libs/mcp/mount.d.ts.map +1 -0
  63. package/dist/libs/mcp/mount.js +68 -0
  64. package/dist/libs/mcp/mount.js.map +1 -0
  65. package/dist/libs/mcp/read_service.d.ts +23 -0
  66. package/dist/libs/mcp/read_service.d.ts.map +1 -0
  67. package/dist/libs/mcp/read_service.js +141 -0
  68. package/dist/libs/mcp/read_service.js.map +1 -0
  69. package/dist/libs/mcp/server.d.ts +23 -0
  70. package/dist/libs/mcp/server.d.ts.map +1 -0
  71. package/dist/libs/mcp/server.js +111 -0
  72. package/dist/libs/mcp/server.js.map +1 -0
  73. package/dist/libs/read_handlers.d.ts +13 -0
  74. package/dist/libs/read_handlers.d.ts.map +1 -0
  75. package/dist/libs/read_handlers.js +381 -0
  76. package/dist/libs/read_handlers.js.map +1 -0
  77. package/dist/libs/request_log.d.ts +2 -0
  78. package/dist/libs/request_log.d.ts.map +1 -1
  79. package/dist/libs/request_log.js +7 -1
  80. package/dist/libs/request_log.js.map +1 -1
  81. package/dist/libs/schema.d.ts.map +1 -1
  82. package/dist/libs/schema.js +5 -8
  83. package/dist/libs/schema.js.map +1 -1
  84. package/dist/libs/schema_description.d.ts +7 -1
  85. package/dist/libs/schema_description.d.ts.map +1 -1
  86. package/dist/libs/schema_description.js +24 -25
  87. package/dist/libs/schema_description.js.map +1 -1
  88. package/dist/libs/schema_serialize.d.ts +3 -0
  89. package/dist/libs/schema_serialize.d.ts.map +1 -0
  90. package/dist/libs/schema_serialize.js +45 -0
  91. package/dist/libs/schema_serialize.js.map +1 -0
  92. package/dist/types/jxp-config.d.ts +7 -0
  93. package/dist/types/jxp-config.d.ts.map +1 -1
  94. package/docs/changelog.md +61 -0
  95. package/docs/index.md +1 -0
  96. package/docs/mcp.md +134 -0
  97. package/mkdocs.yml +1 -0
  98. package/package.json +31 -26
  99. package/templates/assets/docs.css +107 -0
  100. package/templates/assets/mcp-console.js +343 -0
  101. package/templates/index.pug +37 -0
  102. package/templates/mcp.pug +112 -0
  103. package/templates/navbar.pug +2 -0
  104. package/templates/sidebar.pug +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schema_description.js","sourceRoot":"","sources":["../../src/libs/schema_description.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema_description.js","sourceRoot":"","sources":["../../src/libs/schema_description.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Safely serialize a Mongoose schema path for API/MCP describe output. */
2
+ export declare function serializeField(field: any): Record<string, unknown>;
3
+ //# sourceMappingURL=schema_serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema_serialize.d.ts","sourceRoot":"","sources":["../../src/libs/schema_serialize.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsClE"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeField = serializeField;
4
+ /** Safely serialize a Mongoose schema path for API/MCP describe output. */
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ function serializeField(field) {
7
+ const safeField = {
8
+ path: field.path,
9
+ instance: field.instance,
10
+ options: { ...field.options },
11
+ validators: field.validators?.map((v) => ({
12
+ type: v.type?.name,
13
+ message: v.message,
14
+ })),
15
+ isRequired: field.isRequired,
16
+ };
17
+ if (typeof field.defaultValue === "function") {
18
+ safeField.defaultValue = "[Function]";
19
+ }
20
+ else if (field.defaultValue === undefined && field.options.default !== undefined) {
21
+ if (typeof field.options.default === "function") {
22
+ safeField.defaultValue = "[Function]";
23
+ }
24
+ else {
25
+ safeField.defaultValue = field.options.default;
26
+ }
27
+ }
28
+ else {
29
+ safeField.defaultValue = field.defaultValue;
30
+ }
31
+ if (field.instance === "Array" && field.caster) {
32
+ safeField.arrayType = field.caster.instance;
33
+ if (Array.isArray(safeField.defaultValue)) {
34
+ safeField.defaultValue = JSON.stringify(safeField.defaultValue);
35
+ }
36
+ }
37
+ if (field.instance === "Embedded" || field.instance === "DocumentArray") {
38
+ safeField.schema = Object.keys(field.schema.paths).map((p) => ({
39
+ path: p,
40
+ type: field.schema.paths[p].instance,
41
+ }));
42
+ }
43
+ return safeField;
44
+ }
45
+ //# sourceMappingURL=schema_serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema_serialize.js","sourceRoot":"","sources":["../../src/libs/schema_serialize.ts"],"names":[],"mappings":";;AAEA,wCAsCC;AAxCD,2EAA2E;AAC3E,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,KAAU;IACxC,MAAM,SAAS,GAA4B;QAC1C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAiD,EAAE,EAAE,CAAC,CAAC;YACzF,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,CAAC,UAAU;KAC5B,CAAC;IAEF,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QAC9C,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpF,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACjD,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAChD,CAAC;IACF,CAAC;SAAM,CAAC;QACP,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QACzE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;YACtE,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;SACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -57,6 +57,12 @@ export interface JXPIndexDiagnosticsConfig {
57
57
  enabled?: boolean;
58
58
  query_monitor?: JXPQueryMonitorConfig;
59
59
  }
60
+ export interface JXPMcpConfig {
61
+ /** Appended after built-in MCP server instructions */
62
+ instructions?: string;
63
+ /** Markdown files merged after default.md (paths relative to cwd or absolute) */
64
+ guideFiles?: string[];
65
+ }
60
66
  export interface ResolvedIndexDiagnosticsConfig {
61
67
  enabled: boolean;
62
68
  query_monitor: Required<JXPQueryMonitorConfig>;
@@ -128,6 +134,7 @@ export interface JXPConfig {
128
134
  post_hooks?: {
129
135
  login?: (req: JXPRequest, res: JXPResponse) => void | Promise<void>;
130
136
  };
137
+ mcp?: JXPMcpConfig;
131
138
  }
132
139
  /** Restify request extended by JXP middleware. */
133
140
  export interface JXPRequest {
@@ -1 +1 @@
1
- {"version":3,"file":"jxp-config.d.ts","sourceRoot":"","sources":["../../src/types/jxp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpG,MAAM,MAAM,WAAW,GAAG,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACrB,IAAI,CAAC;AAEV,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uDAAuD;IACvD,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC7C,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED,MAAM,WAAW,8BAA8B;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uFAAuF;IACvF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAAC;KAChE,CAAC;IACF,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACpE,CAAC;CACF;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,IAAI,MAAM,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE;QACN,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC"}
1
+ {"version":3,"file":"jxp-config.d.ts","sourceRoot":"","sources":["../../src/types/jxp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpG,MAAM,MAAM,WAAW,GAAG,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACrB,IAAI,CAAC;AAEV,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uDAAuD;IACvD,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC7C,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC5B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uFAAuF;IACvF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAAC;KAChE,CAAC;IACF,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACpE,CAAC;IACF,GAAG,CAAC,EAAE,YAAY,CAAC;CACnB;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,IAAI,MAAM,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE;QACN,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC"}
package/docs/changelog.md CHANGED
@@ -2,6 +2,67 @@
2
2
 
3
3
  Notable changes to [JXP](https://github.com/WorkSpaceMan/jxp).
4
4
 
5
+ ## v5.0.2 — 2026-07-22
6
+
7
+ ### Changed
8
+
9
+ - **Dependencies** — bump runtime and tooling packages: MCP SDK packages to `2.0.0-beta.5`, `jxp-helper` to `^2.0.0`, `commander` 15, `dotenv` 17, `glob` 13, `js-yaml` 5, `nodemailer` 9, `mongoose` `6.13.10`, TypeScript `^5.9.3`, and other patch/minor updates. Drop obsolete `@types/bcryptjs` (types ship with `bcryptjs`).
10
+ - **`jxp-helper` v2** — use named `JXPHelper` import and pass required `{ server, apikey }` into the constructor when both globals are set.
11
+
12
+ ### Notes
13
+
14
+ - Mongoose remains on the **6.x** line (not 9.x) for compatibility with the current stack.
15
+
16
+ ---
17
+
18
+ ## v5.0.1 — 2026-07-22
19
+
20
+ ### Fixed
21
+
22
+ - **Schema metadata (`GET /model`)** — stop deleting `require.cache` and re-compiling model files when listing schemas. Prefer the already-loaded JXP model registry (and Mongoose registry by normalized name) so underscore-separated filenames such as `whitebeard_customer_model.js` no longer trigger `OverwriteModelError` on later requests (e.g. segment `/call` after docs metadata).
23
+ - **`MODEL_DIR` resolution** — `getModelDirFromEnv()` prefers `global.model_dir` (set from `JXPConfig.model_dir`) over a stale `MODEL_DIR` environment variable.
24
+
25
+ ### Security
26
+
27
+ - **Access and error logs** — redact `apikey`, `api_key`, and `x-api-key` query values from Morgan access logs (URL and referrer) and from structured `request_log` summaries so credentials are not written to disk.
28
+
29
+ ---
30
+
31
+ ## v5.0.0 — 2026-06-11
32
+
33
+ Read-only **MCP (Model Context Protocol)** server embedded in JXP: five fixed tools, HTTP Streamable transport, stdio bridge for Cursor/LM Studio, and LLM guidance via server instructions plus a `jxp-guide` resource.
34
+
35
+ ### MCP server
36
+
37
+ #### Added
38
+
39
+ - **HTTP MCP endpoint** — `MCP_ENABLED=true` mounts `GET`/`POST` on `MCP_PATH` (default `/mcp`) on the same port as the REST API. Stateless Streamable HTTP (per-request transport).
40
+ - **Five fixed read-only tools** — `jxp_list_models`, `jxp_describe_model`, `jxp_find`, `jxp_count`, `jxp_export_csv`. Reuses [`read_handlers`](src/libs/read_handlers.ts); same permissions as REST `GET`.
41
+ - **Model visibility** — default-hide built-in auth models and `internal: true` schemas; `MCP_MODEL_WHITELIST` / `MCP_MODEL_BLACKLIST` env overrides.
42
+ - **MCP query limits** — stricter overlay (`MCP_DEFAULT_LIMIT`, `MCP_MAX_LIMIT`, response/CSV caps, string truncation).
43
+ - **LLM guidance** — server `instructions` on `initialize`; **`jxp-guide`** resource (`jxp://guide`) with built-in markdown plus app extensions via `JXPConfig.mcp` / `MCP_GUIDE_FILES`.
44
+ - **`jxp-mcp` CLI** — stdio bridge (`dist/bin/mcp-stdio-bridge.js`) proxies tools, resources, and instructions to a remote HTTP MCP endpoint. Env: `JXP_URL`, `JXP_API_KEY`, optional `MCP_PATH`.
45
+ - **Docs** — [MCP](mcp.md), `.env.sample` entries, Cursor rule `.cursor/rules/mcp.mdc`.
46
+
47
+ #### Dependencies
48
+
49
+ - `@modelcontextprotocol/server`, `@modelcontextprotocol/node`, `@modelcontextprotocol/client` (v2 alpha)
50
+ - `zod`, `@cfworker/json-schema` (peer for MCP client)
51
+
52
+ #### Migration
53
+
54
+ | Topic | Action |
55
+ |-------|--------|
56
+ | Opt-in | MCP is **off** by default. Set `MCP_ENABLED=true` to expose `/mcp`. |
57
+ | REST API | Unchanged when MCP is disabled. |
58
+ | New deps | `npm install` pulls MCP packages; Node **22+** (unchanged). |
59
+ | Cursor (HTTP) | `"url": "https://api.example.com/mcp"`, header `X-API-Key`. |
60
+ | Cursor (stdio) | `"command": "npx", "args": ["-y", "jxp-mcp"]`, env `JXP_URL` + `JXP_API_KEY`. |
61
+
62
+ `jxp-mcp` is **not** a separate npm package — it ships as a **bin entry on the `jxp` package** (`npx jxp-mcp` after `npm install jxp@5`). The bridge talks to a running JXP HTTP server; it does not embed the API.
63
+
64
+ ---
65
+
5
66
  ## v4.2.0 — 2026-05-26
6
67
 
7
68
  Query limit improvements, index diagnostics (audit CLI, admin API, docs UI, query monitor), built-in framework models, and MongoDB version in the startup banner.
package/docs/index.md CHANGED
@@ -18,6 +18,7 @@ JXP 4 requires **Node.js 22+**, ships as compiled TypeScript, and uses environme
18
18
  * Stateless and easy to deploy
19
19
  * WebSocket change subscriptions
20
20
  * [Index diagnostics](index_diagnostics.md) — schema vs DB indexes and optional query monitoring
21
+ * [MCP](mcp.md) — read-only Model Context Protocol for AI clients (Cursor, LM Studio); optional `jxp-mcp` stdio bridge
21
22
 
22
23
  ## Links
23
24
 
package/docs/mcp.md ADDED
@@ -0,0 +1,134 @@
1
+ # MCP (Model Context Protocol)
2
+
3
+ JXP can expose a **read-only** MCP server on the same HTTP port as the REST API. This lets AI clients (Cursor, LM Studio, RevEngine2 admin proxy) query your data with the same permissions as the REST API.
4
+
5
+ ## Enable
6
+
7
+ ```bash
8
+ MCP_ENABLED=true
9
+ ```
10
+
11
+ Optional settings (all prefixed `MCP_`):
12
+
13
+ | Variable | Default | Purpose |
14
+ |----------|---------|---------|
15
+ | `MCP_PATH` | `/mcp` | HTTP endpoint |
16
+ | `MCP_REQUIRE_API_KEY` | `true` | Reject unauthenticated MCP |
17
+ | `MCP_MODEL_WHITELIST` | _(empty)_ | Expose default-hidden models (e.g. `user`) |
18
+ | `MCP_MODEL_BLACKLIST` | _(empty)_ | Always hide models |
19
+ | `MCP_DEFAULT_HIDDEN_MODELS` | builtin auth slugs | Override default-deny list |
20
+ | `MCP_DEFAULT_LIMIT` | `20` | Default row limit |
21
+ | `MCP_MAX_LIMIT` | `100` | Hard cap on `limit` |
22
+ | `MCP_MAX_RESPONSE_SIZE` | `256kb` | JSON response cap |
23
+ | `MCP_MAX_CSV_SIZE` | `512kb` | CSV export cap |
24
+ | `MCP_TRUNCATE_STRINGS_AT` | `4000` | Truncate long string fields in JSON |
25
+ | `MCP_DISABLE_AUTOPOPULATE` | `true` | Ignore expensive autopopulate |
26
+ | `MCP_INSTRUCTIONS_APPEND` | _(empty)_ | Text appended to server instructions (initialize) |
27
+ | `MCP_GUIDE_FILES` | _(empty)_ | Comma-separated markdown files merged into `jxp-guide` resource |
28
+
29
+ ## LLM guidance
30
+
31
+ On connect, the MCP `initialize` response includes **server instructions** — a short workflow summary injected for the LLM.
32
+
33
+ For the full guide, read the fixed MCP resource **`jxp-guide`** (`jxp://guide`, markdown). Content is merged in order:
34
+
35
+ 1. Built-in [`default.md`](https://github.com/WorkSpaceMan/jxp/blob/main/src/libs/mcp/guides/default.md)
36
+ 2. `JXPConfig.mcp.guideFiles` (app config)
37
+ 3. `MCP_GUIDE_FILES` (env)
38
+
39
+ ### App extension (`JXPConfig.mcp`)
40
+
41
+ ```typescript
42
+ apiconfig.mcp = {
43
+ instructions: "Short app-specific note appended to server instructions.",
44
+ guideFiles: [path.join(__dirname, "../../mcp/guide.md")],
45
+ };
46
+ ```
47
+
48
+ Example: [revengine-api `mcp/guide.md`](https://github.com/WorkSpaceMan/revengine-api) adds domain context for `reader`, `segment`, etc.
49
+
50
+ ## Tools (fixed)
51
+
52
+ 1. **`jxp_list_models`** — models the caller can read via MCP
53
+ 2. **`jxp_describe_model`** — field types, links, populate hints
54
+ 3. **`jxp_find`** — list or get by `id`; supports `filter`, `search`, `populate`, `fields`, `sort`, `limit`, `page`
55
+ 4. **`jxp_count`** — count with optional `filter` / `search`
56
+ 5. **`jxp_export_csv`** — CSV text export (use `fields` + low `limit`)
57
+
58
+ Tools never change when you add models — agents call `jxp_list_models` first.
59
+
60
+ ## Authentication
61
+
62
+ Send the user's API key on every MCP HTTP request:
63
+
64
+ ```
65
+ X-API-Key: <apikey>
66
+ ```
67
+
68
+ Bearer tokens also work. MCP uses the same permission rules as `GET /api/:model`.
69
+
70
+ ## Docs playground
71
+
72
+ When `MCP_ENABLED=true`, the built-in docs UI includes **`/docs/mcp`** — a chat-style assistant that calls the same five MCP tools (protected by the same login as **Browse API**). Use the API key field in the top bar or sign in; tool calls go through `POST /docs/mcp/call` with your permissions.
73
+
74
+ Default-hidden models (unless whitelisted): built-in auth collections (`user`, `apikey`, `token`, etc.) and schemas with `internal: true`.
75
+
76
+ ## Cursor / LM Studio (stdio)
77
+
78
+ Use the `jxp-mcp` bridge (proxies stdio → HTTP, including tools, resources, and instructions):
79
+
80
+ ```json
81
+ {
82
+ "mcpServers": {
83
+ "jxp": {
84
+ "command": "npx",
85
+ "args": ["-y", "jxp-mcp"],
86
+ "env": {
87
+ "JXP_URL": "http://localhost:4001",
88
+ "JXP_API_KEY": "your-api-key"
89
+ }
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
95
+ For Cursor, direct HTTP MCP also works and receives instructions automatically:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "jxp": {
101
+ "url": "http://localhost:4001/mcp",
102
+ "headers": { "X-API-Key": "your-api-key" }
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ ## RevEngine2 / server proxy
109
+
110
+ Backend connects to `{API_URL}/mcp` with the logged-in user's API key and proxies MCP between the admin UI and JXP. JXP's own docs UI also exposes `/docs/mcp` for local exploration.
111
+
112
+ ## Deploying `jxp-mcp`
113
+
114
+ `jxp-mcp` is **not** a separate npm package. It ships as a **CLI binary on the `jxp` package** (since v5.0.0):
115
+
116
+ ```bash
117
+ npm install jxp@5 # or depend on jxp in your app
118
+ npx jxp-mcp # stdio MCP → your HTTP /mcp endpoint
119
+ ```
120
+
121
+ | Component | Where it runs | Role |
122
+ |-----------|---------------|------|
123
+ | **JXP HTTP API** | Your server (e.g. RevEngine Docker on port 4001) | Serves REST + `/mcp` when `MCP_ENABLED=true` |
124
+ | **`jxp-mcp` bridge** | Developer's machine (Cursor, LM Studio) | stdio proxy; needs `JXP_URL` + `JXP_API_KEY` pointing at the HTTP server |
125
+
126
+ **Production API containers** do not need to run `jxp-mcp`. Enable MCP on the API (`MCP_ENABLED=true`) and connect from the IDE via HTTP or stdio.
127
+
128
+ **Publish order:** `npm publish` **jxp@5** first, then bump app dependencies (e.g. `revengine-api` `jxp: ^5.0.0`) and rebuild Docker images.
129
+
130
+ ## v1 limitations
131
+
132
+ - Read-only (no mutations)
133
+ - No `POST /query`, `/aggregate`, or `/call`
134
+ - No per-model `mcp:` schema flag (env lists only)
package/mkdocs.yml CHANGED
@@ -16,5 +16,6 @@ nav:
16
16
  - Index diagnostics: index_diagnostics.md
17
17
  - Websocket: websocket.md
18
18
  - Special Features: special.md
19
+ - MCP: mcp.md
19
20
  - Changelog: changelog.md
20
21
  theme: readthedocs
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jxp",
3
3
  "description": "An opinionated RESTful API library based on Mongoose and Restify. Make an API by just writing Mongoose models.",
4
- "version": "4.2.0",
4
+ "version": "5.0.2",
5
5
  "private": false,
6
6
  "main": "dist/libs/jxp.js",
7
7
  "types": "dist/libs/jxp.d.ts",
@@ -50,12 +50,12 @@
50
50
  }
51
51
  },
52
52
  "scripts": {
53
- "build": "tsc -p tsconfig.build.json",
53
+ "build": "tsc -p tsconfig.build.json && node -e \"require('fs').cpSync('src/libs/mcp/guides','dist/libs/mcp/guides',{recursive:true})\"",
54
54
  "prepublishOnly": "npm run build",
55
55
  "prepare": "node -e \"require('fs').existsSync('src')&&require('child_process').execSync('npm run build',{stdio:'inherit'})\"",
56
56
  "start": "node dist/bin/server.js",
57
57
  "dev": "nodemon --watch src --ext ts --exec 'npm run build && node dist/bin/server.js'",
58
- "test": "npm run build && mocha --require test/env.js test/builtin_models.test.js test/bulkwrite_guard.test.js test/index_diagnostics.test.js test/parse_byte_size.test.js test/query_limits.test.js test/request_log.test.js test/test.js --timeout 1000 -b --exit",
58
+ "test": "npm run build && mocha --require test/env.js test/builtin_models.test.js test/bulkwrite_guard.test.js test/index_diagnostics.test.js test/mcp_guides.test.js test/mcp_visibility.test.js test/parse_byte_size.test.js test/query_limits.test.js test/request_log.test.js test/schema_description.test.js test/test.js --timeout 1000 -b --exit",
59
59
  "setup": "node dist/bin/setup.js",
60
60
  "indexes": "node dist/bin/index_audit.js"
61
61
  },
@@ -63,7 +63,8 @@
63
63
  "jxp": "dist/bin/setup.js",
64
64
  "jxp-setup": "dist/bin/setup.js",
65
65
  "jxp-add-admin": "dist/bin/init_db.js",
66
- "jxp-indexes": "dist/bin/index_audit.js"
66
+ "jxp-indexes": "dist/bin/index_audit.js",
67
+ "jxp-mcp": "dist/bin/mcp-stdio-bridge.js"
67
68
  },
68
69
  "repository": {
69
70
  "type": "git",
@@ -80,46 +81,50 @@
80
81
  "url": "https://github.com/WorkSpaceMan/jxp/issues"
81
82
  },
82
83
  "dependencies": {
83
- "@json2csv/plainjs": "^7.0.6",
84
- "bcryptjs": "^3.0.2",
84
+ "@cfworker/json-schema": "^4.1.1",
85
+ "@json2csv/plainjs": "^7.0.7",
86
+ "@modelcontextprotocol/client": "^2.0.0-beta.5",
87
+ "@modelcontextprotocol/node": "^2.0.0-beta.5",
88
+ "@modelcontextprotocol/server": "^2.0.0-beta.5",
89
+ "bcryptjs": "^3.0.3",
85
90
  "bytes": "^3.1.2",
86
- "commander": "^13.1.0",
87
- "dotenv": "^16.5.0",
88
- "glob": "11.1.0",
89
- "js-yaml": "4.1.1",
90
- "jsonwebtoken": "^9.0.2",
91
- "jxp-helper": "^1.4.3",
92
- "markdown-it": "^14.1.1",
91
+ "commander": "^15.0.0",
92
+ "dotenv": "^17.4.2",
93
+ "glob": "13.0.6",
94
+ "js-yaml": "5.2.1",
95
+ "jsonwebtoken": "^9.0.3",
96
+ "jxp-helper": "^2.0.0",
97
+ "markdown-it": "^14.3.0",
93
98
  "moment": "^2.30.1",
94
- "mongoose": "6.13.9",
99
+ "mongoose": "6.13.10",
95
100
  "mongoose-friendly": "^0.1.4",
96
- "morgan": "^1.10.0",
101
+ "morgan": "^1.11.0",
97
102
  "node-cache": "^5.1.2",
98
- "nodemailer": "^8.0.7",
99
- "pug": "^3.0.3",
103
+ "nodemailer": "^9.0.3",
104
+ "pug": "^3.0.4",
100
105
  "rand-token": "^1.0.1",
101
106
  "readline-sync": "^1.4.10",
102
107
  "restify": "^11.1.0",
103
108
  "restify-cors-middleware2": "^2.2.1",
104
- "restify-errors": "^8.0.2",
109
+ "restify-errors": "^8.1.0",
105
110
  "traverse": "^0.6.11",
106
111
  "underscore": "^1.13.8",
107
- "ws": "^8.18.1"
112
+ "ws": "^8.21.1",
113
+ "zod": "^4.4.3"
108
114
  },
109
115
  "devDependencies": {
110
- "@types/bcryptjs": "^2.4.6",
111
- "@types/jsonwebtoken": "^9.0.9",
116
+ "@types/jsonwebtoken": "^9.0.10",
112
117
  "@types/markdown-it": "^14.1.2",
113
- "@types/morgan": "^1.9.9",
114
- "@types/node": "^22.15.21",
118
+ "@types/morgan": "^1.9.10",
119
+ "@types/node": "^26.1.1",
115
120
  "@types/underscore": "^1.13.0",
116
121
  "@types/ws": "^8.18.1",
117
122
  "chai": "^4.3.10",
118
123
  "chai-http": "^4.4.0",
119
- "mocha": "^11.7.5",
120
- "nodemon": "^3.1.0",
124
+ "mocha": "^11.7.6",
125
+ "nodemon": "^3.1.14",
121
126
  "should": "^13.2.3",
122
- "typescript": "^5.8.3"
127
+ "typescript": "^5.9.3"
123
128
  },
124
129
  "engines": {
125
130
  "node": ">=22.0.0"
@@ -242,3 +242,110 @@ body.docs-body {
242
242
  width: 100%;
243
243
  max-width: 400px;
244
244
  }
245
+
246
+ .mcp-chat-wrap {
247
+ border: 1px solid var(--docs-border);
248
+ border-radius: 0.5rem;
249
+ overflow: hidden;
250
+ background: #fafbfc;
251
+ }
252
+
253
+ .mcp-chat-thread {
254
+ max-height: 420px;
255
+ overflow-y: auto;
256
+ padding: 1rem;
257
+ display: flex;
258
+ flex-direction: column;
259
+ gap: 0.75rem;
260
+ }
261
+
262
+ .mcp-msg {
263
+ max-width: 92%;
264
+ }
265
+
266
+ .mcp-msg-user {
267
+ align-self: flex-end;
268
+ }
269
+
270
+ .mcp-msg-bot {
271
+ align-self: flex-start;
272
+ }
273
+
274
+ .mcp-msg-label {
275
+ font-size: 0.7rem;
276
+ font-weight: 600;
277
+ text-transform: uppercase;
278
+ letter-spacing: 0.04em;
279
+ color: #6c757d;
280
+ margin-bottom: 0.25rem;
281
+ }
282
+
283
+ .mcp-msg-body {
284
+ padding: 0.65rem 0.85rem;
285
+ border-radius: 0.5rem;
286
+ font-size: 0.9rem;
287
+ }
288
+
289
+ .mcp-msg-user .mcp-msg-body {
290
+ background: var(--docs-accent);
291
+ color: #fff;
292
+ }
293
+
294
+ .mcp-msg-user .mcp-msg-body code {
295
+ color: #fff;
296
+ background: rgba(255, 255, 255, 0.15);
297
+ }
298
+
299
+ .mcp-msg-bot .mcp-msg-body {
300
+ background: #fff;
301
+ border: 1px solid var(--docs-border);
302
+ }
303
+
304
+ .mcp-msg-error .mcp-msg-body {
305
+ border-color: #f5c2c7;
306
+ background: #f8d7da;
307
+ }
308
+
309
+ .mcp-result {
310
+ font-family: ui-monospace, monospace;
311
+ font-size: 0.78rem;
312
+ white-space: pre-wrap;
313
+ word-break: break-word;
314
+ max-height: 240px;
315
+ overflow: auto;
316
+ background: #212529;
317
+ color: #e9ecef;
318
+ padding: 0.75rem;
319
+ border-radius: 0.375rem;
320
+ }
321
+
322
+ .mcp-chat-input-wrap {
323
+ padding: 0.75rem 1rem;
324
+ border-top: 1px solid var(--docs-border);
325
+ background: #fff;
326
+ }
327
+
328
+ .mcp-tool-panel {
329
+ border: 1px solid var(--docs-border);
330
+ border-radius: 0.375rem;
331
+ padding: 1rem;
332
+ background: #fafbfc;
333
+ }
334
+
335
+ .mcp-setup-card .mcp-json-block {
336
+ font-family: ui-monospace, monospace;
337
+ font-size: 0.8rem;
338
+ background: #212529;
339
+ color: #e9ecef;
340
+ border-radius: 0.375rem;
341
+ padding: 1rem;
342
+ margin: 0;
343
+ overflow-x: auto;
344
+ white-space: pre;
345
+ }
346
+
347
+ .mcp-setup-card .mcp-copy-btn {
348
+ position: absolute;
349
+ top: 0.5rem;
350
+ right: 0.5rem;
351
+ }