@socketsecurity/mcp 0.0.8 → 0.0.10

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.
package/README.md CHANGED
@@ -81,7 +81,7 @@ Alternatively, you can manually add it to your VS Code MCP configuration in `.vs
81
81
  {
82
82
  "servers": {
83
83
  "socket-mcp": {
84
- "type": "http",
84
+ "type": "http",
85
85
  "url": "https://mcp.socket.dev/"
86
86
  }
87
87
  }
@@ -148,7 +148,7 @@ For local deployment, you have two options:
148
148
 
149
149
  Click a button below to install the self-hosted stdio server in your favorite AI assistant.
150
150
 
151
- [![Install in VS Code](https://img.shields.io/badge/VS_Code-Socket_MCP-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=socket-mcp&config={"command":"npx","args":["@socketsecurity/mcp@latest"],"type":"stdio"})
151
+ [![Install in VS Code](https://img.shields.io/badge/VS_Code-Socket_MCP-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=socket-mcp&config={"command":"npx","args":["@socketsecurity/mcp@latest"],"type":"stdio"})
152
152
  [![Install in Cursor (stdio)](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=socket-mcp-stdio&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAc29ja2V0c2VjdXJpdHkvbWNwQGxhdGVzdCJdLCJlbnYiOnsiU09DS0VUX0FQSV9LRVkiOiJ5b3VyLWFwaS1rZXktaGVyZSJ9fQ==)
153
153
 
154
154
  Claude Code (stdio mode) can be set up with the following command:
@@ -220,7 +220,7 @@ The `depscore` tool allows AI assistants to query the Socket API for dependency
220
220
  "version": "4.18.2"
221
221
  },
222
222
  {
223
- "ecosystem": "pypi",
223
+ "ecosystem": "pypi",
224
224
  "depname": "fastapi",
225
225
  "version": "0.100.0"
226
226
  }
@@ -241,7 +241,7 @@ pkg:pypi/fastapi@0.100.0: supply_chain: 1.0, quality: 0.95, maintenance: 0.98, v
241
241
  - "Analyze the security of my package.json dependencies"
242
242
  - "What are the vulnerability scores for react, lodash, and axios?"
243
243
 
244
- 2. **Get comprehensive security insights** including supply chain, quality, maintenance, vulnerability, and license scores.
244
+ 2. **Get comprehensive security insights** including supply chain, quality, maintenance, vulnerability, and license scores.
245
245
 
246
246
  ### Adjust tool usage with custom rules
247
247
 
@@ -317,7 +317,14 @@ npm install
317
317
 
318
318
  #### Build
319
319
 
320
- To build the project:
320
+ This project is a directly runnable Node.js project using [Type stripping](https://nodejs.org/docs/latest/api/typescript.html).
321
+ If you are on Node.js 22, run with `node --experimental-strip-types index.ts`.
322
+ On any later versions of Node.js, you can simply run `node index.ts`.
323
+ In either version you can also run the npm run scripts which include the correct flags.
324
+
325
+ The js files will automatically be build when running `npm publish`, and cleaned up afterwards with `npm run clean`.
326
+
327
+ If you want to preview the build you can run:
321
328
 
322
329
  ```bash
323
330
  npm run build
@@ -329,13 +336,13 @@ To run the Socket MCP server from source:
329
336
 
330
337
  ```bash
331
338
  export SOCKET_API_KEY=your_api_key_here
332
- node build/index.js
339
+ node --experimental-strip-types index.ts
333
340
  ```
334
341
 
335
342
  Or in HTTP mode:
336
343
 
337
344
  ```bash
338
- MCP_HTTP_MODE=true SOCKET_API_KEY=your_api_key_here node build/index.js --http
345
+ MCP_HTTP_MODE=true SOCKET_API_KEY=your_api_key_here node --experimental-strip-types index.ts --http
339
346
  ```
340
347
 
341
348
  ## 🔧 Troubleshooting
@@ -358,7 +365,7 @@ MCP_HTTP_MODE=true SOCKET_API_KEY=your_api_key_here node build/index.js --http
358
365
  - Try regenerating your API key from the Socket dashboard
359
366
 
360
367
  **Q: AI assistant can't find the depscore tool**
361
- - Restart your MCP client after configuration changes
368
+ - Restart your MCP client after configuration changes
362
369
  - Verify the server configuration is saved correctly
363
370
  - Check that the MCP server is running (for local deployments)
364
371
 
@@ -367,4 +374,3 @@ MCP_HTTP_MODE=true SOCKET_API_KEY=your_api_key_here node build/index.js --http
367
374
  - 📖 [Socket Documentation](https://docs.socket.dev)
368
375
  - 🐛 [Report Issues](https://github.com/SocketDev/socket-mcp/issues)
369
376
  - 💬 [Community Support](https://github.com/SocketDev/socket-mcp/discussions)
370
-
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":""}
@@ -1,44 +1,39 @@
1
- #!/usr/bin/env node
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
- import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
5
- import { z } from "zod";
6
- import { pino } from 'pino';
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
+ import { z } from 'zod';
6
+ import pino from 'pino';
7
7
  import readline from 'readline';
8
- import { fileURLToPath } from 'url';
9
- import { dirname, join } from 'path';
8
+ import { join } from 'path';
10
9
  import { readFileSync } from 'fs';
10
+ import { tmpdir } from 'os';
11
11
  import { createServer } from 'http';
12
12
  import { randomUUID } from 'crypto';
13
- import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = dirname(__filename);
16
- // Extract version from package.json
17
- const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
18
- const VERSION = packageJson.version || "0.0.1";
19
- // Configure pino logger
13
+ import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
14
+ const __dirname = import.meta.dirname;
15
+ const packageJson = JSON.parse(readFileSync(join(__dirname, './package.json'), 'utf8'));
16
+ const VERSION = packageJson.version || '0.0.1';
20
17
  const logger = pino({
21
18
  level: 'info',
22
19
  transport: {
23
20
  targets: [
24
21
  {
25
22
  target: 'pino/file',
26
- options: { destination: '/tmp/socket-mcp-error.log' },
23
+ options: { destination: join(tmpdir(), 'socket-mcp-error.log') },
27
24
  level: 'error'
28
25
  },
29
26
  {
30
27
  target: 'pino/file',
31
- options: { destination: '/tmp/socket-mcp.log' },
28
+ options: { destination: join(tmpdir(), 'socket-mcp.log') },
32
29
  level: 'info'
33
30
  }
34
31
  ]
35
32
  }
36
33
  });
37
- // Socket API URL - use localhost when debugging is enabled, otherwise use production
38
- const SOCKET_API_URL = process.env.SOCKET_DEBUG === 'true'
39
- ? "http://localhost:8866/v0/purl?alerts=false&compact=false&fixable=false&licenseattrib=false&licensedetails=false"
40
- : "https://api.socket.dev/v0/purl?alerts=false&compact=false&fixable=false&licenseattrib=false&licensedetails=false";
41
- // Function to get API key interactively (only for HTTP mode)
34
+ const SOCKET_API_URL = process.env['SOCKET_DEBUG'] === 'true'
35
+ ? 'http://localhost:8866/v0/purl?alerts=false&compact=false&fixable=false&licenseattrib=false&licensedetails=false'
36
+ : 'https://api.socket.dev/v0/purl?alerts=false&compact=false&fixable=false&licenseattrib=false&licensedetails=false';
42
37
  async function getApiKeyInteractively() {
43
38
  const rl = readline.createInterface({
44
39
  input: process.stdin,
@@ -51,45 +46,41 @@ async function getApiKeyInteractively() {
51
46
  });
52
47
  });
53
48
  if (!apiKey) {
54
- logger.error("No API key provided");
49
+ logger.error('No API key provided');
55
50
  process.exit(1);
56
51
  }
57
52
  return apiKey;
58
53
  }
59
- // Initialize API key
60
- let SOCKET_API_KEY = process.env.SOCKET_API_KEY || "";
61
- // Transport management
54
+ let SOCKET_API_KEY = process.env['SOCKET_API_KEY'] || '';
62
55
  const transports = {};
63
- // Create server instance
64
56
  const server = new McpServer({
65
- name: "socket",
57
+ name: 'socket',
66
58
  version: VERSION,
67
- description: "Socket MCP server",
59
+ description: 'Socket MCP server',
68
60
  capabilities: {
69
61
  resources: {},
70
62
  tools: {},
71
63
  streaming: {}
72
64
  },
73
65
  });
74
- server.tool("depscore", "Get the dependency score of packages with the `depscore` tool from Socket. Use 'unknown' for version if not known. Use this tool to scan dependencies for their quality and security on existing code or when code is generated. Stop generating code and ask the user how to proceed when any of the scores are low. When checking dependencies, make sure to also check the imports in the code, not just the manifest files (pyproject.toml, package.json, etc).", {
66
+ server.tool('depscore', "Get the dependency score of packages with the `depscore` tool from Socket. Use 'unknown' for version if not known. Use this tool to scan dependencies for their quality and security on existing code or when code is generated. Stop generating code and ask the user how to proceed when any of the scores are low. When checking dependencies, make sure to also check the imports in the code, not just the manifest files (pyproject.toml, package.json, etc).", {
75
67
  packages: z.array(z.object({
76
- ecosystem: z.string().describe("The package ecosystem (e.g., npm, pypi)").default("npm"),
77
- depname: z.string().describe("The name of the dependency"),
78
- version: z.string().describe("The version of the dependency, use 'unknown' if not known").default("unknown"),
79
- })).describe("Array of packages to check"),
68
+ ecosystem: z.string().describe('The package ecosystem (e.g., npm, pypi)').default('npm'),
69
+ depname: z.string().describe('The name of the dependency'),
70
+ version: z.string().describe("The version of the dependency, use 'unknown' if not known").default('unknown'),
71
+ })).describe('Array of packages to check'),
80
72
  }, async ({ packages }) => {
81
73
  logger.info(`Received request for ${packages.length} packages`);
82
74
  const SOCKET_HEADERS = {
83
- "user-agent": `socket-mcp/${VERSION}`,
84
- "accept": "application/x-ndjson",
85
- "content-type": "application/json",
86
- "authorization": `Bearer ${SOCKET_API_KEY}`
75
+ 'user-agent': `socket-mcp/${VERSION}`,
76
+ accept: 'application/x-ndjson',
77
+ 'content-type': 'application/json',
78
+ authorization: `Bearer ${SOCKET_API_KEY}`
87
79
  };
88
- // Build components array for the API request
89
80
  const components = packages.map(pkg => {
90
- const cleanedVersion = pkg.version.replace(/[\^~]/g, ''); // Remove ^ and ~ from version
81
+ const cleanedVersion = pkg.version.replace(/[\^~]/g, '');
91
82
  let purl;
92
- if (cleanedVersion === "1.0.0" || cleanedVersion === "unknown" || !cleanedVersion) {
83
+ if (cleanedVersion === '1.0.0' || cleanedVersion === 'unknown' || !cleanedVersion) {
93
84
  purl = `pkg:${pkg.ecosystem}/${pkg.depname}`;
94
85
  }
95
86
  else {
@@ -99,7 +90,6 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
99
90
  return { purl };
100
91
  });
101
92
  try {
102
- // Make a POST request to the Socket API with all packages
103
93
  const response = await fetch(SOCKET_API_URL, {
104
94
  method: 'POST',
105
95
  headers: SOCKET_HEADERS,
@@ -110,39 +100,41 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
110
100
  const errorMsg = `Error processing packages: [${response.status}] ${responseText}`;
111
101
  logger.error(errorMsg);
112
102
  return {
113
- content: [{ type: "text", text: errorMsg }],
103
+ content: [{ type: 'text', text: errorMsg }],
114
104
  isError: true
115
105
  };
116
106
  }
117
107
  else if (!responseText.trim()) {
118
- const errorMsg = `No packages were found.`;
108
+ const errorMsg = 'No packages were found.';
119
109
  logger.error(errorMsg);
120
110
  return {
121
- content: [{ type: "text", text: errorMsg }],
111
+ content: [{ type: 'text', text: errorMsg }],
122
112
  isError: true
123
113
  };
124
114
  }
125
115
  try {
126
- // Handle NDJSON (multiple JSON objects, one per line)
127
- let results = [];
116
+ const results = [];
128
117
  if ((response.headers.get('content-type') || '').includes('x-ndjson')) {
129
118
  const jsonLines = responseText.split('\n')
130
119
  .filter(line => line.trim())
131
120
  .map(line => JSON.parse(line));
132
121
  if (!jsonLines.length) {
133
- const errorMsg = `No valid JSON objects found in NDJSON response`;
122
+ const errorMsg = 'No valid JSON objects found in NDJSON response';
134
123
  return {
135
- content: [{ type: "text", text: errorMsg }],
124
+ content: [{ type: 'text', text: errorMsg }],
136
125
  isError: true
137
126
  };
138
127
  }
139
- // Process each result
140
128
  for (const jsonData of jsonLines) {
141
- let purl = `pkg:${jsonData.type || 'unknown'}/${jsonData.name || 'unknown'}@${jsonData.version || 'unknown'}`;
129
+ const purl = `pkg:${jsonData.type || 'unknown'}/${jsonData.name || 'unknown'}@${jsonData.version || 'unknown'}`;
142
130
  if (jsonData.score && jsonData.score.overall !== undefined) {
143
131
  const scoreEntries = Object.entries(jsonData.score)
144
- .filter(([key]) => key !== "overall" && key !== "uuid")
145
- .map(([key, value]) => `${key}: ${value}`)
132
+ .filter(([key]) => key !== 'overall' && key !== 'uuid')
133
+ .map(([key, value]) => {
134
+ const numValue = Number(value);
135
+ const displayValue = numValue <= 1 ? Math.round(numValue * 100) : numValue;
136
+ return `${key}: ${displayValue}`;
137
+ })
146
138
  .join(', ');
147
139
  results.push(`${purl}: ${scoreEntries}`);
148
140
  }
@@ -153,11 +145,15 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
153
145
  }
154
146
  else {
155
147
  const jsonData = JSON.parse(responseText);
156
- let purl = `pkg:${jsonData.type || 'unknown'}/${jsonData.name || 'unknown'}@${jsonData.version || 'unknown'}`;
148
+ const purl = `pkg:${jsonData.type || 'unknown'}/${jsonData.name || 'unknown'}@${jsonData.version || 'unknown'}`;
157
149
  if (jsonData.score && jsonData.score.overall !== undefined) {
158
150
  const scoreEntries = Object.entries(jsonData.score)
159
- .filter(([key]) => key !== "overall" && key !== "uuid")
160
- .map(([key, value]) => `${key}: ${value}`)
151
+ .filter(([key]) => key !== 'overall' && key !== 'uuid')
152
+ .map(([key, value]) => {
153
+ const numValue = Number(value);
154
+ const displayValue = numValue <= 1 ? Math.round(numValue * 100) : numValue;
155
+ return `${key}: ${displayValue}`;
156
+ })
161
157
  .join(', ');
162
158
  results.push(`${purl}: ${scoreEntries}`);
163
159
  }
@@ -165,10 +161,10 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
165
161
  return {
166
162
  content: [
167
163
  {
168
- type: "text",
164
+ type: 'text',
169
165
  text: results.length > 0
170
166
  ? `Dependency scores:\n${results.join('\n')}`
171
- : "No scores found for the provided packages"
167
+ : 'No scores found for the provided packages'
172
168
  }
173
169
  ]
174
170
  };
@@ -178,7 +174,7 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
178
174
  const errorMsg = `JSON parsing error: ${error.message} -- Response: ${responseText}`;
179
175
  logger.error(errorMsg);
180
176
  return {
181
- content: [{ type: "text", text: "Error parsing response from Socket API" }],
177
+ content: [{ type: 'text', text: 'Error parsing response from Socket API' }],
182
178
  isError: true
183
179
  };
184
180
  }
@@ -188,33 +184,27 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
188
184
  const errorMsg = `Error processing packages: ${error.message}`;
189
185
  logger.error(errorMsg);
190
186
  return {
191
- content: [{ type: "text", text: "Error connecting to Socket API" }],
187
+ content: [{ type: 'text', text: 'Error connecting to Socket API' }],
192
188
  isError: true
193
189
  };
194
190
  }
195
191
  });
196
- // Determine transport mode from environment or arguments
197
- const useHttp = process.env.MCP_HTTP_MODE === 'true' || process.argv.includes('--http');
198
- const port = parseInt(process.env.MCP_PORT || '3000', 10);
199
- // Validate API key - in stdio mode, we can't prompt interactively
192
+ const useHttp = process.env['MCP_HTTP_MODE'] === 'true' || process.argv.includes('--http');
193
+ const port = parseInt(process.env['MCP_PORT'] || '3000', 10);
200
194
  if (!SOCKET_API_KEY) {
201
195
  if (useHttp) {
202
- // In HTTP mode, we can prompt for the API key
203
- logger.error("SOCKET_API_KEY environment variable is not set");
196
+ logger.error('SOCKET_API_KEY environment variable is not set');
204
197
  SOCKET_API_KEY = await getApiKeyInteractively();
205
198
  }
206
199
  else {
207
- // In stdio mode, we must have the API key as an environment variable
208
- logger.error("SOCKET_API_KEY environment variable is required in stdio mode");
209
- logger.error("Please set the SOCKET_API_KEY environment variable and try again");
200
+ logger.error('SOCKET_API_KEY environment variable is required in stdio mode');
201
+ logger.error('Please set the SOCKET_API_KEY environment variable and try again');
210
202
  process.exit(1);
211
203
  }
212
204
  }
213
205
  if (useHttp) {
214
- // HTTP mode with Server-Sent Events
215
206
  logger.info(`Starting HTTP server on port ${port}`);
216
207
  const httpServer = createServer(async (req, res) => {
217
- // Validate Origin header as required by MCP spec
218
208
  const origin = req.headers.origin;
219
209
  const allowedOrigins = [
220
210
  'http://localhost:3000',
@@ -233,7 +223,6 @@ if (useHttp) {
233
223
  }));
234
224
  return;
235
225
  }
236
- // Set CORS headers for valid origins
237
226
  if (origin && isValidOrigin) {
238
227
  res.setHeader('Access-Control-Allow-Origin', origin);
239
228
  }
@@ -248,8 +237,20 @@ if (useHttp) {
248
237
  res.end();
249
238
  return;
250
239
  }
251
- const url = new URL(req.url, `http://localhost:${port}`);
252
- // Health check endpoint for K8s/Docker
240
+ let url;
241
+ try {
242
+ url = new URL(req.url, `http://localhost:${port}`);
243
+ }
244
+ catch (error) {
245
+ logger.warn(`Invalid URL in request: ${req.url} - ${error}`);
246
+ res.writeHead(400, { 'Content-Type': 'application/json' });
247
+ res.end(JSON.stringify({
248
+ jsonrpc: '2.0',
249
+ error: { code: -32000, message: 'Bad Request: Invalid URL' },
250
+ id: null
251
+ }));
252
+ return;
253
+ }
253
254
  if (url.pathname === '/health') {
254
255
  res.writeHead(200, { 'Content-Type': 'application/json' });
255
256
  res.end(JSON.stringify({
@@ -262,7 +263,6 @@ if (useHttp) {
262
263
  }
263
264
  if (url.pathname === '/') {
264
265
  if (req.method === 'POST') {
265
- // Validate Accept header as required by MCP spec
266
266
  const acceptHeader = req.headers.accept;
267
267
  if (!acceptHeader || (!acceptHeader.includes('application/json') && !acceptHeader.includes('text/event-stream'))) {
268
268
  logger.warn(`Invalid Accept header: ${acceptHeader}`);
@@ -274,14 +274,12 @@ if (useHttp) {
274
274
  }));
275
275
  return;
276
276
  }
277
- // Handle JSON-RPC messages
278
277
  let body = '';
279
- req.on('data', chunk => body += chunk);
278
+ req.on('data', chunk => (body += chunk));
280
279
  req.on('end', async () => {
281
280
  try {
282
281
  const jsonData = JSON.parse(body);
283
282
  const sessionId = req.headers['mcp-session-id'];
284
- // Validate session ID format if provided (must contain only visible ASCII characters)
285
283
  if (sessionId && !/^[\x21-\x7E]+$/.test(sessionId)) {
286
284
  logger.warn(`Invalid session ID format: ${sessionId}`);
287
285
  res.writeHead(400, { 'Content-Type': 'application/json' });
@@ -294,11 +292,9 @@ if (useHttp) {
294
292
  }
295
293
  let transport;
296
294
  if (sessionId && transports[sessionId]) {
297
- // Reuse existing transport
298
295
  transport = transports[sessionId];
299
296
  }
300
297
  else if (!sessionId) {
301
- // Create new session (either for initialize request or fallback)
302
298
  const newSessionId = randomUUID();
303
299
  const isInit = isInitializeRequest(jsonData);
304
300
  if (isInit) {
@@ -312,7 +308,6 @@ if (useHttp) {
312
308
  onsessioninitialized: (id) => {
313
309
  transports[id] = transport;
314
310
  logger.info(`Session initialized: ${id}`);
315
- // Set session ID in response headers as required by MCP spec
316
311
  res.setHeader('mcp-session-id', id);
317
312
  }
318
313
  });
@@ -328,20 +323,18 @@ if (useHttp) {
328
323
  return;
329
324
  }
330
325
  else {
331
- // Invalid request - session ID provided but not found
332
326
  logger.error(`Invalid session ID: ${sessionId}. Active sessions count: ${Object.keys(transports).length}`);
333
327
  res.writeHead(400);
334
328
  res.end(JSON.stringify({
335
329
  jsonrpc: '2.0',
336
330
  error: {
337
331
  code: -32000,
338
- message: `Bad Request: Invalid session ID. Please initialize a new session first.`
332
+ message: 'Bad Request: Invalid session ID. Please initialize a new session first.'
339
333
  },
340
334
  id: jsonData.id || null
341
335
  }));
342
336
  return;
343
337
  }
344
- // Handle request with existing transport
345
338
  await transport.handleRequest(req, res, jsonData);
346
339
  }
347
340
  catch (error) {
@@ -358,7 +351,6 @@ if (useHttp) {
358
351
  });
359
352
  }
360
353
  else if (req.method === 'GET') {
361
- // Validate Accept header for SSE as required by MCP spec
362
354
  const acceptHeader = req.headers.accept;
363
355
  if (!acceptHeader || !acceptHeader.includes('text/event-stream')) {
364
356
  logger.warn(`GET request without text/event-stream Accept header: ${acceptHeader}`);
@@ -370,9 +362,7 @@ if (useHttp) {
370
362
  }));
371
363
  return;
372
364
  }
373
- // Handle SSE streams
374
365
  const sessionId = req.headers['mcp-session-id'];
375
- // Validate session ID format
376
366
  if (sessionId && !/^[\x21-\x7E]+$/.test(sessionId)) {
377
367
  logger.warn(`Invalid session ID format in GET request: ${sessionId}`);
378
368
  res.writeHead(400, { 'Content-Type': 'application/json' });
@@ -393,19 +383,14 @@ if (useHttp) {
393
383
  }));
394
384
  return;
395
385
  }
396
- // Check for Last-Event-ID header for resumability (optional MCP feature)
397
386
  const lastEventId = req.headers['last-event-id'];
398
387
  if (lastEventId) {
399
388
  logger.info(`SSE resumability requested with Last-Event-ID: ${lastEventId}`);
400
- // Note: Actual resumability implementation would require message storage
401
- // For now, we log the request but don't implement full resumability
402
389
  }
403
390
  logger.info(`Opening SSE stream for session: ${sessionId}`);
404
- // Prevent connection timeout and keep it alive
405
391
  req.socket?.setTimeout(0);
406
392
  req.socket?.setKeepAlive(true, 30000);
407
393
  let streamClosed = false;
408
- // Handle client disconnection gracefully
409
394
  req.on('close', () => {
410
395
  streamClosed = true;
411
396
  logger.info(`Client disconnected SSE stream for session: ${sessionId}`);
@@ -414,15 +399,11 @@ if (useHttp) {
414
399
  streamClosed = true;
415
400
  logger.info(`Client aborted SSE stream for session: ${sessionId}`);
416
401
  });
417
- // Let the MCP transport handle the SSE stream completely
418
402
  const transport = transports[sessionId];
419
403
  try {
420
404
  await transport.handleRequest(req, res);
421
- // If the transport completes without the client disconnecting,
422
- // it might have closed the stream prematurely. Keep it open with heartbeat.
423
405
  if (!streamClosed && !res.destroyed) {
424
406
  logger.info(`Transport completed, maintaining SSE stream for session: ${sessionId}`);
425
- // Send periodic heartbeat to keep connection alive
426
407
  const heartbeat = setInterval(() => {
427
408
  if (streamClosed || res.destroyed) {
428
409
  clearInterval(heartbeat);
@@ -432,21 +413,19 @@ if (useHttp) {
432
413
  res.write(': heartbeat\n\n');
433
414
  }
434
415
  catch (error) {
435
- logger.error(`Heartbeat error for session ${sessionId}:`, error);
416
+ logger.error(error, `Heartbeat error for session ${sessionId}:`);
436
417
  clearInterval(heartbeat);
437
418
  }
438
419
  }, 30000);
439
- // Clean up heartbeat when connection closes
440
420
  req.on('close', () => clearInterval(heartbeat));
441
421
  res.on('close', () => clearInterval(heartbeat));
442
422
  }
443
423
  }
444
424
  catch (error) {
445
- logger.error(`SSE transport error for session ${sessionId}:`, error);
425
+ logger.error(error, `SSE transport error for session ${sessionId}:`);
446
426
  }
447
427
  }
448
428
  else if (req.method === 'DELETE') {
449
- // Handle session termination
450
429
  const sessionId = req.headers['mcp-session-id'];
451
430
  if (!sessionId || !transports[sessionId]) {
452
431
  res.writeHead(400);
@@ -472,8 +451,7 @@ if (useHttp) {
472
451
  });
473
452
  }
474
453
  else {
475
- // Stdio mode (default)
476
- logger.info("Starting in stdio mode");
454
+ logger.info('Starting in stdio mode');
477
455
  const transport = new StdioServerTransport();
478
456
  server.connect(transport)
479
457
  .then(() => {
@@ -484,4 +462,3 @@ else {
484
462
  process.exit(1);
485
463
  });
486
464
  }
487
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ export {};
3
+ //# sourceMappingURL=debug-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-client.d.ts","sourceRoot":"","sources":["debug-client.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node --experimental-strip-types
2
2
  import { spawn } from 'child_process';
3
3
  import readline from 'readline';
4
- // Simple JSON-RPC client for testing MCP server
4
+ import { join } from 'path';
5
5
  class SimpleJSONRPCClient {
6
6
  process;
7
7
  rl;
@@ -60,17 +60,18 @@ class SimpleJSONRPCClient {
60
60
  }
61
61
  }
62
62
  async function main() {
63
- const apiKey = process.env.SOCKET_API_KEY;
63
+ const apiKey = process.env['SOCKET_API_KEY'];
64
64
  if (!apiKey) {
65
65
  console.error('Error: SOCKET_API_KEY environment variable is required');
66
66
  process.exit(1);
67
67
  }
68
68
  console.log('Starting MCP server debug client...');
69
- const client = new SimpleJSONRPCClient('./build/index.js', [], {
69
+ const serverPath = join(import.meta.dirname, '..', 'index.ts');
70
+ console.log(`Using server script: ${serverPath}`);
71
+ const client = new SimpleJSONRPCClient('node', ['--experimental-strip-types', serverPath], {
70
72
  SOCKET_API_KEY: apiKey
71
73
  });
72
74
  try {
73
- // Initialize the connection
74
75
  console.log('\n1. Initializing connection...');
75
76
  const initResult = await client.sendRequest('initialize', {
76
77
  protocolVersion: '0.1.0',
@@ -81,11 +82,9 @@ async function main() {
81
82
  }
82
83
  });
83
84
  console.log('Initialize response:', JSON.stringify(initResult, null, 2));
84
- // List available tools
85
85
  console.log('\n2. Listing available tools...');
86
86
  const toolsResult = await client.sendRequest('tools/list', {});
87
87
  console.log('Available tools:', JSON.stringify(toolsResult, null, 2));
88
- // Call the depscore tool
89
88
  console.log('\n3. Calling depscore tool...');
90
89
  const depscoreResult = await client.sendRequest('tools/call', {
91
90
  name: 'depscore',
@@ -100,7 +99,6 @@ async function main() {
100
99
  }
101
100
  });
102
101
  console.log('Depscore result:', JSON.stringify(depscoreResult, null, 2));
103
- // Test with minimal input
104
102
  console.log('\n4. Testing with minimal input (default to npm)...');
105
103
  const minimalResult = await client.sendRequest('tools/call', {
106
104
  name: 'depscore',
@@ -112,7 +110,6 @@ async function main() {
112
110
  }
113
111
  });
114
112
  console.log('Minimal input result:', JSON.stringify(minimalResult, null, 2));
115
- // Test error handling
116
113
  console.log('\n5. Testing error handling (empty packages)...');
117
114
  try {
118
115
  await client.sendRequest('tools/call', {
@@ -135,4 +132,3 @@ async function main() {
135
132
  }
136
133
  }
137
134
  main().catch(console.error);
138
- //# sourceMappingURL=debug-client.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ export {};
3
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["http-client.ts"],"names":[],"mappings":""}
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env node
2
- import fetch from 'node-fetch';
3
- // Helper function to parse SSE or JSON response
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ import { join } from 'path';
4
3
  async function parseResponse(response) {
5
4
  const contentType = response.headers.get('content-type');
6
5
  const text = await response.text();
7
6
  if (contentType?.includes('text/event-stream')) {
8
- // Parse SSE format: "event: message\ndata: {json}\n"
9
7
  const dataMatch = text.match(/data: (.+)/);
10
8
  if (dataMatch) {
11
9
  return JSON.parse(dataMatch[1]);
@@ -16,15 +14,13 @@ async function parseResponse(response) {
16
14
  return JSON.parse(text);
17
15
  }
18
16
  }
19
- // Simple HTTP client for testing MCP server in HTTP mode
20
17
  async function testHTTPMode() {
21
- const baseUrl = (process.env.MCP_URL || 'http://localhost:3000').replace(/\/$/, ''); // Remove trailing slash
18
+ const baseUrl = (process.env['MCP_URL'] || 'http://localhost:3000').replace(/\/$/, '');
22
19
  const sessionId = `test-session-${Date.now()}`;
23
20
  console.log('Testing Socket MCP in HTTP mode...');
24
21
  console.log(`Server URL: ${baseUrl}`);
25
22
  console.log(`Session ID: ${sessionId}`);
26
23
  try {
27
- // 1. Initialize connection
28
24
  console.log('\n1. Initializing connection...');
29
25
  const initRequest = {
30
26
  jsonrpc: '2.0',
@@ -43,18 +39,16 @@ async function testHTTPMode() {
43
39
  method: 'POST',
44
40
  headers: {
45
41
  'Content-Type': 'application/json',
46
- 'Accept': 'application/json, text/event-stream',
42
+ Accept: 'application/json, text/event-stream',
47
43
  'User-Agent': 'socket-mcp-debug-client/1.0.0'
48
44
  },
49
45
  body: JSON.stringify(initRequest)
50
46
  });
51
47
  const initResult = await parseResponse(initResponse);
52
48
  console.log('Initialize response:', JSON.stringify(initResult, null, 2));
53
- // Extract session ID from response headers
54
49
  const serverSessionId = initResponse.headers.get('mcp-session-id');
55
50
  const actualSessionId = serverSessionId || sessionId;
56
51
  console.log('Session ID:', actualSessionId);
57
- // 2. List tools
58
52
  console.log('\n2. Listing available tools...');
59
53
  const toolsRequest = {
60
54
  jsonrpc: '2.0',
@@ -66,14 +60,13 @@ async function testHTTPMode() {
66
60
  method: 'POST',
67
61
  headers: {
68
62
  'Content-Type': 'application/json',
69
- 'Accept': 'application/json, text/event-stream',
63
+ Accept: 'application/json, text/event-stream',
70
64
  'mcp-session-id': actualSessionId
71
65
  },
72
66
  body: JSON.stringify(toolsRequest)
73
67
  });
74
68
  const toolsResult = await parseResponse(toolsResponse);
75
69
  console.log('Available tools:', JSON.stringify(toolsResult, null, 2));
76
- // 3. Call depscore
77
70
  console.log('\n3. Calling depscore tool...');
78
71
  const depscoreRequest = {
79
72
  jsonrpc: '2.0',
@@ -94,27 +87,24 @@ async function testHTTPMode() {
94
87
  method: 'POST',
95
88
  headers: {
96
89
  'Content-Type': 'application/json',
97
- 'Accept': 'application/json, text/event-stream',
90
+ Accept: 'application/json, text/event-stream',
98
91
  'mcp-session-id': actualSessionId
99
92
  },
100
93
  body: JSON.stringify(depscoreRequest)
101
94
  });
102
95
  const depscoreResult = await parseResponse(depscoreResponse);
103
96
  console.log('Depscore result:', JSON.stringify(depscoreResult, null, 2));
104
- // 4. Test SSE stream (optional)
105
97
  console.log('\n4. Testing SSE stream connection...');
106
98
  const sseResponse = await fetch(`${baseUrl}/`, {
107
99
  method: 'GET',
108
100
  headers: {
109
101
  'mcp-session-id': actualSessionId,
110
- 'Accept': 'text/event-stream'
102
+ Accept: 'text/event-stream'
111
103
  }
112
104
  });
113
105
  if (sseResponse.ok) {
114
106
  console.log('SSE stream connected successfully');
115
- // Note: In a real implementation, you'd parse the SSE stream
116
107
  }
117
- // 5. Clean up session
118
108
  console.log('\n5. Cleaning up session...');
119
109
  const cleanupResponse = await fetch(`${baseUrl}/`, {
120
110
  method: 'DELETE',
@@ -128,26 +118,24 @@ async function testHTTPMode() {
128
118
  console.error('Error:', error);
129
119
  }
130
120
  }
131
- // Usage instructions
132
121
  if (process.argv.includes('--help')) {
122
+ const serverScript = join(import.meta.dirname, '..', 'index.ts');
133
123
  console.log(`
134
124
  Socket MCP HTTP Client Debugger
135
125
 
136
126
  Usage:
137
127
  # Start the MCP server in HTTP mode first:
138
- MCP_HTTP_MODE=true SOCKET_API_KEY=your-api-key ./build/index.js
128
+ MCP_HTTP_MODE=true SOCKET_API_KEY=your-api-key node --experimental-strip-types ${serverScript}
139
129
 
140
130
  # Then run this client:
141
- npm run build
142
- node ./build/http-client.js
131
+ node --experimental-strip-types ./mock-client/http-client.ts
143
132
 
144
133
  Environment variables:
145
134
  MCP_URL - Server URL (default: http://localhost:3000)
146
135
 
147
136
  Example:
148
- MCP_URL=http://localhost:8080 node ./build/http-client.js
137
+ MCP_URL=http://localhost:8080 node --experimental-strip-types ./mock-client/http-client.ts
149
138
  `);
150
139
  process.exit(0);
151
140
  }
152
141
  testHTTPMode().catch(console.error);
153
- //# sourceMappingURL=http-client.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node --experimental-strip-types
2
+ export {};
3
+ //# sourceMappingURL=stdio-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio-client.d.ts","sourceRoot":"","sources":["stdio-client.ts"],"names":[],"mappings":""}
@@ -1,13 +1,16 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node --experimental-strip-types
2
2
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
3
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
4
+ import { join } from 'path';
4
5
  async function main() {
6
+ const serverPath = join(import.meta.dirname, '..', 'index.ts');
7
+ console.log(`Using server script: ${serverPath}`);
5
8
  const transport = new StdioClientTransport({
6
- command: './build/index.js',
7
- args: [],
9
+ command: 'node',
10
+ args: ['--experimental-strip-types', serverPath],
8
11
  env: {
9
12
  ...process.env,
10
- SOCKET_API_KEY: process.env.SOCKET_API_KEY || ''
13
+ SOCKET_API_KEY: process.env['SOCKET_API_KEY'] || ''
11
14
  }
12
15
  });
13
16
  const client = new Client({
@@ -19,10 +22,8 @@ async function main() {
19
22
  try {
20
23
  await client.connect(transport);
21
24
  console.log('Connected to MCP server');
22
- // List available tools
23
25
  const tools = await client.listTools();
24
26
  console.log('Available tools:', tools.tools.map(t => t.name));
25
- // Test the depscore tool
26
27
  const testPackages = [
27
28
  { depname: 'express', ecosystem: 'npm', version: '4.18.2' },
28
29
  { depname: 'lodash', ecosystem: 'npm', version: '4.17.21' },
@@ -48,6 +49,4 @@ async function main() {
48
49
  process.exit(1);
49
50
  }
50
51
  }
51
- // Run the client
52
52
  main().catch(console.error);
53
- //# sourceMappingURL=stdio-client.js.map
package/package.json CHANGED
@@ -1,23 +1,44 @@
1
1
  {
2
2
  "name": "@socketsecurity/mcp",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "type": "module",
5
- "main": "./build/index.js",
5
+ "main": "./index.js",
6
6
  "bin": {
7
- "socket-mcp": "./build/index.js"
7
+ "socket-mcp": "./index.js"
8
+ },
9
+ "engines": {
10
+ "node": ">=22.0.0",
11
+ "npm": ">= 10"
8
12
  },
9
13
  "scripts": {
10
- "build": "tsc && tsc -p tsconfig.mock-client.json && chmod 755 ./build/index.js && (chmod 755 ./build/mock-client/*.js 2>/dev/null || true)",
11
- "debug:stdio": "node ./build/mock-client/debug-client.js",
12
- "debug:sdk": "node ./build/mock-client/stdio-client.js",
13
- "debug:http": "node ./build/mock-client/http-client.js",
14
- "server:stdio": "SOCKET_API_KEY=${SOCKET_API_KEY} ./build/index.js",
15
- "server:http": "MCP_HTTP_MODE=true SOCKET_API_KEY=${SOCKET_API_KEY} ./build/index.js"
14
+ "prepublishOnly": "npm run build",
15
+ "postpublish": "npm run clean",
16
+ "test": "run-s test:*",
17
+ "test:lint": "eslint .",
18
+ "test:tsc": "tsc",
19
+ "test:node-test": "c8 node --experimental-strip-types --test --test-reporter spec",
20
+ "build": "npm run clean && run-s build:*",
21
+ "build:types": "tsc -p tsconfig.declaration.json",
22
+ "build:permissions": "chmod +x ./index.js && (chmod +x ./mock-client/*.js 2>/dev/null || true)",
23
+ "build-dtx": "run-s build build-dtx:*",
24
+ "build-dtx:versions_match": "node --experimental-strip-types scripts/check-versions.ts",
25
+ "build-dtx:validate": "npx dxt validate ./",
26
+ "build-dtx:dtx-pack": "npx dxt pack ./",
27
+ "clean": "./scripts/clean.sh",
28
+ "debug-stdio": "node --experimental-strip-types ./mock-client/debug-client.ts",
29
+ "debug-sdk": "node --experimental-strip-types ./mock-client/stdio-client.ts",
30
+ "debug-http": "node --experimental-strip-types ./mock-client/http-client.ts",
31
+ "server-stdio": "SOCKET_API_KEY=${SOCKET_API_KEY} --experimental-strip-types ./index.ts",
32
+ "server-http": "MCP_HTTP_MODE=true SOCKET_API_KEY=${SOCKET_API_KEY} ./build/index.js"
16
33
  },
34
+ "keywords": [],
17
35
  "files": [
18
- "build"
36
+ "index.js",
37
+ "index.d.ts",
38
+ "index.d.ts.map",
39
+ "mock-client/**/*.js",
40
+ "mock-client/**/*.d.ts*"
19
41
  ],
20
- "keywords": [],
21
42
  "author": "Alexandros Kapravelos",
22
43
  "description": "Socket MCP server for scanning dependencies",
23
44
  "repository": {
@@ -26,17 +47,19 @@
26
47
  },
27
48
  "dependencies": {
28
49
  "@modelcontextprotocol/sdk": "^1.11.3",
29
- "@types/node-fetch": "^2.6.12",
30
- "node-fetch": "^3.3.2",
31
50
  "pino": "^9.7.0",
32
51
  "pino-pretty": "^13.0.0",
33
52
  "semver": "^7.7.2",
34
53
  "zod": "^3.24.4"
35
54
  },
36
55
  "devDependencies": {
37
- "@types/node": "^22.15.19",
56
+ "neostandard": "^0.12.0",
57
+ "@anthropic-ai/dxt": "^0.2.0",
58
+ "@types/node": "^24.0.7",
38
59
  "@types/semver": "^7.7.0",
39
60
  "@types/triple-beam": "^1.3.5",
40
- "typescript": "^5.8.3"
61
+ "c8": "^10.0.0",
62
+ "npm-run-all2": "^8.0.1",
63
+ "typescript": "~5.9.2"
41
64
  }
42
65
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-client.js","sourceRoot":"","sources":["../../mock-client/debug-client.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../mock-client/http-client.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,gDAAgD;AAChD,KAAK,UAAU,aAAa,CAAC,QAAa;IACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,IAAI,WAAW,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,KAAK,UAAU,YAAY;IACzB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;IAC7G,MAAM,SAAS,GAAG,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,eAAe,EAAE,OAAO;gBACxB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,OAAO;iBACjB;aACF;SACF,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,qCAAqC;gBAC/C,YAAY,EAAE,+BAA+B;aAC9C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzE,2CAA2C;QAC3C,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,eAAe,GAAG,eAAe,IAAI,SAAS,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAE5C,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG;YACnB,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,qCAAqC;gBAC/C,gBAAgB,EAAE,eAAe;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtE,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT,QAAQ,EAAE;wBACR,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;wBAC3D,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC7D,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;qBAC1D;iBACF;aACF;SACF,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,qCAAqC;gBAC/C,gBAAgB,EAAE,eAAe;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;SACtC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzE,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE;YAC7C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,gBAAgB,EAAE,eAAe;gBACjC,QAAQ,EAAE,mBAAmB;aAC9B;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,6DAA6D;QAC/D,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE;YACjD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE;gBACP,gBAAgB,EAAE,eAAe;aAClC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,eAAe,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,qBAAqB;AACrB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;CAgBb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../mock-client/stdio-client.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;QACzC,OAAO,EAAE,kBAAkB;QAC3B,IAAI,EAAE,EAAE;QACR,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;SACjD;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,EAAE;QACD,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9D,yBAAyB;QACzB,MAAM,YAAY,GAAG;YACnB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC3D,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAC3D,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;YACzD,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC7D,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;SACrE,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE;gBACT,QAAQ,EAAE,YAAY;aACvB;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}