@samanhappy/mcphub 1.1.15 → 1.2.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.
Files changed (150) hide show
  1. package/README.fr.md +1 -0
  2. package/README.md +6 -0
  3. package/README.zh.md +1 -0
  4. package/dist/clients/openapi.js +3 -2
  5. package/dist/clients/openapi.js.map +1 -1
  6. package/dist/controllers/configController.js +2 -0
  7. package/dist/controllers/configController.js.map +1 -1
  8. package/dist/controllers/credentialBindingController.js +1 -1
  9. package/dist/controllers/credentialBindingController.js.map +1 -1
  10. package/dist/controllers/healthController.js +23 -1
  11. package/dist/controllers/healthController.js.map +1 -1
  12. package/dist/controllers/metricsController.js +9 -1
  13. package/dist/controllers/metricsController.js.map +1 -1
  14. package/dist/controllers/oauthDynamicRegistrationController.js +5 -5
  15. package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
  16. package/dist/controllers/serverController.js +64 -26
  17. package/dist/controllers/serverController.js.map +1 -1
  18. package/dist/db/connection.js +6 -2
  19. package/dist/db/connection.js.map +1 -1
  20. package/dist/db/entities/OAuthState.js +43 -0
  21. package/dist/db/entities/OAuthState.js.map +1 -0
  22. package/dist/db/entities/SystemConfig.js.map +1 -1
  23. package/dist/db/entities/index.js +3 -1
  24. package/dist/db/entities/index.js.map +1 -1
  25. package/dist/db/replicaSchema.js +40 -0
  26. package/dist/db/replicaSchema.js.map +1 -0
  27. package/dist/db/setup.js +25 -0
  28. package/dist/db/setup.js.map +1 -0
  29. package/dist/db/transactionContext.js +21 -0
  30. package/dist/db/transactionContext.js.map +1 -0
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/middlewares/replicaConfig.js +134 -0
  34. package/dist/middlewares/replicaConfig.js.map +1 -0
  35. package/dist/middlewares/userContext.js +1 -1
  36. package/dist/middlewares/userContext.js.map +1 -1
  37. package/dist/models/OAuth.js +57 -7
  38. package/dist/models/OAuth.js.map +1 -1
  39. package/dist/routes/index.js +14 -1
  40. package/dist/routes/index.js.map +1 -1
  41. package/dist/server.js +13 -4
  42. package/dist/server.js.map +1 -1
  43. package/dist/services/credentialBindingService.js +5 -1
  44. package/dist/services/credentialBindingService.js.map +1 -1
  45. package/dist/services/mcpOAuthProvider.js +91 -5
  46. package/dist/services/mcpOAuthProvider.js.map +1 -1
  47. package/dist/services/mcpService.js +113 -10
  48. package/dist/services/mcpService.js.map +1 -1
  49. package/dist/services/metricsService.js +4 -0
  50. package/dist/services/metricsService.js.map +1 -1
  51. package/dist/services/oauthClientRegistration.js +21 -1
  52. package/dist/services/oauthClientRegistration.js.map +1 -1
  53. package/dist/services/oauthServerService.js +5 -6
  54. package/dist/services/oauthServerService.js.map +1 -1
  55. package/dist/services/oauthSettingsStore.js +21 -0
  56. package/dist/services/oauthSettingsStore.js.map +1 -1
  57. package/dist/services/openApiGeneratorService.js +10 -3
  58. package/dist/services/openApiGeneratorService.js.map +1 -1
  59. package/dist/services/personalOAuthService.js +40 -2
  60. package/dist/services/personalOAuthService.js.map +1 -1
  61. package/dist/services/replicaLock.js +30 -0
  62. package/dist/services/replicaLock.js.map +1 -0
  63. package/dist/services/replicaService.js +111 -0
  64. package/dist/services/replicaService.js.map +1 -0
  65. package/dist/services/sseService.js +3 -2
  66. package/dist/services/sseService.js.map +1 -1
  67. package/dist/types/network.js +2 -0
  68. package/dist/types/network.js.map +1 -0
  69. package/dist/utils/logger.js +7 -0
  70. package/dist/utils/logger.js.map +1 -1
  71. package/dist/utils/migration.js +3 -0
  72. package/dist/utils/migration.js.map +1 -1
  73. package/dist/utils/openApiSchema.js +148 -0
  74. package/dist/utils/openApiSchema.js.map +1 -0
  75. package/dist/utils/parameterConversion.js +38 -5
  76. package/dist/utils/parameterConversion.js.map +1 -1
  77. package/dist/utils/passthroughHeaders.js +7 -3
  78. package/dist/utils/passthroughHeaders.js.map +1 -1
  79. package/dist/utils/replicaLogContext.js +3 -0
  80. package/dist/utils/replicaLogContext.js.map +1 -0
  81. package/dist/utils/replicaMode.js +17 -0
  82. package/dist/utils/replicaMode.js.map +1 -0
  83. package/dist/utils/serverConfigPersistence.js +4 -0
  84. package/dist/utils/serverConfigPersistence.js.map +1 -1
  85. package/dist/utils/settingsSync.js +1 -0
  86. package/dist/utils/settingsSync.js.map +1 -1
  87. package/dist/utils/ssrf.js +46 -12
  88. package/dist/utils/ssrf.js.map +1 -1
  89. package/frontend/dist/assets/{ActivityPage-Bi-TjKez.js → ActivityPage-DZFLY-Um.js} +2 -2
  90. package/frontend/dist/assets/{ActivityPage-Bi-TjKez.js.map → ActivityPage-DZFLY-Um.js.map} +1 -1
  91. package/frontend/dist/assets/{ConfirmDialog-BJpzQmMw.js → ConfirmDialog-ByWCtrIw.js} +2 -2
  92. package/frontend/dist/assets/{ConfirmDialog-BJpzQmMw.js.map → ConfirmDialog-ByWCtrIw.js.map} +1 -1
  93. package/frontend/dist/assets/{CredentialsPage-C4Ucer3d.js → CredentialsPage-BqEsnkMx.js} +2 -2
  94. package/frontend/dist/assets/{CredentialsPage-C4Ucer3d.js.map → CredentialsPage-BqEsnkMx.js.map} +1 -1
  95. package/frontend/dist/assets/{Dashboard-C_2KkuoD.js → Dashboard-BRU2Gk9z.js} +2 -2
  96. package/frontend/dist/assets/{Dashboard-C_2KkuoD.js.map → Dashboard-BRU2Gk9z.js.map} +1 -1
  97. package/frontend/dist/assets/{DeleteDialog-BoMYLx3J.js → DeleteDialog-BkEKW9LB.js} +2 -2
  98. package/frontend/dist/assets/{DeleteDialog-BoMYLx3J.js.map → DeleteDialog-BkEKW9LB.js.map} +1 -1
  99. package/frontend/dist/assets/{EndpointCopy-DITVC2YQ.js → EndpointCopy-3f1Uw-gu.js} +2 -2
  100. package/frontend/dist/assets/{EndpointCopy-DITVC2YQ.js.map → EndpointCopy-3f1Uw-gu.js.map} +1 -1
  101. package/frontend/dist/assets/{GroupsPage-sE6YJyuK.js → GroupsPage-D_E7QL_o.js} +2 -2
  102. package/frontend/dist/assets/{GroupsPage-sE6YJyuK.js.map → GroupsPage-D_E7QL_o.js.map} +1 -1
  103. package/frontend/dist/assets/{LoginPage-CFsd_nY-.js → LoginPage-Bsfdp4yD.js} +2 -2
  104. package/frontend/dist/assets/{LoginPage-CFsd_nY-.js.map → LoginPage-Bsfdp4yD.js.map} +1 -1
  105. package/frontend/dist/assets/{LogsPage-BxZuGDuc.js → LogsPage-CCHmA5cZ.js} +2 -2
  106. package/frontend/dist/assets/{LogsPage-BxZuGDuc.js.map → LogsPage-CCHmA5cZ.js.map} +1 -1
  107. package/frontend/dist/assets/{MarketPage-CDBs4vMb.js → MarketPage-DrQQT14y.js} +2 -2
  108. package/frontend/dist/assets/{MarketPage-CDBs4vMb.js.map → MarketPage-DrQQT14y.js.map} +1 -1
  109. package/frontend/dist/assets/{OAuthConsentPage-BN_ucViM.js → OAuthConsentPage-934ieVvL.js} +2 -2
  110. package/frontend/dist/assets/{OAuthConsentPage-BN_ucViM.js.map → OAuthConsentPage-934ieVvL.js.map} +1 -1
  111. package/frontend/dist/assets/{Pagination-S-7lzy59.js → Pagination-B2WW4qn_.js} +2 -2
  112. package/frontend/dist/assets/{Pagination-S-7lzy59.js.map → Pagination-B2WW4qn_.js.map} +1 -1
  113. package/frontend/dist/assets/{PromptsPage-Bl3ySXGK.js → PromptsPage-QAI8kF63.js} +2 -2
  114. package/frontend/dist/assets/{PromptsPage-Bl3ySXGK.js.map → PromptsPage-QAI8kF63.js.map} +1 -1
  115. package/frontend/dist/assets/{ResourcesPage-BOzQkQ92.js → ResourcesPage-TclV1l2q.js} +2 -2
  116. package/frontend/dist/assets/{ResourcesPage-BOzQkQ92.js.map → ResourcesPage-TclV1l2q.js.map} +1 -1
  117. package/frontend/dist/assets/{ServersPage-DHYwQ5AM.js → ServersPage-Bc0tS2uo.js} +4 -4
  118. package/frontend/dist/assets/ServersPage-Bc0tS2uo.js.map +1 -0
  119. package/frontend/dist/assets/SettingsPage-Dfhl51E1.js +14 -0
  120. package/frontend/dist/assets/SettingsPage-Dfhl51E1.js.map +1 -0
  121. package/frontend/dist/assets/{StatusDot-NSjojGCy.js → StatusDot-C_UTW6B7.js} +2 -2
  122. package/frontend/dist/assets/{StatusDot-NSjojGCy.js.map → StatusDot-C_UTW6B7.js.map} +1 -1
  123. package/frontend/dist/assets/{ToggleGroup-BIZWpNzm.js → ToggleGroup-CUUsTJDm.js} +2 -2
  124. package/frontend/dist/assets/{ToggleGroup-BIZWpNzm.js.map → ToggleGroup-CUUsTJDm.js.map} +1 -1
  125. package/frontend/dist/assets/{UserGroupSelection-CN0weGXJ.js → UserGroupSelection-DionUENR.js} +2 -2
  126. package/frontend/dist/assets/{UserGroupSelection-CN0weGXJ.js.map → UserGroupSelection-DionUENR.js.map} +1 -1
  127. package/frontend/dist/assets/{UsersPage-DC51v2b8.js → UsersPage-MpTb3xJ-.js} +2 -2
  128. package/frontend/dist/assets/{UsersPage-DC51v2b8.js.map → UsersPage-MpTb3xJ-.js.map} +1 -1
  129. package/frontend/dist/assets/{clipboard-ik5YV95M.js → clipboard-DVbqnePj.js} +2 -2
  130. package/frontend/dist/assets/{clipboard-ik5YV95M.js.map → clipboard-DVbqnePj.js.map} +1 -1
  131. package/frontend/dist/assets/{costRevision-Bxov9_vH.js → costRevision-DXEYAFUy.js} +2 -2
  132. package/frontend/dist/assets/{costRevision-Bxov9_vH.js.map → costRevision-DXEYAFUy.js.map} +1 -1
  133. package/frontend/dist/assets/{i18n-vendor-COTriSc6.js → i18n-vendor-CPneThYa.js} +3 -3
  134. package/frontend/dist/assets/{i18n-vendor-COTriSc6.js.map → i18n-vendor-CPneThYa.js.map} +1 -1
  135. package/frontend/dist/assets/index-BNm-68Gn.js +3 -0
  136. package/frontend/dist/assets/index-BNm-68Gn.js.map +1 -0
  137. package/frontend/dist/assets/{index-DrHctFvx.css → index-C33aH9Y7.css} +1 -1
  138. package/frontend/dist/assets/{resourceService-DMzCAZ0B.js → resourceService-DPjgql8Z.js} +2 -2
  139. package/frontend/dist/assets/{resourceService-DMzCAZ0B.js.map → resourceService-DPjgql8Z.js.map} +1 -1
  140. package/frontend/dist/assets/{useCostData-CcFSYViI.js → useCostData-CDNXYHZf.js} +2 -2
  141. package/frontend/dist/assets/{useCostData-CcFSYViI.js.map → useCostData-CDNXYHZf.js.map} +1 -1
  142. package/frontend/dist/assets/{variableDetection-CbYSa1ka.js → variableDetection-DGr_LErx.js} +14 -14
  143. package/frontend/dist/assets/{variableDetection-CbYSa1ka.js.map → variableDetection-DGr_LErx.js.map} +1 -1
  144. package/frontend/dist/index.html +3 -3
  145. package/package.json +6 -4
  146. package/frontend/dist/assets/ServersPage-DHYwQ5AM.js.map +0 -1
  147. package/frontend/dist/assets/SettingsPage-CSJ35jlM.js +0 -14
  148. package/frontend/dist/assets/SettingsPage-CSJ35jlM.js.map +0 -1
  149. package/frontend/dist/assets/index-6AyPtx0A.js +0 -3
  150. package/frontend/dist/assets/index-6AyPtx0A.js.map +0 -1
@@ -6,11 +6,11 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <title>MCPHub Dashboard</title>
8
8
  <link rel="icon" type="image/x-icon" href="./assets/favicon-DJnZjsC8.ico">
9
- <script type="module" crossorigin src="./assets/index-6AyPtx0A.js"></script>
9
+ <script type="module" crossorigin src="./assets/index-BNm-68Gn.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="./assets/framework-vendor-D0S_ys6r.js">
11
- <link rel="modulepreload" crossorigin href="./assets/i18n-vendor-COTriSc6.js">
11
+ <link rel="modulepreload" crossorigin href="./assets/i18n-vendor-CPneThYa.js">
12
12
  <link rel="modulepreload" crossorigin href="./assets/icons-vendor-DZjjGrOu.js">
13
- <link rel="stylesheet" crossorigin href="./assets/index-DrHctFvx.css">
13
+ <link rel="stylesheet" crossorigin href="./assets/index-C33aH9Y7.css">
14
14
  </head>
15
15
 
16
16
  <body class="bg-gray-100">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samanhappy/mcphub",
3
- "version": "1.1.15",
3
+ "version": "1.2.1",
4
4
  "description": "Open-source, self-hosted MCP gateway and control plane for connecting, controlling, and operating MCP servers.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  "dependencies": {
28
28
  "@apidevtools/swagger-parser": "^12.1.0",
29
29
  "@google/genai": "^1.44.0",
30
- "@huggingface/tokenizers": "^0.1.3",
30
+ "@huggingface/tokenizers": "^0.2.0",
31
31
  "@modelcontextprotocol/client": "2.1.0",
32
32
  "@modelcontextprotocol/node": "^2.1.0",
33
33
  "@modelcontextprotocol/server": "^2.1.0",
@@ -61,7 +61,7 @@
61
61
  "jsonwebtoken": "^9.0.2",
62
62
  "kysely": "^0.28.9",
63
63
  "multer": "^2.2.0",
64
- "openai": "^6.7.0",
64
+ "openai": "^7.45.1",
65
65
  "openapi-types": "^12.1.3",
66
66
  "openid-client": "^6.8.1",
67
67
  "pg": "^8.16.3",
@@ -107,7 +107,7 @@
107
107
  "autoprefixer": "^10.4.21",
108
108
  "class-variance-authority": "^0.7.1",
109
109
  "clsx": "^2.1.1",
110
- "concurrently": "^9.2.0",
110
+ "concurrently": "^10.0.6",
111
111
  "esbuild": "0.27.2",
112
112
  "eslint": "^10.9.1",
113
113
  "globals": "^17.8.0",
@@ -138,6 +138,7 @@
138
138
  "node": ">=22.0.0"
139
139
  },
140
140
  "scripts": {
141
+ "db:setup": "node dist/db/setup.js",
141
142
  "build": "pnpm backend:build && pnpm frontend:build",
142
143
  "backend:build": "tsc && node scripts/build-mcp-client.js",
143
144
  "start": "node dist/index.js",
@@ -147,6 +148,7 @@
147
148
  "lint": "eslint .",
148
149
  "format": "prettier --write \"src/**/*.ts\"",
149
150
  "test": "jest",
151
+ "test:replicas": "sh scripts/test-replicas.sh",
150
152
  "test:watch": "jest --watch",
151
153
  "test:coverage": "jest --coverage",
152
154
  "test:verbose": "jest --verbose",