@samanhappy/mcphub 0.10.6 → 0.11.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 (126) hide show
  1. package/README.fr.md +36 -152
  2. package/README.md +34 -255
  3. package/README.zh.md +33 -212
  4. package/dist/config/DaoConfigService.js +3 -3
  5. package/dist/config/DaoConfigService.js.map +1 -1
  6. package/dist/controllers/authController.js +2 -2
  7. package/dist/controllers/authController.js.map +1 -1
  8. package/dist/controllers/configController.js +32 -5
  9. package/dist/controllers/configController.js.map +1 -1
  10. package/dist/controllers/groupController.js +24 -24
  11. package/dist/controllers/groupController.js.map +1 -1
  12. package/dist/controllers/oauthClientController.js +13 -13
  13. package/dist/controllers/oauthClientController.js.map +1 -1
  14. package/dist/controllers/oauthDynamicRegistrationController.js +9 -9
  15. package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
  16. package/dist/controllers/oauthServerController.js +1 -1
  17. package/dist/controllers/oauthServerController.js.map +1 -1
  18. package/dist/controllers/openApiController.js +1 -1
  19. package/dist/controllers/openApiController.js.map +1 -1
  20. package/dist/controllers/serverController.js +134 -96
  21. package/dist/controllers/serverController.js.map +1 -1
  22. package/dist/controllers/userController.js +22 -21
  23. package/dist/controllers/userController.js.map +1 -1
  24. package/dist/dao/DaoFactory.js +43 -0
  25. package/dist/dao/DaoFactory.js.map +1 -1
  26. package/dist/dao/DatabaseDaoFactory.js +86 -0
  27. package/dist/dao/DatabaseDaoFactory.js.map +1 -0
  28. package/dist/dao/GroupDaoDbImpl.js +131 -0
  29. package/dist/dao/GroupDaoDbImpl.js.map +1 -0
  30. package/dist/dao/OAuthClientDao.js +100 -0
  31. package/dist/dao/OAuthClientDao.js.map +1 -0
  32. package/dist/dao/OAuthClientDaoDbImpl.js +83 -0
  33. package/dist/dao/OAuthClientDaoDbImpl.js.map +1 -0
  34. package/dist/dao/OAuthTokenDao.js +161 -0
  35. package/dist/dao/OAuthTokenDao.js.map +1 -0
  36. package/dist/dao/OAuthTokenDaoDbImpl.js +92 -0
  37. package/dist/dao/OAuthTokenDaoDbImpl.js.map +1 -0
  38. package/dist/dao/ServerDaoDbImpl.js +109 -0
  39. package/dist/dao/ServerDaoDbImpl.js.map +1 -0
  40. package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
  41. package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
  42. package/dist/dao/UserConfigDaoDbImpl.js +61 -0
  43. package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
  44. package/dist/dao/UserDaoDbImpl.js +90 -0
  45. package/dist/dao/UserDaoDbImpl.js.map +1 -0
  46. package/dist/dao/index.js +11 -0
  47. package/dist/dao/index.js.map +1 -1
  48. package/dist/db/entities/Group.js +49 -0
  49. package/dist/db/entities/Group.js.map +1 -0
  50. package/dist/db/entities/OAuthClient.js +66 -0
  51. package/dist/db/entities/OAuthClient.js.map +1 -0
  52. package/dist/db/entities/OAuthToken.js +66 -0
  53. package/dist/db/entities/OAuthToken.js.map +1 -0
  54. package/dist/db/entities/Server.js +93 -0
  55. package/dist/db/entities/Server.js.map +1 -0
  56. package/dist/db/entities/SystemConfig.js +66 -0
  57. package/dist/db/entities/SystemConfig.js.map +1 -0
  58. package/dist/db/entities/User.js +45 -0
  59. package/dist/db/entities/User.js.map +1 -0
  60. package/dist/db/entities/UserConfig.js +45 -0
  61. package/dist/db/entities/UserConfig.js.map +1 -0
  62. package/dist/db/entities/index.js +18 -2
  63. package/dist/db/entities/index.js.map +1 -1
  64. package/dist/db/repositories/GroupRepository.js +81 -0
  65. package/dist/db/repositories/GroupRepository.js.map +1 -0
  66. package/dist/db/repositories/OAuthClientRepository.js +68 -0
  67. package/dist/db/repositories/OAuthClientRepository.js.map +1 -0
  68. package/dist/db/repositories/OAuthTokenRepository.js +159 -0
  69. package/dist/db/repositories/OAuthTokenRepository.js.map +1 -0
  70. package/dist/db/repositories/ServerRepository.js +80 -0
  71. package/dist/db/repositories/ServerRepository.js.map +1 -0
  72. package/dist/db/repositories/SystemConfigRepository.js +64 -0
  73. package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
  74. package/dist/db/repositories/UserConfigRepository.js +69 -0
  75. package/dist/db/repositories/UserConfigRepository.js.map +1 -0
  76. package/dist/db/repositories/UserRepository.js +68 -0
  77. package/dist/db/repositories/UserRepository.js.map +1 -0
  78. package/dist/db/repositories/index.js +8 -1
  79. package/dist/db/repositories/index.js.map +1 -1
  80. package/dist/index.js +12 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/middlewares/auth.js +2 -2
  83. package/dist/middlewares/auth.js.map +1 -1
  84. package/dist/middlewares/userContext.js +1 -1
  85. package/dist/middlewares/userContext.js.map +1 -1
  86. package/dist/models/OAuth.js +90 -122
  87. package/dist/models/OAuth.js.map +1 -1
  88. package/dist/models/User.js +29 -48
  89. package/dist/models/User.js.map +1 -1
  90. package/dist/routes/index.js +2 -1
  91. package/dist/routes/index.js.map +1 -1
  92. package/dist/scripts/migrate-to-database.js +5 -0
  93. package/dist/scripts/migrate-to-database.js.map +1 -0
  94. package/dist/server.js +2 -2
  95. package/dist/server.js.map +1 -1
  96. package/dist/services/groupService.js +87 -113
  97. package/dist/services/groupService.js.map +1 -1
  98. package/dist/services/keepAliveService.js +58 -0
  99. package/dist/services/keepAliveService.js.map +1 -0
  100. package/dist/services/mcpOAuthProvider.js +22 -28
  101. package/dist/services/mcpOAuthProvider.js.map +1 -1
  102. package/dist/services/mcpService.js +73 -92
  103. package/dist/services/mcpService.js.map +1 -1
  104. package/dist/services/oauthServerService.js +26 -20
  105. package/dist/services/oauthServerService.js.map +1 -1
  106. package/dist/services/oauthService.js +11 -10
  107. package/dist/services/oauthService.js.map +1 -1
  108. package/dist/services/oauthSettingsStore.js +17 -12
  109. package/dist/services/oauthSettingsStore.js.map +1 -1
  110. package/dist/services/openApiGeneratorService.js +6 -7
  111. package/dist/services/openApiGeneratorService.js.map +1 -1
  112. package/dist/services/sseService.js +20 -62
  113. package/dist/services/sseService.js.map +1 -1
  114. package/dist/services/userService.js +38 -45
  115. package/dist/services/userService.js.map +1 -1
  116. package/dist/utils/migration.js +235 -0
  117. package/dist/utils/migration.js.map +1 -0
  118. package/dist/utils/oauthBearer.js +4 -4
  119. package/dist/utils/oauthBearer.js.map +1 -1
  120. package/frontend/dist/assets/index-BiA4eB7l.js +251 -0
  121. package/frontend/dist/assets/index-BiA4eB7l.js.map +1 -0
  122. package/frontend/dist/index.html +1 -1
  123. package/mcp_settings.json +23 -1
  124. package/package.json +1 -1
  125. package/frontend/dist/assets/index-DDht0WYq.js +0 -251
  126. package/frontend/dist/assets/index-DDht0WYq.js.map +0 -1
@@ -0,0 +1,235 @@
1
+ import { loadOriginalSettings } from '../config/index.js';
2
+ import { initializeDatabase } from '../db/connection.js';
3
+ import { setDaoFactory } from '../dao/DaoFactory.js';
4
+ import { DatabaseDaoFactory } from '../dao/DatabaseDaoFactory.js';
5
+ import { UserRepository } from '../db/repositories/UserRepository.js';
6
+ import { ServerRepository } from '../db/repositories/ServerRepository.js';
7
+ import { GroupRepository } from '../db/repositories/GroupRepository.js';
8
+ import { SystemConfigRepository } from '../db/repositories/SystemConfigRepository.js';
9
+ import { UserConfigRepository } from '../db/repositories/UserConfigRepository.js';
10
+ import { OAuthClientRepository } from '../db/repositories/OAuthClientRepository.js';
11
+ import { OAuthTokenRepository } from '../db/repositories/OAuthTokenRepository.js';
12
+ /**
13
+ * Migrate from file-based configuration to database
14
+ */
15
+ export async function migrateToDatabase() {
16
+ try {
17
+ console.log('Starting migration from file to database...');
18
+ // Initialize database connection
19
+ await initializeDatabase();
20
+ console.log('Database connection established');
21
+ // Load current settings from file
22
+ const settings = loadOriginalSettings();
23
+ console.log('Loaded settings from file');
24
+ // Create repositories
25
+ const userRepo = new UserRepository();
26
+ const serverRepo = new ServerRepository();
27
+ const groupRepo = new GroupRepository();
28
+ const systemConfigRepo = new SystemConfigRepository();
29
+ const userConfigRepo = new UserConfigRepository();
30
+ const oauthClientRepo = new OAuthClientRepository();
31
+ const oauthTokenRepo = new OAuthTokenRepository();
32
+ // Migrate users
33
+ if (settings.users && settings.users.length > 0) {
34
+ console.log(`Migrating ${settings.users.length} users...`);
35
+ for (const user of settings.users) {
36
+ const exists = await userRepo.exists(user.username);
37
+ if (!exists) {
38
+ await userRepo.create({
39
+ username: user.username,
40
+ password: user.password,
41
+ isAdmin: user.isAdmin || false,
42
+ });
43
+ console.log(` - Created user: ${user.username}`);
44
+ }
45
+ else {
46
+ console.log(` - User already exists: ${user.username}`);
47
+ }
48
+ }
49
+ }
50
+ // Migrate servers
51
+ if (settings.mcpServers) {
52
+ const serverNames = Object.keys(settings.mcpServers);
53
+ console.log(`Migrating ${serverNames.length} servers...`);
54
+ for (const [name, config] of Object.entries(settings.mcpServers)) {
55
+ const exists = await serverRepo.exists(name);
56
+ if (!exists) {
57
+ await serverRepo.create({
58
+ name,
59
+ type: config.type,
60
+ url: config.url,
61
+ command: config.command,
62
+ args: config.args,
63
+ env: config.env,
64
+ headers: config.headers,
65
+ enabled: config.enabled !== undefined ? config.enabled : true,
66
+ owner: config.owner,
67
+ enableKeepAlive: config.enableKeepAlive,
68
+ keepAliveInterval: config.keepAliveInterval,
69
+ tools: config.tools,
70
+ prompts: config.prompts,
71
+ options: config.options,
72
+ oauth: config.oauth,
73
+ });
74
+ console.log(` - Created server: ${name}`);
75
+ }
76
+ else {
77
+ console.log(` - Server already exists: ${name}`);
78
+ }
79
+ }
80
+ }
81
+ // Migrate groups
82
+ if (settings.groups && settings.groups.length > 0) {
83
+ console.log(`Migrating ${settings.groups.length} groups...`);
84
+ for (const group of settings.groups) {
85
+ const exists = await groupRepo.existsByName(group.name);
86
+ if (!exists) {
87
+ await groupRepo.create({
88
+ name: group.name,
89
+ description: group.description,
90
+ servers: Array.isArray(group.servers) ? group.servers : [],
91
+ owner: group.owner,
92
+ });
93
+ console.log(` - Created group: ${group.name}`);
94
+ }
95
+ else {
96
+ console.log(` - Group already exists: ${group.name}`);
97
+ }
98
+ }
99
+ }
100
+ // Migrate system config
101
+ if (settings.systemConfig) {
102
+ console.log('Migrating system configuration...');
103
+ const systemConfig = {
104
+ routing: settings.systemConfig.routing || {},
105
+ install: settings.systemConfig.install || {},
106
+ smartRouting: settings.systemConfig.smartRouting || {},
107
+ mcpRouter: settings.systemConfig.mcpRouter || {},
108
+ nameSeparator: settings.systemConfig.nameSeparator,
109
+ oauth: settings.systemConfig.oauth || {},
110
+ oauthServer: settings.systemConfig.oauthServer || {},
111
+ enableSessionRebuild: settings.systemConfig.enableSessionRebuild,
112
+ };
113
+ await systemConfigRepo.update(systemConfig);
114
+ console.log(' - System configuration updated');
115
+ }
116
+ // Migrate user configs
117
+ if (settings.userConfigs) {
118
+ const usernames = Object.keys(settings.userConfigs);
119
+ console.log(`Migrating ${usernames.length} user configurations...`);
120
+ for (const [username, config] of Object.entries(settings.userConfigs)) {
121
+ const userConfig = {
122
+ routing: config.routing || {},
123
+ additionalConfig: config,
124
+ };
125
+ await userConfigRepo.update(username, userConfig);
126
+ console.log(` - Updated configuration for user: ${username}`);
127
+ }
128
+ }
129
+ // Migrate OAuth clients
130
+ if (settings.oauthClients && settings.oauthClients.length > 0) {
131
+ console.log(`Migrating ${settings.oauthClients.length} OAuth clients...`);
132
+ for (const client of settings.oauthClients) {
133
+ const exists = await oauthClientRepo.exists(client.clientId);
134
+ if (!exists) {
135
+ await oauthClientRepo.create({
136
+ clientId: client.clientId,
137
+ clientSecret: client.clientSecret,
138
+ name: client.name,
139
+ redirectUris: client.redirectUris,
140
+ grants: client.grants,
141
+ scopes: client.scopes,
142
+ owner: client.owner,
143
+ metadata: client.metadata,
144
+ });
145
+ console.log(` - Created OAuth client: ${client.clientId}`);
146
+ }
147
+ else {
148
+ console.log(` - OAuth client already exists: ${client.clientId}`);
149
+ }
150
+ }
151
+ }
152
+ // Migrate OAuth tokens
153
+ if (settings.oauthTokens && settings.oauthTokens.length > 0) {
154
+ console.log(`Migrating ${settings.oauthTokens.length} OAuth tokens...`);
155
+ for (const token of settings.oauthTokens) {
156
+ const exists = await oauthTokenRepo.exists(token.accessToken);
157
+ if (!exists) {
158
+ await oauthTokenRepo.create({
159
+ accessToken: token.accessToken,
160
+ refreshToken: token.refreshToken,
161
+ accessTokenExpiresAt: new Date(token.accessTokenExpiresAt),
162
+ refreshTokenExpiresAt: token.refreshTokenExpiresAt
163
+ ? new Date(token.refreshTokenExpiresAt)
164
+ : undefined,
165
+ scope: token.scope,
166
+ clientId: token.clientId,
167
+ username: token.username,
168
+ });
169
+ console.log(` - Created OAuth token for client: ${token.clientId}`);
170
+ }
171
+ else {
172
+ console.log(` - OAuth token already exists: ${token.accessToken.substring(0, 8)}...`);
173
+ }
174
+ }
175
+ }
176
+ console.log('✅ Migration completed successfully');
177
+ return true;
178
+ }
179
+ catch (error) {
180
+ console.error('❌ Migration failed:', error);
181
+ return false;
182
+ }
183
+ }
184
+ /**
185
+ * Initialize database mode
186
+ * This function should be called during application startup when USE_DB=true
187
+ */
188
+ export async function initializeDatabaseMode() {
189
+ try {
190
+ console.log('Initializing database mode...');
191
+ // Initialize database connection
192
+ await initializeDatabase();
193
+ console.log('Database connection established');
194
+ // Switch to database factory
195
+ setDaoFactory(DatabaseDaoFactory.getInstance());
196
+ console.log('Switched to database-backed DAO implementations');
197
+ // Check if migration is needed
198
+ const userRepo = new UserRepository();
199
+ const userCount = await userRepo.count();
200
+ if (userCount === 0) {
201
+ console.log('No users found in database, running migration...');
202
+ const migrated = await migrateToDatabase();
203
+ if (!migrated) {
204
+ throw new Error('Migration failed');
205
+ }
206
+ }
207
+ else {
208
+ console.log(`Database already contains ${userCount} users, skipping migration`);
209
+ }
210
+ console.log('✅ Database mode initialized successfully');
211
+ return true;
212
+ }
213
+ catch (error) {
214
+ console.error('❌ Failed to initialize database mode:', error);
215
+ return false;
216
+ }
217
+ }
218
+ /**
219
+ * CLI tool for migration
220
+ */
221
+ export async function runMigrationCli() {
222
+ console.log('MCPHub Configuration Migration Tool');
223
+ console.log('====================================\n');
224
+ const success = await migrateToDatabase();
225
+ if (success) {
226
+ console.log('\n✅ Migration completed successfully!');
227
+ console.log('You can now set USE_DB=true to use database-backed configuration');
228
+ process.exit(0);
229
+ }
230
+ else {
231
+ console.log('\n❌ Migration failed!');
232
+ process.exit(1);
233
+ }
234
+ }
235
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,15 @@ import { findUserByUsername } from '../models/User.js';
4
4
  /**
5
5
  * Resolve an MCPHub user from a raw OAuth bearer token.
6
6
  */
7
- export const resolveOAuthUserFromToken = (token) => {
7
+ export const resolveOAuthUserFromToken = async (token) => {
8
8
  if (!token || !isOAuthServerEnabled()) {
9
9
  return null;
10
10
  }
11
- const oauthToken = getOAuthStoredToken(token);
11
+ const oauthToken = await getOAuthStoredToken(token);
12
12
  if (!oauthToken || oauthToken.accessToken !== token) {
13
13
  return null;
14
14
  }
15
- const dbUser = findUserByUsername(oauthToken.username);
15
+ const dbUser = await findUserByUsername(oauthToken.username);
16
16
  return {
17
17
  username: oauthToken.username,
18
18
  password: '',
@@ -22,7 +22,7 @@ export const resolveOAuthUserFromToken = (token) => {
22
22
  /**
23
23
  * Resolve an MCPHub user from an Authorization header.
24
24
  */
25
- export const resolveOAuthUserFromAuthHeader = (authHeader) => {
25
+ export const resolveOAuthUserFromAuthHeader = async (authHeader) => {
26
26
  if (!authHeader || !authHeader.startsWith('Bearer ')) {
27
27
  return null;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oauthBearer.js","sourceRoot":"","sources":["../../src/utils/oauthBearer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAgB,EAAE;IACxE,IAAI,CAAC,KAAK,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;KAClC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAmB,EAAgB,EAAE;IAClF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"oauthBearer.js","sourceRoot":"","sources":["../../src/utils/oauthBearer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,KAAc,EAAyB,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;KAClC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,UAAmB,EACI,EAAE;IACzB,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC"}