@samanhappy/mcphub 0.12.4 → 0.12.6

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 (69) hide show
  1. package/dist/config/index.js +6 -1
  2. package/dist/config/index.js.map +1 -1
  3. package/dist/controllers/builtinPromptController.js +119 -0
  4. package/dist/controllers/builtinPromptController.js.map +1 -0
  5. package/dist/controllers/builtinResourceController.js +142 -0
  6. package/dist/controllers/builtinResourceController.js.map +1 -0
  7. package/dist/controllers/serverController.js +134 -8
  8. package/dist/controllers/serverController.js.map +1 -1
  9. package/dist/dao/BuiltinPromptDao.js +72 -0
  10. package/dist/dao/BuiltinPromptDao.js.map +1 -0
  11. package/dist/dao/BuiltinPromptDaoDbImpl.js +76 -0
  12. package/dist/dao/BuiltinPromptDaoDbImpl.js.map +1 -0
  13. package/dist/dao/BuiltinResourceDao.js +72 -0
  14. package/dist/dao/BuiltinResourceDao.js.map +1 -0
  15. package/dist/dao/BuiltinResourceDaoDbImpl.js +76 -0
  16. package/dist/dao/BuiltinResourceDaoDbImpl.js.map +1 -0
  17. package/dist/dao/DaoFactory.js +24 -0
  18. package/dist/dao/DaoFactory.js.map +1 -1
  19. package/dist/dao/DatabaseDaoFactory.js +18 -0
  20. package/dist/dao/DatabaseDaoFactory.js.map +1 -1
  21. package/dist/dao/ServerDao.js +4 -0
  22. package/dist/dao/ServerDao.js.map +1 -1
  23. package/dist/dao/ServerDaoDbImpl.js +7 -0
  24. package/dist/dao/ServerDaoDbImpl.js.map +1 -1
  25. package/dist/dao/index.js +4 -0
  26. package/dist/dao/index.js.map +1 -1
  27. package/dist/db/connection.js +33 -14
  28. package/dist/db/connection.js.map +1 -1
  29. package/dist/db/entities/BuiltinPrompt.js +57 -0
  30. package/dist/db/entities/BuiltinPrompt.js.map +1 -0
  31. package/dist/db/entities/BuiltinResource.js +57 -0
  32. package/dist/db/entities/BuiltinResource.js.map +1 -0
  33. package/dist/db/entities/Server.js +4 -0
  34. package/dist/db/entities/Server.js.map +1 -1
  35. package/dist/db/entities/VectorEmbedding.js +1 -2
  36. package/dist/db/entities/VectorEmbedding.js.map +1 -1
  37. package/dist/db/entities/index.js +5 -1
  38. package/dist/db/entities/index.js.map +1 -1
  39. package/dist/db/repositories/BuiltinPromptRepository.js +40 -0
  40. package/dist/db/repositories/BuiltinPromptRepository.js.map +1 -0
  41. package/dist/db/repositories/BuiltinResourceRepository.js +40 -0
  42. package/dist/db/repositories/BuiltinResourceRepository.js.map +1 -0
  43. package/dist/db/repositories/index.js +3 -1
  44. package/dist/db/repositories/index.js.map +1 -1
  45. package/dist/routes/index.js +18 -1
  46. package/dist/routes/index.js.map +1 -1
  47. package/dist/services/mcpService.js +176 -8
  48. package/dist/services/mcpService.js.map +1 -1
  49. package/dist/services/sseService.js +13 -0
  50. package/dist/services/sseService.js.map +1 -1
  51. package/dist/services/vectorSearchService.js +35 -1
  52. package/dist/services/vectorSearchService.js.map +1 -1
  53. package/dist/utils/base64.js +59 -0
  54. package/dist/utils/base64.js.map +1 -0
  55. package/dist/utils/migration.js +47 -0
  56. package/dist/utils/migration.js.map +1 -1
  57. package/dist/utils/smartRouting.js +9 -0
  58. package/dist/utils/smartRouting.js.map +1 -1
  59. package/frontend/dist/assets/index-BT845f3p.js +314 -0
  60. package/frontend/dist/assets/index-BT845f3p.js.map +1 -0
  61. package/frontend/dist/assets/index-Cf9Rz7Uy.css +1 -0
  62. package/frontend/dist/assets/resourceService-B7vWfjLj.js +2 -0
  63. package/frontend/dist/assets/resourceService-B7vWfjLj.js.map +1 -0
  64. package/frontend/dist/index.html +2 -2
  65. package/mcp_settings.json +3 -1
  66. package/package.json +2 -2
  67. package/frontend/dist/assets/index-CtcblSpA.js +0 -294
  68. package/frontend/dist/assets/index-CtcblSpA.js.map +0 -1
  69. package/frontend/dist/assets/index-DM2_JGfR.css +0 -1
@@ -141,6 +141,11 @@ export function replaceEnvVars(input) {
141
141
  }
142
142
  return input;
143
143
  }
144
+ /**
145
+ * Expand environment variable references and trim leading/trailing whitespace.
146
+ * Trimming here prevents hard-to-diagnose API failures caused by accidental
147
+ * whitespace in values at the beginning or end of the string.
148
+ */
144
149
  export const expandEnvVars = (value) => {
145
150
  if (typeof value !== 'string') {
146
151
  return String(value);
@@ -149,7 +154,7 @@ export const expandEnvVars = (value) => {
149
154
  let result = value.replace(/\$\{([^}]+)\}/g, (_, key) => process.env[key] || '');
150
155
  // Also replace $VAR format (common on Unix-like systems)
151
156
  result = result.replace(/\$([A-Z_][A-Z0-9_]*)/g, (_, key) => process.env[key] || '');
152
- return result;
157
+ return result.trim();
153
158
  };
154
159
  export default defaultConfig;
155
160
  export function getNameSeparator() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { getBuiltinPromptDao } from '../dao/index.js';
2
+ /**
3
+ * List all built-in prompts
4
+ */
5
+ export const listBuiltinPrompts = async (_req, res) => {
6
+ try {
7
+ const prompts = await getBuiltinPromptDao().findAll();
8
+ const response = {
9
+ success: true,
10
+ data: prompts,
11
+ };
12
+ res.json(response);
13
+ }
14
+ catch (error) {
15
+ console.error('Error listing built-in prompts:', error);
16
+ res.status(500).json({
17
+ success: false,
18
+ message: error instanceof Error ? error.message : 'Failed to list built-in prompts',
19
+ });
20
+ }
21
+ };
22
+ /**
23
+ * Get a single built-in prompt by ID
24
+ */
25
+ export const getBuiltinPrompt = async (req, res) => {
26
+ try {
27
+ const { id } = req.params;
28
+ const prompt = await getBuiltinPromptDao().findById(id);
29
+ if (!prompt) {
30
+ res.status(404).json({ success: false, message: 'Built-in prompt not found' });
31
+ return;
32
+ }
33
+ const response = { success: true, data: prompt };
34
+ res.json(response);
35
+ }
36
+ catch (error) {
37
+ console.error('Error getting built-in prompt:', error);
38
+ res.status(500).json({
39
+ success: false,
40
+ message: error instanceof Error ? error.message : 'Failed to get built-in prompt',
41
+ });
42
+ }
43
+ };
44
+ /**
45
+ * Create a new built-in prompt
46
+ */
47
+ export const createBuiltinPrompt = async (req, res) => {
48
+ try {
49
+ const { name, title, description, template, arguments: args, enabled } = req.body;
50
+ if (!name || !template) {
51
+ res.status(400).json({ success: false, message: 'name and template are required' });
52
+ return;
53
+ }
54
+ const prompt = await getBuiltinPromptDao().create({
55
+ name,
56
+ title,
57
+ description,
58
+ template,
59
+ arguments: args,
60
+ enabled: enabled !== false,
61
+ });
62
+ const response = { success: true, data: prompt };
63
+ res.status(201).json(response);
64
+ }
65
+ catch (error) {
66
+ console.error('Error creating built-in prompt:', error);
67
+ const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
68
+ res.status(status).json({
69
+ success: false,
70
+ message: error instanceof Error ? error.message : 'Failed to create built-in prompt',
71
+ });
72
+ }
73
+ };
74
+ /**
75
+ * Update an existing built-in prompt
76
+ */
77
+ export const updateBuiltinPrompt = async (req, res) => {
78
+ try {
79
+ const { id } = req.params;
80
+ const updates = req.body;
81
+ const prompt = await getBuiltinPromptDao().update(id, updates);
82
+ if (!prompt) {
83
+ res.status(404).json({ success: false, message: 'Built-in prompt not found' });
84
+ return;
85
+ }
86
+ const response = { success: true, data: prompt };
87
+ res.json(response);
88
+ }
89
+ catch (error) {
90
+ console.error('Error updating built-in prompt:', error);
91
+ const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
92
+ res.status(status).json({
93
+ success: false,
94
+ message: error instanceof Error ? error.message : 'Failed to update built-in prompt',
95
+ });
96
+ }
97
+ };
98
+ /**
99
+ * Delete a built-in prompt
100
+ */
101
+ export const deleteBuiltinPrompt = async (req, res) => {
102
+ try {
103
+ const { id } = req.params;
104
+ const deleted = await getBuiltinPromptDao().delete(id);
105
+ if (!deleted) {
106
+ res.status(404).json({ success: false, message: 'Built-in prompt not found' });
107
+ return;
108
+ }
109
+ res.json({ success: true, message: 'Built-in prompt deleted' });
110
+ }
111
+ catch (error) {
112
+ console.error('Error deleting built-in prompt:', error);
113
+ res.status(500).json({
114
+ success: false,
115
+ message: error instanceof Error ? error.message : 'Failed to delete built-in prompt',
116
+ });
117
+ }
118
+ };
119
+ //# sourceMappingURL=builtinPromptController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinPromptController.js","sourceRoot":"","sources":["../../src/controllers/builtinPromptController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { getBuiltinResourceDao } from '../dao/index.js';
2
+ import { handleReadResourceRequest } from '../services/mcpService.js';
3
+ /**
4
+ * List all built-in resources
5
+ */
6
+ export const listBuiltinResources = async (_req, res) => {
7
+ try {
8
+ const resources = await getBuiltinResourceDao().findAll();
9
+ const response = {
10
+ success: true,
11
+ data: resources,
12
+ };
13
+ res.json(response);
14
+ }
15
+ catch (error) {
16
+ console.error('Error listing built-in resources:', error);
17
+ res.status(500).json({
18
+ success: false,
19
+ message: error instanceof Error ? error.message : 'Failed to list built-in resources',
20
+ });
21
+ }
22
+ };
23
+ /**
24
+ * Get a single built-in resource by ID
25
+ */
26
+ export const getBuiltinResource = async (req, res) => {
27
+ try {
28
+ const { id } = req.params;
29
+ const resource = await getBuiltinResourceDao().findById(id);
30
+ if (!resource) {
31
+ res.status(404).json({ success: false, message: 'Built-in resource not found' });
32
+ return;
33
+ }
34
+ const response = { success: true, data: resource };
35
+ res.json(response);
36
+ }
37
+ catch (error) {
38
+ console.error('Error getting built-in resource:', error);
39
+ res.status(500).json({
40
+ success: false,
41
+ message: error instanceof Error ? error.message : 'Failed to get built-in resource',
42
+ });
43
+ }
44
+ };
45
+ /**
46
+ * Create a new built-in resource
47
+ */
48
+ export const createBuiltinResource = async (req, res) => {
49
+ try {
50
+ const { uri, name, description, mimeType, content, enabled } = req.body;
51
+ if (!uri || !content) {
52
+ res.status(400).json({ success: false, message: 'uri and content are required' });
53
+ return;
54
+ }
55
+ const resource = await getBuiltinResourceDao().create({
56
+ uri,
57
+ name,
58
+ description,
59
+ mimeType: mimeType || 'text/plain',
60
+ content,
61
+ enabled: enabled !== false,
62
+ });
63
+ const response = { success: true, data: resource };
64
+ res.status(201).json(response);
65
+ }
66
+ catch (error) {
67
+ console.error('Error creating built-in resource:', error);
68
+ const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
69
+ res.status(status).json({
70
+ success: false,
71
+ message: error instanceof Error ? error.message : 'Failed to create built-in resource',
72
+ });
73
+ }
74
+ };
75
+ /**
76
+ * Update an existing built-in resource
77
+ */
78
+ export const updateBuiltinResource = async (req, res) => {
79
+ try {
80
+ const { id } = req.params;
81
+ const updates = req.body;
82
+ const resource = await getBuiltinResourceDao().update(id, updates);
83
+ if (!resource) {
84
+ res.status(404).json({ success: false, message: 'Built-in resource not found' });
85
+ return;
86
+ }
87
+ const response = { success: true, data: resource };
88
+ res.json(response);
89
+ }
90
+ catch (error) {
91
+ console.error('Error updating built-in resource:', error);
92
+ const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
93
+ res.status(status).json({
94
+ success: false,
95
+ message: error instanceof Error ? error.message : 'Failed to update built-in resource',
96
+ });
97
+ }
98
+ };
99
+ /**
100
+ * Delete a built-in resource
101
+ */
102
+ export const deleteBuiltinResource = async (req, res) => {
103
+ try {
104
+ const { id } = req.params;
105
+ const deleted = await getBuiltinResourceDao().delete(id);
106
+ if (!deleted) {
107
+ res.status(404).json({ success: false, message: 'Built-in resource not found' });
108
+ return;
109
+ }
110
+ res.json({ success: true, message: 'Built-in resource deleted' });
111
+ }
112
+ catch (error) {
113
+ console.error('Error deleting built-in resource:', error);
114
+ res.status(500).json({
115
+ success: false,
116
+ message: error instanceof Error ? error.message : 'Failed to delete built-in resource',
117
+ });
118
+ }
119
+ };
120
+ /**
121
+ * Read a resource by URI (built-in or from a connected MCP server)
122
+ */
123
+ export const readResource = async (req, res) => {
124
+ try {
125
+ const { uri } = req.body;
126
+ if (!uri) {
127
+ res.status(400).json({ success: false, message: 'uri is required' });
128
+ return;
129
+ }
130
+ const result = await handleReadResourceRequest({ params: { uri } }, {});
131
+ const response = { success: true, data: result };
132
+ res.json(response);
133
+ }
134
+ catch (error) {
135
+ console.error('Error reading resource:', error);
136
+ res.status(500).json({
137
+ success: false,
138
+ message: error instanceof Error ? error.message : 'Failed to read resource',
139
+ });
140
+ }
141
+ };
142
+ //# sourceMappingURL=builtinResourceController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinResourceController.js","sourceRoot":"","sources":["../../src/controllers/builtinResourceController.ts"],"names":[],"mappings":"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"}
@@ -770,6 +770,7 @@ export const updateSystemConfig = async (req, res) => {
770
770
  (typeof smartRouting.enabled === 'boolean' ||
771
771
  typeof smartRouting.dbUrl === 'string' ||
772
772
  typeof smartRouting.embeddingProvider === 'string' ||
773
+ typeof smartRouting.embeddingEncodingFormat === 'string' ||
773
774
  typeof smartRouting.openaiApiBaseUrl === 'string' ||
774
775
  typeof smartRouting.openaiApiKey === 'string' ||
775
776
  typeof smartRouting.openaiApiEmbeddingModel === 'string' ||
@@ -944,6 +945,11 @@ export const updateSystemConfig = async (req, res) => {
944
945
  systemConfig.smartRouting.embeddingProvider =
945
946
  normalized === 'azure' || normalized === 'azure_openai' ? 'azure_openai' : 'openai';
946
947
  }
948
+ if (typeof smartRouting.embeddingEncodingFormat === 'string') {
949
+ const normalized = smartRouting.embeddingEncodingFormat.trim().toLowerCase();
950
+ systemConfig.smartRouting.embeddingEncodingFormat =
951
+ normalized === 'base64' || normalized === 'float' ? normalized : 'auto';
952
+ }
947
953
  if (typeof smartRouting.enabled === 'boolean') {
948
954
  // If enabling Smart Routing, validate required fields
949
955
  if (smartRouting.enabled) {
@@ -986,29 +992,30 @@ export const updateSystemConfig = async (req, res) => {
986
992
  systemConfig.smartRouting.enabled = smartRouting.enabled;
987
993
  }
988
994
  if (typeof smartRouting.dbUrl === 'string') {
989
- systemConfig.smartRouting.dbUrl = smartRouting.dbUrl;
995
+ systemConfig.smartRouting.dbUrl = smartRouting.dbUrl?.trim();
990
996
  }
991
997
  if (typeof smartRouting.openaiApiBaseUrl === 'string') {
992
- systemConfig.smartRouting.openaiApiBaseUrl = smartRouting.openaiApiBaseUrl;
998
+ systemConfig.smartRouting.openaiApiBaseUrl = smartRouting.openaiApiBaseUrl?.trim();
993
999
  }
994
1000
  if (typeof smartRouting.openaiApiKey === 'string') {
995
- systemConfig.smartRouting.openaiApiKey = smartRouting.openaiApiKey;
1001
+ systemConfig.smartRouting.openaiApiKey = smartRouting.openaiApiKey?.trim();
996
1002
  }
997
1003
  if (typeof smartRouting.openaiApiEmbeddingModel === 'string') {
998
- systemConfig.smartRouting.openaiApiEmbeddingModel = smartRouting.openaiApiEmbeddingModel;
1004
+ systemConfig.smartRouting.openaiApiEmbeddingModel =
1005
+ smartRouting.openaiApiEmbeddingModel?.trim();
999
1006
  }
1000
1007
  if (typeof smartRouting.azureOpenaiEndpoint === 'string') {
1001
- systemConfig.smartRouting.azureOpenaiEndpoint = smartRouting.azureOpenaiEndpoint;
1008
+ systemConfig.smartRouting.azureOpenaiEndpoint = smartRouting.azureOpenaiEndpoint?.trim();
1002
1009
  }
1003
1010
  if (typeof smartRouting.azureOpenaiApiKey === 'string') {
1004
- systemConfig.smartRouting.azureOpenaiApiKey = smartRouting.azureOpenaiApiKey;
1011
+ systemConfig.smartRouting.azureOpenaiApiKey = smartRouting.azureOpenaiApiKey?.trim();
1005
1012
  }
1006
1013
  if (typeof smartRouting.azureOpenaiApiVersion === 'string') {
1007
- systemConfig.smartRouting.azureOpenaiApiVersion = smartRouting.azureOpenaiApiVersion;
1014
+ systemConfig.smartRouting.azureOpenaiApiVersion = smartRouting.azureOpenaiApiVersion?.trim();
1008
1015
  }
1009
1016
  if (typeof smartRouting.azureOpenaiEmbeddingDeployment === 'string') {
1010
1017
  systemConfig.smartRouting.azureOpenaiEmbeddingDeployment =
1011
- smartRouting.azureOpenaiEmbeddingDeployment;
1018
+ smartRouting.azureOpenaiEmbeddingDeployment?.trim();
1012
1019
  }
1013
1020
  if (typeof smartRouting.progressiveDisclosure === 'boolean') {
1014
1021
  systemConfig.smartRouting.progressiveDisclosure = smartRouting.progressiveDisclosure;
@@ -1018,6 +1025,8 @@ export const updateSystemConfig = async (req, res) => {
1018
1025
  const hasConfigChanged = previousSmartRoutingConfig.dbUrl !== systemConfig.smartRouting.dbUrl ||
1019
1026
  previousSmartRoutingConfig.embeddingProvider !==
1020
1027
  systemConfig.smartRouting.embeddingProvider ||
1028
+ previousSmartRoutingConfig.embeddingEncodingFormat !==
1029
+ systemConfig.smartRouting.embeddingEncodingFormat ||
1021
1030
  previousSmartRoutingConfig.openaiApiBaseUrl !==
1022
1031
  systemConfig.smartRouting.openaiApiBaseUrl ||
1023
1032
  previousSmartRoutingConfig.openaiApiKey !== systemConfig.smartRouting.openaiApiKey ||
@@ -1251,4 +1260,121 @@ export const updatePromptDescription = async (req, res) => {
1251
1260
  });
1252
1261
  }
1253
1262
  };
1263
+ // Toggle resource status for a specific server
1264
+ export const toggleResource = async (req, res) => {
1265
+ try {
1266
+ // Decode URL-encoded parameters to handle slashes in server/resource names
1267
+ const serverName = decodeURIComponent(req.params.serverName);
1268
+ const resourceUri = decodeURIComponent(req.params.resourceUri);
1269
+ const { enabled } = req.body;
1270
+ if (!serverName || !resourceUri) {
1271
+ res.status(400).json({
1272
+ success: false,
1273
+ message: 'Server name and resource URI are required',
1274
+ });
1275
+ return;
1276
+ }
1277
+ if (typeof enabled !== 'boolean') {
1278
+ res.status(400).json({
1279
+ success: false,
1280
+ message: 'Enabled status must be a boolean',
1281
+ });
1282
+ return;
1283
+ }
1284
+ const serverDao = getServerDao();
1285
+ const server = await serverDao.findById(serverName);
1286
+ if (!server) {
1287
+ res.status(404).json({
1288
+ success: false,
1289
+ message: 'Server not found',
1290
+ });
1291
+ return;
1292
+ }
1293
+ // Initialize resources config if it doesn't exist
1294
+ const resources = server.resources || {};
1295
+ // Set the resource's enabled state (preserve existing description if any)
1296
+ resources[resourceUri] = { ...resources[resourceUri], enabled };
1297
+ // Update via DAO (supports both file and database modes)
1298
+ const result = await serverDao.updateResources(serverName, resources);
1299
+ if (!result) {
1300
+ res.status(500).json({
1301
+ success: false,
1302
+ message: 'Failed to save settings',
1303
+ });
1304
+ return;
1305
+ }
1306
+ // Notify that tools/resources metadata has changed
1307
+ notifyToolChanged();
1308
+ res.json({
1309
+ success: true,
1310
+ message: `Resource ${resourceUri} ${enabled ? 'enabled' : 'disabled'} successfully`,
1311
+ });
1312
+ }
1313
+ catch (error) {
1314
+ res.status(500).json({
1315
+ success: false,
1316
+ message: 'Internal server error',
1317
+ });
1318
+ }
1319
+ };
1320
+ // Update resource description for a specific server
1321
+ export const updateResourceDescription = async (req, res) => {
1322
+ try {
1323
+ // Decode URL-encoded parameters to handle slashes in server/resource names
1324
+ const serverName = decodeURIComponent(req.params.serverName);
1325
+ const resourceUri = decodeURIComponent(req.params.resourceUri);
1326
+ const { description } = req.body;
1327
+ if (!serverName || !resourceUri) {
1328
+ res.status(400).json({
1329
+ success: false,
1330
+ message: 'Server name and resource URI are required',
1331
+ });
1332
+ return;
1333
+ }
1334
+ if (typeof description !== 'string') {
1335
+ res.status(400).json({
1336
+ success: false,
1337
+ message: 'Description must be a string',
1338
+ });
1339
+ return;
1340
+ }
1341
+ const serverDao = getServerDao();
1342
+ const server = await serverDao.findById(serverName);
1343
+ if (!server) {
1344
+ res.status(404).json({
1345
+ success: false,
1346
+ message: 'Server not found',
1347
+ });
1348
+ return;
1349
+ }
1350
+ // Initialize resources config if it doesn't exist
1351
+ const resources = server.resources || {};
1352
+ // Set the resource's description
1353
+ if (!resources[resourceUri]) {
1354
+ resources[resourceUri] = { enabled: true };
1355
+ }
1356
+ resources[resourceUri].description = description;
1357
+ // Update via DAO (supports both file and database modes)
1358
+ const result = await serverDao.updateResources(serverName, resources);
1359
+ if (!result) {
1360
+ res.status(500).json({
1361
+ success: false,
1362
+ message: 'Failed to save settings',
1363
+ });
1364
+ return;
1365
+ }
1366
+ // Notify that tools/resources metadata has changed
1367
+ notifyToolChanged();
1368
+ res.json({
1369
+ success: true,
1370
+ message: `Resource ${resourceUri} description updated successfully`,
1371
+ });
1372
+ }
1373
+ catch (error) {
1374
+ res.status(500).json({
1375
+ success: false,
1376
+ message: 'Internal server error',
1377
+ });
1378
+ }
1379
+ };
1254
1380
  //# sourceMappingURL=serverController.js.map