@cgaspard/webappmcp 0.1.0

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 (106) hide show
  1. package/README.md +213 -0
  2. package/dist/browser.d.ts +3 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js +20 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/browser.min.js +2 -0
  7. package/dist/browser.min.js.map +1 -0
  8. package/dist/client/devtools.d.ts +28 -0
  9. package/dist/client/devtools.d.ts.map +1 -0
  10. package/dist/client/devtools.js +347 -0
  11. package/dist/client/devtools.js.map +1 -0
  12. package/dist/client/index.d.ts +47 -0
  13. package/dist/client/index.d.ts.map +1 -0
  14. package/dist/client/index.js +655 -0
  15. package/dist/client/index.js.map +1 -0
  16. package/dist/index.d.ts +7 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.esm.js +15 -0
  19. package/dist/index.esm.js.map +1 -0
  20. package/dist/index.js +18 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/middleware/index.d.ts +30 -0
  23. package/dist/middleware/index.d.ts.map +1 -0
  24. package/dist/middleware/index.js +323 -0
  25. package/dist/middleware/index.js.map +1 -0
  26. package/dist/middleware/mcp-server.d.ts +19 -0
  27. package/dist/middleware/mcp-server.d.ts.map +1 -0
  28. package/dist/middleware/mcp-server.js +149 -0
  29. package/dist/middleware/mcp-server.js.map +1 -0
  30. package/dist/middleware/mcp-socket-server.d.ts +29 -0
  31. package/dist/middleware/mcp-socket-server.d.ts.map +1 -0
  32. package/dist/middleware/mcp-socket-server.js +315 -0
  33. package/dist/middleware/mcp-socket-server.js.map +1 -0
  34. package/dist/middleware/mcp-sse-server.d.ts +26 -0
  35. package/dist/middleware/mcp-sse-server.d.ts.map +1 -0
  36. package/dist/middleware/mcp-sse-server.js +258 -0
  37. package/dist/middleware/mcp-sse-server.js.map +1 -0
  38. package/dist/middleware/tools/capture.d.ts +3 -0
  39. package/dist/middleware/tools/capture.d.ts.map +1 -0
  40. package/dist/middleware/tools/capture.js +54 -0
  41. package/dist/middleware/tools/capture.js.map +1 -0
  42. package/dist/middleware/tools/diagnostic.d.ts +3 -0
  43. package/dist/middleware/tools/diagnostic.d.ts.map +1 -0
  44. package/dist/middleware/tools/diagnostic.js +62 -0
  45. package/dist/middleware/tools/diagnostic.js.map +1 -0
  46. package/dist/middleware/tools/dom.d.ts +3 -0
  47. package/dist/middleware/tools/dom.d.ts.map +1 -0
  48. package/dist/middleware/tools/dom.js +84 -0
  49. package/dist/middleware/tools/dom.js.map +1 -0
  50. package/dist/middleware/tools/execute.d.ts +3 -0
  51. package/dist/middleware/tools/execute.d.ts.map +1 -0
  52. package/dist/middleware/tools/execute.js +30 -0
  53. package/dist/middleware/tools/execute.js.map +1 -0
  54. package/dist/middleware/tools/index.d.ts +3 -0
  55. package/dist/middleware/tools/index.d.ts.map +1 -0
  56. package/dist/middleware/tools/index.js +20 -0
  57. package/dist/middleware/tools/index.js.map +1 -0
  58. package/dist/middleware/tools/interaction.d.ts +3 -0
  59. package/dist/middleware/tools/interaction.d.ts.map +1 -0
  60. package/dist/middleware/tools/interaction.js +87 -0
  61. package/dist/middleware/tools/interaction.js.map +1 -0
  62. package/dist/middleware/tools/state.d.ts +3 -0
  63. package/dist/middleware/tools/state.d.ts.map +1 -0
  64. package/dist/middleware/tools/state.js +71 -0
  65. package/dist/middleware/tools/state.js.map +1 -0
  66. package/dist/middleware/types.d.ts +32 -0
  67. package/dist/middleware/types.d.ts.map +1 -0
  68. package/dist/middleware/types.js +3 -0
  69. package/dist/middleware/types.js.map +1 -0
  70. package/dist/server/cli.d.ts +3 -0
  71. package/dist/server/cli.d.ts.map +1 -0
  72. package/dist/server/cli.js +32 -0
  73. package/dist/server/cli.js.map +1 -0
  74. package/dist/server/index.d.ts +17 -0
  75. package/dist/server/index.d.ts.map +1 -0
  76. package/dist/server/index.js +136 -0
  77. package/dist/server/index.js.map +1 -0
  78. package/dist/server/tools/capture.d.ts +3 -0
  79. package/dist/server/tools/capture.d.ts.map +1 -0
  80. package/dist/server/tools/capture.js +46 -0
  81. package/dist/server/tools/capture.js.map +1 -0
  82. package/dist/server/tools/dom.d.ts +3 -0
  83. package/dist/server/tools/dom.d.ts.map +1 -0
  84. package/dist/server/tools/dom.js +84 -0
  85. package/dist/server/tools/dom.js.map +1 -0
  86. package/dist/server/tools/index.d.ts +3 -0
  87. package/dist/server/tools/index.d.ts.map +1 -0
  88. package/dist/server/tools/index.js +16 -0
  89. package/dist/server/tools/index.js.map +1 -0
  90. package/dist/server/tools/interaction.d.ts +3 -0
  91. package/dist/server/tools/interaction.d.ts.map +1 -0
  92. package/dist/server/tools/interaction.js +87 -0
  93. package/dist/server/tools/interaction.js.map +1 -0
  94. package/dist/server/tools/state.d.ts +3 -0
  95. package/dist/server/tools/state.d.ts.map +1 -0
  96. package/dist/server/tools/state.js +63 -0
  97. package/dist/server/tools/state.js.map +1 -0
  98. package/dist/server/types.d.ts +32 -0
  99. package/dist/server/types.d.ts.map +1 -0
  100. package/dist/server/types.js +3 -0
  101. package/dist/server/types.js.map +1 -0
  102. package/dist/server/websocket-manager.d.ts +17 -0
  103. package/dist/server/websocket-manager.d.ts.map +1 -0
  104. package/dist/server/websocket-manager.js +67 -0
  105. package/dist/server/websocket-manager.js.map +1 -0
  106. package/package.json +77 -0
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCPSSEServer = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
6
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
+ const ws_1 = require("ws");
8
+ const index_js_2 = require("./tools/index.js");
9
+ class MCPSSEServer {
10
+ constructor(config) {
11
+ this.ws = null;
12
+ this.isConnected = false;
13
+ this.sseTransports = new Map();
14
+ this.wsUrl = config.wsUrl;
15
+ this.authToken = config.authToken;
16
+ this.getClients = config.getClients;
17
+ }
18
+ createServer() {
19
+ const server = new index_js_1.Server({
20
+ name: 'webapp-mcp-sse',
21
+ version: '0.1.0',
22
+ }, {
23
+ capabilities: {
24
+ tools: {},
25
+ },
26
+ });
27
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
28
+ console.log(`[MCP SSE] ListTools request received`);
29
+ const tools = (0, index_js_2.registerTools)();
30
+ console.log(`[MCP SSE] Returning ${tools.length} tools`);
31
+ return {
32
+ tools: tools,
33
+ };
34
+ });
35
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
36
+ console.log(`[MCP SSE] ====== TOOL CALL REQUEST ======`);
37
+ console.log(`[MCP SSE] Full request:`, JSON.stringify(request, null, 2));
38
+ const { name, arguments: args } = request.params;
39
+ console.log(`[MCP SSE] Tool: ${name}`);
40
+ console.log(`[MCP SSE] Arguments:`, JSON.stringify(args, null, 2));
41
+ // Special handling for webapp_list_clients - doesn't need WebSocket connection
42
+ if (name === 'webapp_list_clients') {
43
+ console.log(`[MCP SSE] Handling webapp_list_clients tool`);
44
+ const clients = this.getClients ? this.getClients() : [];
45
+ const result = {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: JSON.stringify(clients, null, 2),
50
+ },
51
+ ],
52
+ };
53
+ console.log(`[MCP SSE] webapp_list_clients result:`, JSON.stringify(result, null, 2));
54
+ return result;
55
+ }
56
+ if (!this.isConnected) {
57
+ console.log(`[MCP SSE] Not connected to web application`);
58
+ throw new Error('Not connected to web application');
59
+ }
60
+ try {
61
+ console.log(`[MCP SSE] Executing tool ${name} on client`);
62
+ const result = await this.executeToolOnClient(name, args);
63
+ console.log(`[MCP SSE] Tool ${name} execution completed with result:`, JSON.stringify(result, null, 2));
64
+ return result;
65
+ }
66
+ catch (error) {
67
+ console.log(`[MCP SSE] Tool ${name} execution failed:`, error);
68
+ return {
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: `Error executing tool: ${error instanceof Error ? error.message : 'Unknown error'}`,
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ });
78
+ return server;
79
+ }
80
+ async connectWebSocket() {
81
+ return new Promise((resolve, reject) => {
82
+ const wsUrl = this.authToken
83
+ ? `${this.wsUrl}?token=${this.authToken}`
84
+ : this.wsUrl;
85
+ this.ws = new ws_1.WebSocket(wsUrl);
86
+ this.ws.on('open', () => {
87
+ console.log('MCP SSE Server connected to WebSocket');
88
+ this.isConnected = true;
89
+ this.ws.send(JSON.stringify({
90
+ type: 'init',
91
+ url: 'mcp-sse-server',
92
+ }));
93
+ resolve();
94
+ });
95
+ this.ws.on('message', (data) => {
96
+ const message = JSON.parse(data.toString());
97
+ if (message.type === 'connected') {
98
+ console.log(`MCP SSE Server registered with clientId: ${message.clientId}`);
99
+ }
100
+ });
101
+ this.ws.on('close', () => {
102
+ console.log('MCP SSE Server disconnected from WebSocket');
103
+ this.isConnected = false;
104
+ });
105
+ this.ws.on('error', (error) => {
106
+ console.error('MCP SSE Server WebSocket error:', error);
107
+ reject(error);
108
+ });
109
+ });
110
+ }
111
+ async executeToolOnClient(toolName, args) {
112
+ return new Promise((resolve, reject) => {
113
+ const requestId = Math.random().toString(36).substring(7);
114
+ console.log(`[MCP SSE] Executing tool ${toolName} on client with requestId: ${requestId}`);
115
+ console.log(`[MCP SSE] Tool arguments:`, JSON.stringify(args));
116
+ const timeout = setTimeout(() => {
117
+ console.log(`[MCP SSE] Tool execution timeout for requestId: ${requestId}`);
118
+ reject(new Error('Tool execution timeout'));
119
+ }, 30000);
120
+ const messageHandler = (data) => {
121
+ const message = JSON.parse(data.toString());
122
+ console.log(`[MCP SSE] Received WebSocket message:`, JSON.stringify(message));
123
+ if (message.requestId === requestId) {
124
+ clearTimeout(timeout);
125
+ this.ws.off('message', messageHandler);
126
+ console.log(`[MCP SSE] Tool response received for requestId: ${requestId}`);
127
+ if (message.error) {
128
+ reject(new Error(message.error));
129
+ }
130
+ else {
131
+ resolve({
132
+ content: [
133
+ {
134
+ type: 'text',
135
+ text: JSON.stringify(message.result, null, 2),
136
+ },
137
+ ],
138
+ });
139
+ }
140
+ }
141
+ };
142
+ this.ws.on('message', messageHandler);
143
+ const executeMessage = {
144
+ type: 'execute_tool',
145
+ requestId,
146
+ tool: toolName,
147
+ args,
148
+ };
149
+ console.log(`[MCP SSE] Sending execute_tool message:`, JSON.stringify(executeMessage));
150
+ this.ws.send(JSON.stringify(executeMessage));
151
+ });
152
+ }
153
+ async initialize() {
154
+ try {
155
+ await this.connectWebSocket();
156
+ console.log('MCP SSE Server initialized');
157
+ }
158
+ catch (error) {
159
+ console.error('Failed to initialize MCP SSE Server:', error);
160
+ throw error;
161
+ }
162
+ }
163
+ async handleSSERequest(req, res) {
164
+ const timestamp = new Date().toISOString();
165
+ console.log(`\n[${timestamp}] [MCP SSE] ====== INCOMING REQUEST ======`);
166
+ console.log(`[${timestamp}] [MCP SSE] ${req.method} ${req.url}`);
167
+ console.log(`[${timestamp}] [MCP SSE] Path: ${req.path}`);
168
+ console.log(`[${timestamp}] [MCP SSE] Query:`, req.query);
169
+ console.log(`[${timestamp}] [MCP SSE] Headers:`, JSON.stringify(req.headers, null, 2));
170
+ console.log(`[${timestamp}] [MCP SSE] User-Agent: ${req.headers['user-agent']}`);
171
+ console.log(`[${timestamp}] [MCP SSE] Content-Type: ${req.headers['content-type']}`);
172
+ console.log(`[${timestamp}] [MCP SSE] Accept: ${req.headers['accept']}`);
173
+ // Log authorization header specifically
174
+ const authHeader = req.headers.authorization;
175
+ if (authHeader) {
176
+ console.log(`[${timestamp}] [MCP SSE] Authorization header present: ${authHeader}`);
177
+ }
178
+ else {
179
+ console.log(`[MCP SSE] No authorization header found`);
180
+ }
181
+ try {
182
+ if (req.method === 'GET') {
183
+ console.log(`[MCP SSE] Creating new server instance for GET request`);
184
+ // Create a new server instance for this connection
185
+ const server = this.createServer();
186
+ // Create SSE transport for this request
187
+ console.log(`[MCP SSE] Creating SSE transport for endpoint /mcp/sse`);
188
+ const sseTransport = new sse_js_1.SSEServerTransport('/mcp/sse', res);
189
+ // Log what the SSE transport is sending
190
+ console.log(`[MCP SSE] SSE Transport created with sessionId: ${sseTransport.sessionId}`);
191
+ // Override the send method to log messages
192
+ const originalSend = sseTransport.send.bind(sseTransport);
193
+ sseTransport.send = async (message) => {
194
+ console.log(`[MCP SSE] Sending SSE message:`, JSON.stringify(message));
195
+ return originalSend(message);
196
+ };
197
+ // Connect the server to the SSE transport (this automatically calls start())
198
+ console.log(`[MCP SSE] Connecting server to SSE transport`);
199
+ try {
200
+ await server.connect(sseTransport);
201
+ console.log(`[MCP SSE] Successfully connected server to transport`);
202
+ }
203
+ catch (connectError) {
204
+ console.error(`[MCP SSE] ERROR connecting server to transport:`, connectError);
205
+ throw connectError;
206
+ }
207
+ // Store the transport with its session ID
208
+ this.sseTransports.set(sseTransport.sessionId, sseTransport);
209
+ console.log(`[MCP SSE] Server connected to client: ${sseTransport.sessionId}`);
210
+ console.log(`[MCP SSE] Active SSE transports: ${this.sseTransports.size}`);
211
+ console.log(`[MCP SSE] SSE endpoint should be: /mcp/sse?sessionId=${sseTransport.sessionId}`);
212
+ // Handle connection close
213
+ req.on('close', () => {
214
+ this.sseTransports.delete(sseTransport.sessionId);
215
+ console.log(`[MCP SSE] Client disconnected: ${sseTransport.sessionId}`);
216
+ console.log(`[MCP SSE] Active SSE transports: ${this.sseTransports.size}`);
217
+ });
218
+ }
219
+ else if (req.method === 'POST') {
220
+ // Extract session ID from URL params
221
+ const sessionId = req.query.sessionId;
222
+ console.log(`[MCP SSE] POST request for session: ${sessionId}`);
223
+ if (!sessionId) {
224
+ console.log(`[MCP SSE] No session ID provided in POST request`);
225
+ return res.status(400).json({ error: 'Session ID required for POST requests' });
226
+ }
227
+ const sseTransport = this.sseTransports.get(sessionId);
228
+ if (!sseTransport) {
229
+ console.log(`[MCP SSE] Session not found: ${sessionId}`);
230
+ console.log(`[MCP SSE] Available sessions: ${Array.from(this.sseTransports.keys()).join(', ')}`);
231
+ return res.status(404).json({ error: 'SSE session not found' });
232
+ }
233
+ console.log(`[MCP SSE] Handling POST message for session: ${sessionId}`);
234
+ // Add logging to see what's being posted
235
+ const originalWrite = res.write;
236
+ const originalEnd = res.end;
237
+ res.write = function (...args) {
238
+ console.log(`[MCP SSE] Response write:`, args[0]);
239
+ return originalWrite.apply(res, args);
240
+ };
241
+ res.end = function (...args) {
242
+ console.log(`[MCP SSE] Response end:`, args[0]);
243
+ return originalEnd.apply(res, args);
244
+ };
245
+ // Handle incoming POST messages (don't consume the body here - let SSE transport handle it)
246
+ await sseTransport.handlePostMessage(req, res);
247
+ }
248
+ }
249
+ catch (error) {
250
+ console.error(`[MCP SSE] Failed to handle SSE request:`, error);
251
+ if (!res.headersSent) {
252
+ res.status(500).json({ error: 'Failed to establish SSE connection' });
253
+ }
254
+ }
255
+ }
256
+ }
257
+ exports.MCPSSEServer = MCPSSEServer;
258
+ //# sourceMappingURL=mcp-sse-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-sse-server.js","sourceRoot":"","sources":["../../src/middleware/mcp-sse-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare const captureTools: ToolDefinition[];
3
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,cAAc,EAiDxC,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.captureTools = void 0;
4
+ exports.captureTools = [
5
+ {
6
+ name: 'capture_screenshot',
7
+ description: 'Take a screenshot of the current page',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ fullPage: {
12
+ type: 'boolean',
13
+ description: 'Capture the full page height',
14
+ default: true,
15
+ },
16
+ format: {
17
+ type: 'string',
18
+ enum: ['png', 'jpeg'],
19
+ description: 'Image format',
20
+ default: 'png',
21
+ },
22
+ clientId: {
23
+ type: 'string',
24
+ description: 'Client ID to capture from (optional, uses first available browser if not specified)',
25
+ },
26
+ },
27
+ },
28
+ },
29
+ {
30
+ name: 'capture_element_screenshot',
31
+ description: 'Take a screenshot of a specific element',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ selector: {
36
+ type: 'string',
37
+ description: 'CSS selector for the element to capture',
38
+ },
39
+ format: {
40
+ type: 'string',
41
+ enum: ['png', 'jpeg'],
42
+ description: 'Image format',
43
+ default: 'png',
44
+ },
45
+ clientId: {
46
+ type: 'string',
47
+ description: 'Client ID to capture from (optional, uses first available browser if not specified)',
48
+ },
49
+ },
50
+ required: ['selector'],
51
+ },
52
+ },
53
+ ];
54
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/middleware/tools/capture.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,8BAA8B;oBAC3C,OAAO,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;oBACrB,WAAW,EAAE,cAAc;oBAC3B,OAAO,EAAE,KAAK;iBACf;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;iBACnG;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;oBACrB,WAAW,EAAE,cAAc;oBAC3B,OAAO,EAAE,KAAK;iBACf;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;iBACnG;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare const diagnosticTools: ToolDefinition[];
3
+ //# sourceMappingURL=diagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/diagnostic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,eAAe,EAAE,cAAc,EAyD3C,CAAC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diagnosticTools = void 0;
4
+ exports.diagnosticTools = [
5
+ {
6
+ name: 'dom_manipulate',
7
+ description: 'Manipulate DOM elements for diagnostic purposes',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ action: {
12
+ type: 'string',
13
+ description: 'The manipulation action to perform (setAttribute, removeAttribute, setProperty, addClass, removeClass, setInnerHTML, setTextContent, setStyle, remove)'
14
+ },
15
+ selector: {
16
+ type: 'string',
17
+ description: 'CSS selector for the target element'
18
+ },
19
+ value: {
20
+ type: 'string',
21
+ description: 'Value to set (for actions that require a value)'
22
+ },
23
+ attribute: {
24
+ type: 'string',
25
+ description: 'Attribute name (for setAttribute/removeAttribute actions)'
26
+ },
27
+ property: {
28
+ type: 'string',
29
+ description: 'Property or style property name'
30
+ }
31
+ },
32
+ required: ['action', 'selector']
33
+ }
34
+ },
35
+ {
36
+ name: 'javascript_inject',
37
+ description: 'Execute JavaScript code in the browser for diagnostic purposes',
38
+ inputSchema: {
39
+ type: 'object',
40
+ properties: {
41
+ code: {
42
+ type: 'string',
43
+ description: 'JavaScript code to execute'
44
+ },
45
+ returnValue: {
46
+ type: 'boolean',
47
+ description: 'Whether to return the result of the code execution'
48
+ }
49
+ },
50
+ required: ['code']
51
+ }
52
+ },
53
+ {
54
+ name: 'webapp_list_clients',
55
+ description: 'List all connected WebApp MCP clients',
56
+ inputSchema: {
57
+ type: 'object',
58
+ properties: {}
59
+ }
60
+ }
61
+ ];
62
+ //# sourceMappingURL=diagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../../src/middleware/tools/diagnostic.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wJAAwJ;iBACtK;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iDAAiD;iBAC/D;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2DAA2D;iBACzE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;SACjC;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,oDAAoD;iBAClE;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare const domTools: ToolDefinition[];
3
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,cAAc,EA+EpC,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.domTools = void 0;
4
+ exports.domTools = [
5
+ {
6
+ name: 'dom_query',
7
+ description: 'Query DOM elements using CSS selectors',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ selector: {
12
+ type: 'string',
13
+ description: 'CSS selector to query elements',
14
+ },
15
+ limit: {
16
+ type: 'number',
17
+ description: 'Maximum number of elements to return',
18
+ default: 10,
19
+ },
20
+ },
21
+ required: ['selector'],
22
+ },
23
+ },
24
+ {
25
+ name: 'dom_get_properties',
26
+ description: 'Get properties and attributes of a DOM element',
27
+ inputSchema: {
28
+ type: 'object',
29
+ properties: {
30
+ selector: {
31
+ type: 'string',
32
+ description: 'CSS selector for the element',
33
+ },
34
+ properties: {
35
+ type: 'array',
36
+ items: {
37
+ type: 'string',
38
+ },
39
+ description: 'List of properties to retrieve',
40
+ },
41
+ },
42
+ required: ['selector'],
43
+ },
44
+ },
45
+ {
46
+ name: 'dom_get_text',
47
+ description: 'Get text content of DOM elements',
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {
51
+ selector: {
52
+ type: 'string',
53
+ description: 'CSS selector for the elements',
54
+ },
55
+ includeHidden: {
56
+ type: 'boolean',
57
+ description: 'Include text from hidden elements',
58
+ default: false,
59
+ },
60
+ },
61
+ required: ['selector'],
62
+ },
63
+ },
64
+ {
65
+ name: 'dom_get_html',
66
+ description: 'Get HTML content of DOM elements',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: {
70
+ selector: {
71
+ type: 'string',
72
+ description: 'CSS selector for the element',
73
+ },
74
+ outerHTML: {
75
+ type: 'boolean',
76
+ description: 'Get outerHTML instead of innerHTML',
77
+ default: false,
78
+ },
79
+ },
80
+ required: ['selector'],
81
+ },
82
+ },
83
+ ];
84
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/middleware/tools/dom.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAqB;IACxC;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wCAAwC;QACrD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;oBACnD,OAAO,EAAE,EAAE;iBACZ;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;qBACf;oBACD,WAAW,EAAE,gCAAgC;iBAC9C;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,mCAAmC;oBAChD,OAAO,EAAE,KAAK;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,oCAAoC;oBACjD,OAAO,EAAE,KAAK;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare const executeTools: ToolDefinition[];
3
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,cAAc,EAyBxC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeTools = void 0;
4
+ exports.executeTools = [
5
+ {
6
+ name: 'execute_javascript',
7
+ description: 'Execute JavaScript code in the browser context',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ code: {
12
+ type: 'string',
13
+ description: 'JavaScript code to execute'
14
+ },
15
+ returnValue: {
16
+ type: 'boolean',
17
+ description: 'Whether to return the result of the execution',
18
+ default: false
19
+ },
20
+ async: {
21
+ type: 'boolean',
22
+ description: 'Whether to execute asynchronously',
23
+ default: false
24
+ }
25
+ },
26
+ required: ['code']
27
+ }
28
+ }
29
+ ];
30
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/middleware/tools/execute.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,+CAA+C;oBAC5D,OAAO,EAAE,KAAK;iBACf;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,mCAAmC;oBAChD,OAAO,EAAE,KAAK;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare function registerTools(): ToolDefinition[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAShD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerTools = registerTools;
4
+ const dom_js_1 = require("./dom.js");
5
+ const interaction_js_1 = require("./interaction.js");
6
+ const capture_js_1 = require("./capture.js");
7
+ const state_js_1 = require("./state.js");
8
+ const diagnostic_js_1 = require("./diagnostic.js");
9
+ const execute_js_1 = require("./execute.js");
10
+ function registerTools() {
11
+ return [
12
+ ...dom_js_1.domTools,
13
+ ...interaction_js_1.interactionTools,
14
+ ...capture_js_1.captureTools,
15
+ ...state_js_1.stateTools,
16
+ ...diagnostic_js_1.diagnosticTools,
17
+ ...execute_js_1.executeTools,
18
+ ];
19
+ }
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/tools/index.ts"],"names":[],"mappings":";;AAQA,sCASC;AAhBD,qCAAoC;AACpC,qDAAoD;AACpD,6CAA4C;AAC5C,yCAAwC;AACxC,mDAAkD;AAClD,6CAA4C;AAE5C,SAAgB,aAAa;IAC3B,OAAO;QACL,GAAG,iBAAQ;QACX,GAAG,iCAAgB;QACnB,GAAG,yBAAY;QACf,GAAG,qBAAU;QACb,GAAG,+BAAe;QAClB,GAAG,yBAAY;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export declare const interactionTools: ToolDefinition[];
3
+ //# sourceMappingURL=interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../src/middleware/tools/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAkF5C,CAAC"}