@mcp-shark/mcp-shark 1.5.3 → 1.5.5

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 (188) hide show
  1. package/README.md +32 -96
  2. package/bin/mcp-shark.js +1 -1
  3. package/core/configs/codex.js +68 -0
  4. package/core/configs/environment.js +51 -0
  5. package/{lib/common → core}/configs/index.js +16 -1
  6. package/core/constants/Defaults.js +15 -0
  7. package/core/constants/HttpStatus.js +14 -0
  8. package/core/constants/Server.js +20 -0
  9. package/core/constants/StatusCodes.js +25 -0
  10. package/core/constants/index.js +7 -0
  11. package/core/container/DependencyContainer.js +179 -0
  12. package/core/db/init.js +33 -0
  13. package/core/index.js +10 -0
  14. package/{mcp-server/lib/common/error.js → core/libraries/ErrorLibrary.js} +4 -0
  15. package/core/libraries/LoggerLibrary.js +91 -0
  16. package/core/libraries/SerializationLibrary.js +32 -0
  17. package/core/libraries/bootstrap-logger.js +19 -0
  18. package/core/libraries/errors/ApplicationError.js +97 -0
  19. package/core/libraries/index.js +17 -0
  20. package/{mcp-server/lib → core/mcp-server}/auditor/audit.js +77 -53
  21. package/core/mcp-server/index.js +192 -0
  22. package/{mcp-server/lib → core/mcp-server}/server/external/all.js +1 -1
  23. package/core/mcp-server/server/external/config.js +75 -0
  24. package/{mcp-server/lib → core/mcp-server}/server/external/single/client.js +1 -1
  25. package/{mcp-server/lib → core/mcp-server}/server/external/single/request.js +1 -1
  26. package/{mcp-server/lib → core/mcp-server}/server/external/single/run.js +20 -11
  27. package/{mcp-server/lib → core/mcp-server}/server/external/single/transport.js +1 -1
  28. package/{mcp-server/lib → core/mcp-server}/server/internal/handlers/error.js +1 -1
  29. package/core/mcp-server/server/internal/handlers/prompts-get.js +28 -0
  30. package/core/mcp-server/server/internal/handlers/prompts-list.js +21 -0
  31. package/core/mcp-server/server/internal/handlers/resources-list.js +21 -0
  32. package/core/mcp-server/server/internal/handlers/resources-read.js +28 -0
  33. package/core/mcp-server/server/internal/handlers/tools-call.js +44 -0
  34. package/core/mcp-server/server/internal/handlers/tools-list.js +23 -0
  35. package/core/mcp-server/server/internal/run.js +53 -0
  36. package/{mcp-server/lib → core/mcp-server}/server/internal/server.js +11 -1
  37. package/core/models/ConversationFilters.js +31 -0
  38. package/core/models/ExportFormat.js +8 -0
  39. package/core/models/RequestFilters.js +43 -0
  40. package/core/models/SessionFilters.js +23 -0
  41. package/core/models/index.js +8 -0
  42. package/core/repositories/AuditRepository.js +233 -0
  43. package/core/repositories/ConversationRepository.js +182 -0
  44. package/core/repositories/PacketRepository.js +237 -0
  45. package/core/repositories/SchemaRepository.js +107 -0
  46. package/core/repositories/SessionRepository.js +59 -0
  47. package/core/repositories/StatisticsRepository.js +54 -0
  48. package/core/repositories/index.js +10 -0
  49. package/core/services/AuditService.js +144 -0
  50. package/core/services/BackupService.js +222 -0
  51. package/core/services/ConfigDetectionService.js +89 -0
  52. package/core/services/ConfigFileService.js +210 -0
  53. package/core/services/ConfigPatchingService.js +137 -0
  54. package/core/services/ConfigService.js +250 -0
  55. package/core/services/ConfigTransformService.js +178 -0
  56. package/core/services/ConversationService.js +19 -0
  57. package/core/services/ExportService.js +117 -0
  58. package/core/services/LogService.js +64 -0
  59. package/core/services/McpClientService.js +235 -0
  60. package/core/services/McpDiscoveryService.js +107 -0
  61. package/core/services/RequestService.js +56 -0
  62. package/core/services/ScanCacheService.js +242 -0
  63. package/core/services/ScanService.js +167 -0
  64. package/core/services/ServerManagementService.js +206 -0
  65. package/core/services/SessionService.js +34 -0
  66. package/core/services/SettingsService.js +163 -0
  67. package/core/services/StatisticsService.js +64 -0
  68. package/core/services/TokenService.js +94 -0
  69. package/core/services/index.js +25 -0
  70. package/core/services/parsers/ConfigParserFactory.js +113 -0
  71. package/core/services/parsers/JsonConfigParser.js +66 -0
  72. package/core/services/parsers/LegacyJsonConfigParser.js +71 -0
  73. package/core/services/parsers/TomlConfigParser.js +87 -0
  74. package/core/services/parsers/index.js +4 -0
  75. package/{ui/server → core}/utils/scan-cache/directory.js +1 -1
  76. package/core/utils/validation.js +77 -0
  77. package/package.json +14 -11
  78. package/ui/dist/assets/index-CArYxKxS.js +35 -0
  79. package/ui/dist/index.html +1 -1
  80. package/ui/server/controllers/BackupController.js +129 -0
  81. package/ui/server/controllers/ConfigController.js +92 -0
  82. package/ui/server/controllers/ConversationController.js +41 -0
  83. package/ui/server/controllers/LogController.js +44 -0
  84. package/ui/server/controllers/McpClientController.js +60 -0
  85. package/ui/server/controllers/McpDiscoveryController.js +44 -0
  86. package/ui/server/controllers/RequestController.js +129 -0
  87. package/ui/server/controllers/ScanController.js +122 -0
  88. package/ui/server/controllers/ServerManagementController.js +134 -0
  89. package/ui/server/controllers/SessionController.js +57 -0
  90. package/ui/server/controllers/SettingsController.js +24 -0
  91. package/ui/server/controllers/StatisticsController.js +54 -0
  92. package/ui/server/controllers/TokenController.js +58 -0
  93. package/ui/server/controllers/index.js +17 -0
  94. package/ui/server/routes/backups/index.js +15 -9
  95. package/ui/server/routes/composite/index.js +62 -32
  96. package/ui/server/routes/composite/servers.js +20 -15
  97. package/ui/server/routes/config.js +13 -172
  98. package/ui/server/routes/conversations.js +9 -19
  99. package/ui/server/routes/help.js +4 -3
  100. package/ui/server/routes/logs.js +14 -26
  101. package/ui/server/routes/playground.js +11 -174
  102. package/ui/server/routes/requests.js +12 -232
  103. package/ui/server/routes/sessions.js +10 -21
  104. package/ui/server/routes/settings.js +10 -192
  105. package/ui/server/routes/smartscan.js +26 -15
  106. package/ui/server/routes/statistics.js +8 -79
  107. package/ui/server/setup.js +162 -0
  108. package/ui/server/swagger/paths/backups.js +151 -0
  109. package/ui/server/swagger/paths/components.js +76 -0
  110. package/ui/server/swagger/paths/config.js +117 -0
  111. package/ui/server/swagger/paths/conversations.js +29 -0
  112. package/ui/server/swagger/paths/help.js +82 -0
  113. package/ui/server/swagger/paths/logs.js +87 -0
  114. package/ui/server/swagger/paths/playground.js +49 -0
  115. package/ui/server/swagger/paths/requests.js +178 -0
  116. package/ui/server/swagger/paths/serverManagement.js +169 -0
  117. package/ui/server/swagger/paths/sessions.js +61 -0
  118. package/ui/server/swagger/paths/settings.js +31 -0
  119. package/ui/server/swagger/paths/smartScan/discovery.js +97 -0
  120. package/ui/server/swagger/paths/smartScan/index.js +13 -0
  121. package/ui/server/swagger/paths/smartScan/scans.js +151 -0
  122. package/ui/server/swagger/paths/smartScan/token.js +71 -0
  123. package/ui/server/swagger/paths/statistics.js +40 -0
  124. package/ui/server/swagger/paths.js +38 -0
  125. package/ui/server/swagger/swagger.js +37 -0
  126. package/ui/server/utils/cleanup.js +99 -0
  127. package/ui/server/utils/config.js +18 -96
  128. package/ui/server/utils/errorHandler.js +43 -0
  129. package/ui/server/utils/logger.js +2 -2
  130. package/ui/server/utils/paths.js +27 -30
  131. package/ui/server/utils/port.js +21 -21
  132. package/ui/server/utils/process.js +18 -10
  133. package/ui/server/utils/processState.js +17 -0
  134. package/ui/server/utils/signals.js +34 -0
  135. package/ui/server/websocket/broadcast.js +33 -0
  136. package/ui/server/websocket/handler.js +52 -0
  137. package/ui/server.js +51 -230
  138. package/ui/src/App.jsx +2 -0
  139. package/ui/src/CompositeSetup.jsx +23 -9
  140. package/ui/src/PacketFilters.jsx +17 -3
  141. package/ui/src/components/AlertModal.jsx +116 -0
  142. package/ui/src/components/App/ApiDocsButton.jsx +57 -0
  143. package/ui/src/components/App/useAppState.js +43 -1
  144. package/ui/src/components/BackupList.jsx +27 -3
  145. package/ui/src/utils/requestPairing.js +35 -36
  146. package/ui/src/utils/requestUtils.js +1 -0
  147. package/lib/common/db/init.js +0 -132
  148. package/lib/common/db/logger.js +0 -349
  149. package/lib/common/db/query.js +0 -403
  150. package/lib/common/logger.js +0 -90
  151. package/mcp-server/index.js +0 -111
  152. package/mcp-server/lib/server/external/config.js +0 -57
  153. package/mcp-server/lib/server/internal/handlers/prompts-get.js +0 -20
  154. package/mcp-server/lib/server/internal/handlers/prompts-list.js +0 -13
  155. package/mcp-server/lib/server/internal/handlers/resources-list.js +0 -13
  156. package/mcp-server/lib/server/internal/handlers/resources-read.js +0 -20
  157. package/mcp-server/lib/server/internal/handlers/tools-call.js +0 -35
  158. package/mcp-server/lib/server/internal/handlers/tools-list.js +0 -15
  159. package/mcp-server/lib/server/internal/run.js +0 -37
  160. package/mcp-server/mcp-shark.js +0 -22
  161. package/ui/dist/assets/index-CFHeMNwd.js +0 -35
  162. package/ui/server/routes/backups/deleteBackup.js +0 -54
  163. package/ui/server/routes/backups/listBackups.js +0 -75
  164. package/ui/server/routes/backups/restoreBackup.js +0 -83
  165. package/ui/server/routes/backups/viewBackup.js +0 -47
  166. package/ui/server/routes/composite/setup.js +0 -129
  167. package/ui/server/routes/composite/status.js +0 -7
  168. package/ui/server/routes/composite/stop.js +0 -39
  169. package/ui/server/routes/composite/utils.js +0 -45
  170. package/ui/server/routes/smartscan/discover.js +0 -118
  171. package/ui/server/routes/smartscan/scans/clearCache.js +0 -23
  172. package/ui/server/routes/smartscan/scans/createBatchScans.js +0 -124
  173. package/ui/server/routes/smartscan/scans/createScan.js +0 -43
  174. package/ui/server/routes/smartscan/scans/getCachedResults.js +0 -52
  175. package/ui/server/routes/smartscan/scans/getScan.js +0 -42
  176. package/ui/server/routes/smartscan/scans/listScans.js +0 -25
  177. package/ui/server/routes/smartscan/scans.js +0 -13
  178. package/ui/server/routes/smartscan/token.js +0 -57
  179. package/ui/server/utils/config-update.js +0 -240
  180. package/ui/server/utils/scan-cache/all-results.js +0 -197
  181. package/ui/server/utils/scan-cache/file-operations.js +0 -107
  182. package/ui/server/utils/scan-cache/hash.js +0 -47
  183. package/ui/server/utils/scan-cache/server-operations.js +0 -85
  184. package/ui/server/utils/scan-cache.js +0 -12
  185. package/ui/server/utils/smartscan-token.js +0 -43
  186. /package/{mcp-server/lib → core/mcp-server}/server/external/kv.js +0 -0
  187. /package/{mcp-server/lib → core/mcp-server}/server/internal/handlers/common.js +0 -0
  188. /package/{mcp-server/lib → core/mcp-server}/server/internal/session.js +0 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Logs endpoints - MCP Shark server logs
3
+ */
4
+
5
+ export const logsPaths = {
6
+ '/api/composite/logs': {
7
+ get: {
8
+ tags: ['Logs'],
9
+ summary: 'Get MCP Shark server logs',
10
+ description: 'Retrieve logs from the MCP Shark server',
11
+ parameters: [
12
+ {
13
+ name: 'limit',
14
+ in: 'query',
15
+ description: 'Maximum number of log entries',
16
+ schema: { type: 'integer', default: 1000 },
17
+ },
18
+ {
19
+ name: 'offset',
20
+ in: 'query',
21
+ description: 'Number of log entries to skip',
22
+ schema: { type: 'integer', default: 0 },
23
+ },
24
+ ],
25
+ responses: {
26
+ 200: {
27
+ description: 'List of log entries',
28
+ content: {
29
+ 'application/json': {
30
+ schema: {
31
+ type: 'array',
32
+ items: { $ref: '#/components/schemas/LogEntry' },
33
+ },
34
+ },
35
+ },
36
+ },
37
+ 500: {
38
+ description: 'Internal server error',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ '/api/composite/logs/clear': {
44
+ post: {
45
+ tags: ['Logs'],
46
+ summary: 'Clear all logs',
47
+ description: 'Delete all log entries',
48
+ responses: {
49
+ 200: {
50
+ description: 'Logs cleared successfully',
51
+ content: {
52
+ 'application/json': {
53
+ schema: {
54
+ type: 'object',
55
+ properties: {
56
+ success: { type: 'boolean' },
57
+ message: { type: 'string' },
58
+ },
59
+ },
60
+ },
61
+ },
62
+ },
63
+ 500: {
64
+ description: 'Internal server error',
65
+ },
66
+ },
67
+ },
68
+ },
69
+ '/api/composite/logs/export': {
70
+ get: {
71
+ tags: ['Logs'],
72
+ summary: 'Export logs',
73
+ description: 'Export logs as a text file',
74
+ responses: {
75
+ 200: {
76
+ description: 'Logs file',
77
+ content: {
78
+ 'text/plain': { schema: { type: 'string' } },
79
+ },
80
+ },
81
+ 500: {
82
+ description: 'Internal server error',
83
+ },
84
+ },
85
+ },
86
+ },
87
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Playground endpoints - MCP playground for testing tools and resources
3
+ */
4
+
5
+ export const playgroundPaths = {
6
+ '/api/playground/proxy': {
7
+ post: {
8
+ tags: ['Playground'],
9
+ summary: 'Proxy MCP request',
10
+ description: 'Proxy a request to an MCP server through the playground',
11
+ requestBody: {
12
+ required: true,
13
+ content: {
14
+ 'application/json': {
15
+ schema: {
16
+ type: 'object',
17
+ required: ['method', 'serverName'],
18
+ properties: {
19
+ method: {
20
+ type: 'string',
21
+ description: 'MCP method to call (e.g., tools/list, prompts/list)',
22
+ },
23
+ serverName: { type: 'string', description: 'Name of the MCP server' },
24
+ params: { type: 'object', description: 'Method parameters' },
25
+ sessionId: { type: 'string', description: 'Session ID for the request' },
26
+ },
27
+ },
28
+ },
29
+ },
30
+ },
31
+ responses: {
32
+ 200: {
33
+ description: 'MCP response',
34
+ content: {
35
+ 'application/json': {
36
+ schema: { type: 'object' },
37
+ },
38
+ },
39
+ },
40
+ 400: {
41
+ description: 'Bad request',
42
+ },
43
+ 500: {
44
+ description: 'Internal server error',
45
+ },
46
+ },
47
+ },
48
+ },
49
+ };
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Requests endpoints - Traffic capture and request/response analysis
3
+ */
4
+
5
+ export const requestsPaths = {
6
+ '/api/requests': {
7
+ get: {
8
+ tags: ['Requests'],
9
+ summary: 'Get captured requests/packets',
10
+ description:
11
+ 'Retrieve captured HTTP requests and responses with optional filtering. Supports filtering by session, server, method, status code, and more.',
12
+ parameters: [
13
+ {
14
+ name: 'sessionId',
15
+ in: 'query',
16
+ description: 'Filter by session ID',
17
+ schema: { type: 'string' },
18
+ },
19
+ {
20
+ name: 'serverName',
21
+ in: 'query',
22
+ description: 'Filter by server name',
23
+ schema: { type: 'string' },
24
+ },
25
+ {
26
+ name: 'method',
27
+ in: 'query',
28
+ description: 'Filter by HTTP method',
29
+ schema: { type: 'string' },
30
+ },
31
+ {
32
+ name: 'statusCode',
33
+ in: 'query',
34
+ description: 'Filter by HTTP status code',
35
+ schema: { type: 'integer' },
36
+ },
37
+ {
38
+ name: 'jsonrpcMethod',
39
+ in: 'query',
40
+ description: 'Filter by JSON-RPC method',
41
+ schema: { type: 'string' },
42
+ },
43
+ {
44
+ name: 'search',
45
+ in: 'query',
46
+ description: 'Search in request/response content',
47
+ schema: { type: 'string' },
48
+ },
49
+ {
50
+ name: 'limit',
51
+ in: 'query',
52
+ description: 'Maximum number of results',
53
+ schema: { type: 'integer', default: 5000 },
54
+ },
55
+ {
56
+ name: 'offset',
57
+ in: 'query',
58
+ description: 'Number of results to skip',
59
+ schema: { type: 'integer', default: 0 },
60
+ },
61
+ ],
62
+ responses: {
63
+ 200: {
64
+ description: 'List of captured requests',
65
+ content: {
66
+ 'application/json': {
67
+ schema: {
68
+ type: 'array',
69
+ items: { $ref: '#/components/schemas/Request' },
70
+ },
71
+ },
72
+ },
73
+ },
74
+ 500: {
75
+ description: 'Internal server error',
76
+ },
77
+ },
78
+ },
79
+ },
80
+ '/api/requests/{frameNumber}': {
81
+ get: {
82
+ tags: ['Requests'],
83
+ summary: 'Get request by frame number',
84
+ description: 'Retrieve a specific captured request/response by its frame number',
85
+ parameters: [
86
+ {
87
+ name: 'frameNumber',
88
+ in: 'path',
89
+ required: true,
90
+ description: 'Frame number of the request',
91
+ schema: { type: 'integer' },
92
+ },
93
+ ],
94
+ responses: {
95
+ 200: {
96
+ description: 'Request details',
97
+ content: {
98
+ 'application/json': {
99
+ schema: { $ref: '#/components/schemas/Request' },
100
+ },
101
+ },
102
+ },
103
+ 404: {
104
+ description: 'Request not found',
105
+ },
106
+ 500: {
107
+ description: 'Internal server error',
108
+ },
109
+ },
110
+ },
111
+ },
112
+ '/api/requests/export': {
113
+ get: {
114
+ tags: ['Requests'],
115
+ summary: 'Export captured requests',
116
+ description: 'Export captured requests in CSV, TXT, or JSON format',
117
+ parameters: [
118
+ {
119
+ name: 'format',
120
+ in: 'query',
121
+ description: 'Export format (csv, txt, json)',
122
+ schema: { type: 'string', enum: ['csv', 'txt', 'json'], default: 'json' },
123
+ },
124
+ {
125
+ name: 'sessionId',
126
+ in: 'query',
127
+ description: 'Filter by session ID',
128
+ schema: { type: 'string' },
129
+ },
130
+ {
131
+ name: 'serverName',
132
+ in: 'query',
133
+ description: 'Filter by server name',
134
+ schema: { type: 'string' },
135
+ },
136
+ ],
137
+ responses: {
138
+ 200: {
139
+ description: 'Exported data file',
140
+ content: {
141
+ 'text/csv': { schema: { type: 'string' } },
142
+ 'text/plain': { schema: { type: 'string' } },
143
+ 'application/json': { schema: { type: 'object' } },
144
+ },
145
+ },
146
+ 500: {
147
+ description: 'Internal server error',
148
+ },
149
+ },
150
+ },
151
+ },
152
+ '/api/requests/clear': {
153
+ post: {
154
+ tags: ['Requests'],
155
+ summary: 'Clear all captured requests',
156
+ description: 'Delete all captured traffic from the database',
157
+ responses: {
158
+ 200: {
159
+ description: 'Traffic cleared successfully',
160
+ content: {
161
+ 'application/json': {
162
+ schema: {
163
+ type: 'object',
164
+ properties: {
165
+ success: { type: 'boolean' },
166
+ message: { type: 'string' },
167
+ },
168
+ },
169
+ },
170
+ },
171
+ },
172
+ 500: {
173
+ description: 'Internal server error',
174
+ },
175
+ },
176
+ },
177
+ },
178
+ };
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Server Management endpoints - MCP Shark server lifecycle management
3
+ */
4
+
5
+ export const serverManagementPaths = {
6
+ '/api/composite/setup': {
7
+ post: {
8
+ tags: ['Server Management'],
9
+ summary: 'Setup and start MCP Shark server',
10
+ description:
11
+ 'Configure and start the MCP Shark server with a given configuration file. This will process the config, patch it if needed, and start the server.',
12
+ requestBody: {
13
+ required: true,
14
+ content: {
15
+ 'application/json': {
16
+ schema: {
17
+ type: 'object',
18
+ properties: {
19
+ filePath: { type: 'string', description: 'Path to config file' },
20
+ fileContent: { type: 'string', description: 'Config file content' },
21
+ selectedServices: {
22
+ type: 'array',
23
+ items: { type: 'string' },
24
+ description: 'List of service names to include',
25
+ },
26
+ },
27
+ },
28
+ },
29
+ },
30
+ },
31
+ responses: {
32
+ 200: {
33
+ description: 'Server started successfully',
34
+ content: {
35
+ 'application/json': {
36
+ schema: {
37
+ type: 'object',
38
+ properties: {
39
+ success: { type: 'boolean' },
40
+ message: { type: 'string' },
41
+ convertedConfig: { type: 'object' },
42
+ updatedConfig: { type: 'object' },
43
+ filePath: { type: 'string' },
44
+ backupPath: { type: 'string', nullable: true },
45
+ warning: { type: 'string' },
46
+ },
47
+ },
48
+ },
49
+ },
50
+ },
51
+ 400: {
52
+ description: 'Bad request',
53
+ },
54
+ 404: {
55
+ description: 'File not found',
56
+ },
57
+ 500: {
58
+ description: 'Internal server error',
59
+ },
60
+ },
61
+ },
62
+ },
63
+ '/api/composite/stop': {
64
+ post: {
65
+ tags: ['Server Management'],
66
+ summary: 'Stop MCP Shark server',
67
+ description: 'Stop the running MCP Shark server and restore original configuration',
68
+ responses: {
69
+ 200: {
70
+ description: 'Server stopped successfully',
71
+ content: {
72
+ 'application/json': {
73
+ schema: {
74
+ type: 'object',
75
+ properties: {
76
+ success: { type: 'boolean' },
77
+ message: { type: 'string' },
78
+ },
79
+ },
80
+ },
81
+ },
82
+ },
83
+ 500: {
84
+ description: 'Internal server error',
85
+ },
86
+ },
87
+ },
88
+ },
89
+ '/api/composite/status': {
90
+ get: {
91
+ tags: ['Server Management'],
92
+ summary: 'Get server status',
93
+ description: 'Get the current status of the MCP Shark server',
94
+ responses: {
95
+ 200: {
96
+ description: 'Server status',
97
+ content: {
98
+ 'application/json': {
99
+ schema: {
100
+ type: 'object',
101
+ properties: {
102
+ running: { type: 'boolean' },
103
+ pid: { type: 'integer', nullable: true },
104
+ },
105
+ },
106
+ },
107
+ },
108
+ },
109
+ 500: {
110
+ description: 'Internal server error',
111
+ },
112
+ },
113
+ },
114
+ },
115
+ '/api/composite/shutdown': {
116
+ post: {
117
+ tags: ['Server Management'],
118
+ summary: 'Shutdown application',
119
+ description: 'Gracefully shutdown the entire application',
120
+ responses: {
121
+ 200: {
122
+ description: 'Shutdown initiated',
123
+ content: {
124
+ 'application/json': {
125
+ schema: {
126
+ type: 'object',
127
+ properties: {
128
+ success: { type: 'boolean' },
129
+ message: { type: 'string' },
130
+ },
131
+ },
132
+ },
133
+ },
134
+ },
135
+ 500: {
136
+ description: 'Internal server error',
137
+ },
138
+ },
139
+ },
140
+ },
141
+ '/api/composite/servers': {
142
+ get: {
143
+ tags: ['Server Management'],
144
+ summary: 'Get configured servers',
145
+ description: 'Get a list of all configured MCP servers',
146
+ responses: {
147
+ 200: {
148
+ description: 'List of servers',
149
+ content: {
150
+ 'application/json': {
151
+ schema: {
152
+ type: 'object',
153
+ properties: {
154
+ servers: {
155
+ type: 'array',
156
+ items: { type: 'string' },
157
+ },
158
+ },
159
+ },
160
+ },
161
+ },
162
+ },
163
+ 500: {
164
+ description: 'Internal server error',
165
+ },
166
+ },
167
+ },
168
+ },
169
+ };
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Sessions endpoints - Session management and tracking
3
+ */
4
+
5
+ export const sessionsPaths = {
6
+ '/api/sessions': {
7
+ get: {
8
+ tags: ['Sessions'],
9
+ summary: 'Get all sessions',
10
+ description: 'Retrieve a list of all captured sessions',
11
+ responses: {
12
+ 200: {
13
+ description: 'List of sessions',
14
+ content: {
15
+ 'application/json': {
16
+ schema: {
17
+ type: 'array',
18
+ items: { $ref: '#/components/schemas/Session' },
19
+ },
20
+ },
21
+ },
22
+ },
23
+ 500: {
24
+ description: 'Internal server error',
25
+ },
26
+ },
27
+ },
28
+ },
29
+ '/api/sessions/{sessionId}/requests': {
30
+ get: {
31
+ tags: ['Sessions'],
32
+ summary: 'Get requests for a session',
33
+ description: 'Retrieve all requests belonging to a specific session',
34
+ parameters: [
35
+ {
36
+ name: 'sessionId',
37
+ in: 'path',
38
+ required: true,
39
+ description: 'Session ID',
40
+ schema: { type: 'string' },
41
+ },
42
+ ],
43
+ responses: {
44
+ 200: {
45
+ description: 'List of requests for the session',
46
+ content: {
47
+ 'application/json': {
48
+ schema: {
49
+ type: 'array',
50
+ items: { $ref: '#/components/schemas/Request' },
51
+ },
52
+ },
53
+ },
54
+ },
55
+ 500: {
56
+ description: 'Internal server error',
57
+ },
58
+ },
59
+ },
60
+ },
61
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Settings endpoints - Application settings
3
+ */
4
+
5
+ export const settingsPaths = {
6
+ '/api/settings': {
7
+ get: {
8
+ tags: ['Settings'],
9
+ summary: 'Get settings',
10
+ description: 'Get application settings',
11
+ responses: {
12
+ 200: {
13
+ description: 'Application settings',
14
+ content: {
15
+ 'application/json': {
16
+ schema: {
17
+ type: 'object',
18
+ properties: {
19
+ token: { type: 'string', nullable: true },
20
+ },
21
+ },
22
+ },
23
+ },
24
+ },
25
+ 500: {
26
+ description: 'Internal server error',
27
+ },
28
+ },
29
+ },
30
+ },
31
+ };
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Smart Scan - Discovery and cache endpoints
3
+ */
4
+
5
+ export const discoveryPaths = {
6
+ '/api/smartscan/discover': {
7
+ get: {
8
+ tags: ['Smart Scan'],
9
+ summary: 'Discover MCP servers',
10
+ description: 'Discover MCP servers from configuration files',
11
+ responses: {
12
+ 200: {
13
+ description: 'List of discovered servers',
14
+ content: {
15
+ 'application/json': {
16
+ schema: {
17
+ type: 'object',
18
+ properties: {
19
+ servers: {
20
+ type: 'array',
21
+ items: { type: 'string' },
22
+ },
23
+ },
24
+ },
25
+ },
26
+ },
27
+ },
28
+ 500: {
29
+ description: 'Internal server error',
30
+ },
31
+ },
32
+ },
33
+ },
34
+ '/api/smartscan/cached-results': {
35
+ post: {
36
+ tags: ['Smart Scan'],
37
+ summary: 'Get cached results',
38
+ description: 'Get cached scan results for a server',
39
+ requestBody: {
40
+ required: true,
41
+ content: {
42
+ 'application/json': {
43
+ schema: {
44
+ type: 'object',
45
+ required: ['serverName'],
46
+ properties: {
47
+ serverName: { type: 'string', description: 'Name of the server' },
48
+ },
49
+ },
50
+ },
51
+ },
52
+ },
53
+ responses: {
54
+ 200: {
55
+ description: 'Cached results',
56
+ content: {
57
+ 'application/json': {
58
+ schema: { type: 'object' },
59
+ },
60
+ },
61
+ },
62
+ 404: {
63
+ description: 'No cached results found',
64
+ },
65
+ 500: {
66
+ description: 'Internal server error',
67
+ },
68
+ },
69
+ },
70
+ },
71
+ '/api/smartscan/cache/clear': {
72
+ post: {
73
+ tags: ['Smart Scan'],
74
+ summary: 'Clear scan cache',
75
+ description: 'Clear all cached scan results',
76
+ responses: {
77
+ 200: {
78
+ description: 'Cache cleared',
79
+ content: {
80
+ 'application/json': {
81
+ schema: {
82
+ type: 'object',
83
+ properties: {
84
+ success: { type: 'boolean' },
85
+ message: { type: 'string' },
86
+ },
87
+ },
88
+ },
89
+ },
90
+ },
91
+ 500: {
92
+ description: 'Internal server error',
93
+ },
94
+ },
95
+ },
96
+ },
97
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Smart Scan endpoints - Aggregates all Smart Scan path definitions
3
+ */
4
+
5
+ import { discoveryPaths } from './discovery.js';
6
+ import { scansPaths } from './scans.js';
7
+ import { tokenPaths } from './token.js';
8
+
9
+ export const smartScanPaths = {
10
+ ...scansPaths,
11
+ ...tokenPaths,
12
+ ...discoveryPaths,
13
+ };