@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,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntegratedMCPServer = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.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 IntegratedMCPServer {
10
+ constructor(config) {
11
+ this.ws = null;
12
+ this.isConnected = false;
13
+ this.wsUrl = config.wsUrl;
14
+ this.authToken = config.authToken;
15
+ this.server = new index_js_1.Server({
16
+ name: 'webapp-mcp',
17
+ version: '0.1.0',
18
+ }, {
19
+ capabilities: {
20
+ tools: {},
21
+ },
22
+ });
23
+ this.setupHandlers();
24
+ }
25
+ setupHandlers() {
26
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
27
+ return {
28
+ tools: (0, index_js_2.registerTools)(),
29
+ };
30
+ });
31
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
32
+ const { name, arguments: args } = request.params;
33
+ if (!this.isConnected) {
34
+ throw new Error('Not connected to web application');
35
+ }
36
+ try {
37
+ const result = await this.executeToolOnClient(name, args);
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ return {
42
+ content: [
43
+ {
44
+ type: 'text',
45
+ text: `Error executing tool: ${error instanceof Error ? error.message : 'Unknown error'}`,
46
+ },
47
+ ],
48
+ };
49
+ }
50
+ });
51
+ }
52
+ async connectWebSocket() {
53
+ return new Promise((resolve, reject) => {
54
+ const headers = {};
55
+ if (this.authToken) {
56
+ headers['Authorization'] = `Bearer ${this.authToken}`;
57
+ }
58
+ this.ws = new ws_1.WebSocket(this.wsUrl, { headers });
59
+ this.ws.on('open', () => {
60
+ console.error('Connected to WebApp WebSocket');
61
+ this.isConnected = true;
62
+ this.ws.send(JSON.stringify({
63
+ type: 'init',
64
+ url: 'mcp-server',
65
+ }));
66
+ resolve();
67
+ });
68
+ this.ws.on('message', (data) => {
69
+ const message = JSON.parse(data.toString());
70
+ if (message.type === 'connected') {
71
+ console.error(`MCP Server registered with clientId: ${message.clientId}`);
72
+ }
73
+ });
74
+ this.ws.on('close', () => {
75
+ console.error('Disconnected from WebApp WebSocket');
76
+ this.isConnected = false;
77
+ this.scheduleReconnect();
78
+ });
79
+ this.ws.on('error', (error) => {
80
+ console.error('WebSocket error:', error);
81
+ reject(error);
82
+ });
83
+ });
84
+ }
85
+ scheduleReconnect() {
86
+ if (this.reconnectTimer)
87
+ return;
88
+ this.reconnectTimer = setTimeout(async () => {
89
+ this.reconnectTimer = null;
90
+ try {
91
+ await this.connectWebSocket();
92
+ }
93
+ catch (error) {
94
+ console.error('Reconnection failed:', error);
95
+ }
96
+ }, 5000);
97
+ }
98
+ async executeToolOnClient(toolName, args) {
99
+ return new Promise((resolve, reject) => {
100
+ const requestId = Math.random().toString(36).substring(7);
101
+ const timeout = setTimeout(() => {
102
+ reject(new Error('Tool execution timeout'));
103
+ }, 30000);
104
+ const messageHandler = (data) => {
105
+ const message = JSON.parse(data.toString());
106
+ if (message.requestId === requestId) {
107
+ clearTimeout(timeout);
108
+ this.ws.off('message', messageHandler);
109
+ if (message.error) {
110
+ reject(new Error(message.error));
111
+ }
112
+ else {
113
+ resolve({
114
+ content: [
115
+ {
116
+ type: 'text',
117
+ text: JSON.stringify(message.result, null, 2),
118
+ },
119
+ ],
120
+ });
121
+ }
122
+ }
123
+ };
124
+ this.ws.on('message', messageHandler);
125
+ this.ws.send(JSON.stringify({
126
+ type: 'execute_tool',
127
+ requestId,
128
+ tool: toolName,
129
+ args,
130
+ }));
131
+ });
132
+ }
133
+ async start() {
134
+ try {
135
+ // Connect to WebSocket first
136
+ await this.connectWebSocket();
137
+ // Then start MCP server
138
+ const transport = new stdio_js_1.StdioServerTransport();
139
+ await this.server.connect(transport);
140
+ console.error('Integrated MCP Server started');
141
+ }
142
+ catch (error) {
143
+ console.error('Failed to start MCP server:', error);
144
+ process.exit(1);
145
+ }
146
+ }
147
+ }
148
+ exports.IntegratedMCPServer = IntegratedMCPServer;
149
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/middleware/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface MCPSocketConfig {
2
+ socketPath: string;
3
+ wsUrl: string;
4
+ authToken?: string;
5
+ getClients?: () => Array<{
6
+ id: string;
7
+ url: string;
8
+ connectedAt: Date;
9
+ type: string;
10
+ }>;
11
+ }
12
+ export declare class MCPSocketServer {
13
+ private server;
14
+ private socketServer;
15
+ private ws;
16
+ private wsUrl;
17
+ private authToken?;
18
+ private socketPath;
19
+ private isConnected;
20
+ private getClients?;
21
+ constructor(config: MCPSocketConfig);
22
+ private setupHandlers;
23
+ private connectWebSocket;
24
+ private handleToolCall;
25
+ private executeToolOnClient;
26
+ start(): Promise<void>;
27
+ private cleanup;
28
+ }
29
+ //# sourceMappingURL=mcp-socket-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-socket-server.d.ts","sourceRoot":"","sources":["../../src/middleware/mcp-socket-server.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxF;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAA4E;gBAEnF,MAAM,EAAE,eAAe;IAqBnC,OAAO,CAAC,aAAa;YA+CP,gBAAgB;YAqChB,cAAc;YAuBd,mBAAmB;IAwC3B,KAAK;IAoHX,OAAO,CAAC,OAAO;CAYhB"}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MCPSocketServer = void 0;
37
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
38
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
39
+ const ws_1 = require("ws");
40
+ const index_js_2 = require("./tools/index.js");
41
+ const net = __importStar(require("net"));
42
+ const fs = __importStar(require("fs"));
43
+ const readline = __importStar(require("readline"));
44
+ class MCPSocketServer {
45
+ constructor(config) {
46
+ this.socketServer = null;
47
+ this.ws = null;
48
+ this.isConnected = false;
49
+ this.socketPath = config.socketPath;
50
+ this.wsUrl = config.wsUrl;
51
+ this.authToken = config.authToken;
52
+ this.getClients = config.getClients;
53
+ this.server = new index_js_1.Server({
54
+ name: 'webapp-mcp-socket',
55
+ version: '0.1.0',
56
+ }, {
57
+ capabilities: {
58
+ tools: {},
59
+ },
60
+ });
61
+ this.setupHandlers();
62
+ }
63
+ setupHandlers() {
64
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
65
+ console.log(`[MCP Socket] ListTools request received`);
66
+ const tools = (0, index_js_2.registerTools)();
67
+ console.log(`[MCP Socket] Returning ${tools.length} tools`);
68
+ return {
69
+ tools: tools,
70
+ };
71
+ });
72
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
73
+ console.log(`[MCP Socket] Tool call: ${request.params.name}`);
74
+ const { name, arguments: args } = request.params;
75
+ // Special handling for webapp_list_clients
76
+ if (name === 'webapp_list_clients') {
77
+ const clients = this.getClients ? this.getClients() : [];
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: JSON.stringify(clients, null, 2),
83
+ },
84
+ ],
85
+ };
86
+ }
87
+ if (!this.isConnected) {
88
+ throw new Error('Not connected to web application');
89
+ }
90
+ try {
91
+ const result = await this.executeToolOnClient(name, args);
92
+ return result;
93
+ }
94
+ catch (error) {
95
+ return {
96
+ content: [
97
+ {
98
+ type: 'text',
99
+ text: `Error executing tool: ${error instanceof Error ? error.message : 'Unknown error'}`,
100
+ },
101
+ ],
102
+ };
103
+ }
104
+ });
105
+ }
106
+ async connectWebSocket() {
107
+ return new Promise((resolve, reject) => {
108
+ const wsUrl = this.authToken
109
+ ? `${this.wsUrl}?token=${this.authToken}`
110
+ : this.wsUrl;
111
+ this.ws = new ws_1.WebSocket(wsUrl);
112
+ this.ws.on('open', () => {
113
+ console.log('[MCP Socket] Connected to WebSocket');
114
+ this.isConnected = true;
115
+ this.ws.send(JSON.stringify({
116
+ type: 'init',
117
+ url: 'mcp-socket-server',
118
+ }));
119
+ resolve();
120
+ });
121
+ this.ws.on('message', (data) => {
122
+ const message = JSON.parse(data.toString());
123
+ if (message.type === 'connected') {
124
+ console.log(`[MCP Socket] Registered with clientId: ${message.clientId}`);
125
+ }
126
+ });
127
+ this.ws.on('close', () => {
128
+ console.log('[MCP Socket] Disconnected from WebSocket');
129
+ this.isConnected = false;
130
+ });
131
+ this.ws.on('error', (error) => {
132
+ console.error('[MCP Socket] WebSocket error:', error);
133
+ reject(error);
134
+ });
135
+ });
136
+ }
137
+ async handleToolCall(params) {
138
+ const { name, arguments: args } = params;
139
+ // Special handling for webapp_list_clients
140
+ if (name === 'webapp_list_clients') {
141
+ const clients = this.getClients ? this.getClients() : [];
142
+ return {
143
+ content: [
144
+ {
145
+ type: 'text',
146
+ text: JSON.stringify(clients, null, 2),
147
+ },
148
+ ],
149
+ };
150
+ }
151
+ if (!this.isConnected) {
152
+ throw new Error('Not connected to web application');
153
+ }
154
+ return await this.executeToolOnClient(name, args);
155
+ }
156
+ async executeToolOnClient(toolName, args) {
157
+ return new Promise((resolve, reject) => {
158
+ const requestId = Math.random().toString(36).substring(7);
159
+ const timeout = setTimeout(() => {
160
+ reject(new Error('Tool execution timeout'));
161
+ }, 30000);
162
+ const messageHandler = (data) => {
163
+ const message = JSON.parse(data.toString());
164
+ if (message.requestId === requestId) {
165
+ clearTimeout(timeout);
166
+ this.ws.off('message', messageHandler);
167
+ if (message.error) {
168
+ reject(new Error(message.error));
169
+ }
170
+ else {
171
+ resolve({
172
+ content: [
173
+ {
174
+ type: 'text',
175
+ text: JSON.stringify(message.result, null, 2),
176
+ },
177
+ ],
178
+ });
179
+ }
180
+ }
181
+ };
182
+ this.ws.on('message', messageHandler);
183
+ this.ws.send(JSON.stringify({
184
+ type: 'execute_tool',
185
+ requestId,
186
+ tool: toolName,
187
+ args,
188
+ }));
189
+ });
190
+ }
191
+ async start() {
192
+ try {
193
+ // Connect to WebSocket first
194
+ await this.connectWebSocket();
195
+ // Remove existing socket if it exists
196
+ if (fs.existsSync(this.socketPath)) {
197
+ fs.unlinkSync(this.socketPath);
198
+ }
199
+ // Create Unix socket server
200
+ this.socketServer = net.createServer((socket) => {
201
+ console.log(`[MCP Socket] Client connected to ${this.socketPath}`);
202
+ let buffer = '';
203
+ const rl = readline.createInterface({
204
+ input: socket,
205
+ output: socket,
206
+ terminal: false
207
+ });
208
+ rl.on('line', async (line) => {
209
+ try {
210
+ const message = JSON.parse(line);
211
+ console.log(`[MCP Socket] Received: ${message.method}`);
212
+ // Handle different message types
213
+ let response;
214
+ if (message.method === 'initialize') {
215
+ response = {
216
+ jsonrpc: '2.0',
217
+ id: message.id,
218
+ result: {
219
+ protocolVersion: '2024-11-05',
220
+ capabilities: { tools: {} },
221
+ serverInfo: { name: 'webapp-mcp-socket', version: '0.1.0' }
222
+ }
223
+ };
224
+ }
225
+ else if (message.method === 'tools/list') {
226
+ const tools = (0, index_js_2.registerTools)();
227
+ response = {
228
+ jsonrpc: '2.0',
229
+ id: message.id,
230
+ result: { tools }
231
+ };
232
+ }
233
+ else if (message.method === 'tools/call') {
234
+ try {
235
+ const result = await this.handleToolCall(message.params);
236
+ response = {
237
+ jsonrpc: '2.0',
238
+ id: message.id,
239
+ result
240
+ };
241
+ }
242
+ catch (error) {
243
+ response = {
244
+ jsonrpc: '2.0',
245
+ id: message.id,
246
+ error: {
247
+ code: -32603,
248
+ message: error instanceof Error ? error.message : 'Internal error'
249
+ }
250
+ };
251
+ }
252
+ }
253
+ else {
254
+ response = {
255
+ jsonrpc: '2.0',
256
+ id: message.id,
257
+ error: {
258
+ code: -32601,
259
+ message: 'Method not found'
260
+ }
261
+ };
262
+ }
263
+ socket.write(JSON.stringify(response) + '\n');
264
+ }
265
+ catch (error) {
266
+ console.error('[MCP Socket] Error processing request:', error);
267
+ const errorResponse = {
268
+ jsonrpc: '2.0',
269
+ id: null,
270
+ error: {
271
+ code: -32700,
272
+ message: 'Parse error'
273
+ }
274
+ };
275
+ socket.write(JSON.stringify(errorResponse) + '\n');
276
+ }
277
+ });
278
+ socket.on('end', () => {
279
+ console.log('[MCP Socket] Client disconnected');
280
+ rl.close();
281
+ });
282
+ socket.on('error', (err) => {
283
+ console.error('[MCP Socket] Socket error:', err);
284
+ rl.close();
285
+ });
286
+ });
287
+ this.socketServer.listen(this.socketPath, () => {
288
+ console.log(`[MCP Socket] Unix socket server listening on ${this.socketPath}`);
289
+ console.log(`[MCP Socket] Configure Claude CLI with:`);
290
+ console.log(`[MCP Socket] claude mcp add webapp-socket "socat - UNIX-CONNECT:${this.socketPath}"`);
291
+ });
292
+ // Cleanup on exit
293
+ process.on('SIGINT', this.cleanup.bind(this));
294
+ process.on('SIGTERM', this.cleanup.bind(this));
295
+ }
296
+ catch (error) {
297
+ console.error('[MCP Socket] Failed to start:', error);
298
+ throw error;
299
+ }
300
+ }
301
+ cleanup() {
302
+ console.log('[MCP Socket] Shutting down...');
303
+ if (this.socketServer) {
304
+ this.socketServer.close();
305
+ }
306
+ if (fs.existsSync(this.socketPath)) {
307
+ fs.unlinkSync(this.socketPath);
308
+ }
309
+ if (this.ws) {
310
+ this.ws.close();
311
+ }
312
+ }
313
+ }
314
+ exports.MCPSocketServer = MCPSocketServer;
315
+ //# sourceMappingURL=mcp-socket-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-socket-server.js","sourceRoot":"","sources":["../../src/middleware/mcp-socket-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Request, Response } from 'express';
2
+ export interface MCPSSEConfig {
3
+ wsUrl: string;
4
+ authToken?: string;
5
+ getClients?: () => Array<{
6
+ id: string;
7
+ url: string;
8
+ connectedAt: Date;
9
+ type: string;
10
+ }>;
11
+ }
12
+ export declare class MCPSSEServer {
13
+ private ws;
14
+ private wsUrl;
15
+ private authToken?;
16
+ private isConnected;
17
+ private sseTransports;
18
+ private getClients?;
19
+ constructor(config: MCPSSEConfig);
20
+ private createServer;
21
+ private connectWebSocket;
22
+ private executeToolOnClient;
23
+ initialize(): Promise<void>;
24
+ handleSSERequest(req: Request, res: Response): Promise<Response<any, Record<string, any>> | undefined>;
25
+ }
26
+ //# sourceMappingURL=mcp-sse-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-sse-server.d.ts","sourceRoot":"","sources":["../../src/middleware/mcp-sse-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxF;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,UAAU,CAAC,CAA4E;gBAEnF,MAAM,EAAE,YAAY;IAMhC,OAAO,CAAC,YAAY;YA0EN,gBAAgB;YAqChB,mBAAmB;IA+C3B,UAAU;IAUV,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CA6GnD"}