@socketsecurity/mcp 0.0.8 → 0.0.9

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";
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
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
  }
@@ -249,7 +238,6 @@ if (useHttp) {
249
238
  return;
250
239
  }
251
240
  const url = new URL(req.url, `http://localhost:${port}`);
252
- // Health check endpoint for K8s/Docker
253
241
  if (url.pathname === '/health') {
254
242
  res.writeHead(200, { 'Content-Type': 'application/json' });
255
243
  res.end(JSON.stringify({
@@ -262,7 +250,6 @@ if (useHttp) {
262
250
  }
263
251
  if (url.pathname === '/') {
264
252
  if (req.method === 'POST') {
265
- // Validate Accept header as required by MCP spec
266
253
  const acceptHeader = req.headers.accept;
267
254
  if (!acceptHeader || (!acceptHeader.includes('application/json') && !acceptHeader.includes('text/event-stream'))) {
268
255
  logger.warn(`Invalid Accept header: ${acceptHeader}`);
@@ -274,14 +261,12 @@ if (useHttp) {
274
261
  }));
275
262
  return;
276
263
  }
277
- // Handle JSON-RPC messages
278
264
  let body = '';
279
- req.on('data', chunk => body += chunk);
265
+ req.on('data', chunk => (body += chunk));
280
266
  req.on('end', async () => {
281
267
  try {
282
268
  const jsonData = JSON.parse(body);
283
269
  const sessionId = req.headers['mcp-session-id'];
284
- // Validate session ID format if provided (must contain only visible ASCII characters)
285
270
  if (sessionId && !/^[\x21-\x7E]+$/.test(sessionId)) {
286
271
  logger.warn(`Invalid session ID format: ${sessionId}`);
287
272
  res.writeHead(400, { 'Content-Type': 'application/json' });
@@ -294,11 +279,9 @@ if (useHttp) {
294
279
  }
295
280
  let transport;
296
281
  if (sessionId && transports[sessionId]) {
297
- // Reuse existing transport
298
282
  transport = transports[sessionId];
299
283
  }
300
284
  else if (!sessionId) {
301
- // Create new session (either for initialize request or fallback)
302
285
  const newSessionId = randomUUID();
303
286
  const isInit = isInitializeRequest(jsonData);
304
287
  if (isInit) {
@@ -312,7 +295,6 @@ if (useHttp) {
312
295
  onsessioninitialized: (id) => {
313
296
  transports[id] = transport;
314
297
  logger.info(`Session initialized: ${id}`);
315
- // Set session ID in response headers as required by MCP spec
316
298
  res.setHeader('mcp-session-id', id);
317
299
  }
318
300
  });
@@ -328,20 +310,18 @@ if (useHttp) {
328
310
  return;
329
311
  }
330
312
  else {
331
- // Invalid request - session ID provided but not found
332
313
  logger.error(`Invalid session ID: ${sessionId}. Active sessions count: ${Object.keys(transports).length}`);
333
314
  res.writeHead(400);
334
315
  res.end(JSON.stringify({
335
316
  jsonrpc: '2.0',
336
317
  error: {
337
318
  code: -32000,
338
- message: `Bad Request: Invalid session ID. Please initialize a new session first.`
319
+ message: 'Bad Request: Invalid session ID. Please initialize a new session first.'
339
320
  },
340
321
  id: jsonData.id || null
341
322
  }));
342
323
  return;
343
324
  }
344
- // Handle request with existing transport
345
325
  await transport.handleRequest(req, res, jsonData);
346
326
  }
347
327
  catch (error) {
@@ -358,7 +338,6 @@ if (useHttp) {
358
338
  });
359
339
  }
360
340
  else if (req.method === 'GET') {
361
- // Validate Accept header for SSE as required by MCP spec
362
341
  const acceptHeader = req.headers.accept;
363
342
  if (!acceptHeader || !acceptHeader.includes('text/event-stream')) {
364
343
  logger.warn(`GET request without text/event-stream Accept header: ${acceptHeader}`);
@@ -370,9 +349,7 @@ if (useHttp) {
370
349
  }));
371
350
  return;
372
351
  }
373
- // Handle SSE streams
374
352
  const sessionId = req.headers['mcp-session-id'];
375
- // Validate session ID format
376
353
  if (sessionId && !/^[\x21-\x7E]+$/.test(sessionId)) {
377
354
  logger.warn(`Invalid session ID format in GET request: ${sessionId}`);
378
355
  res.writeHead(400, { 'Content-Type': 'application/json' });
@@ -393,19 +370,14 @@ if (useHttp) {
393
370
  }));
394
371
  return;
395
372
  }
396
- // Check for Last-Event-ID header for resumability (optional MCP feature)
397
373
  const lastEventId = req.headers['last-event-id'];
398
374
  if (lastEventId) {
399
375
  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
376
  }
403
377
  logger.info(`Opening SSE stream for session: ${sessionId}`);
404
- // Prevent connection timeout and keep it alive
405
378
  req.socket?.setTimeout(0);
406
379
  req.socket?.setKeepAlive(true, 30000);
407
380
  let streamClosed = false;
408
- // Handle client disconnection gracefully
409
381
  req.on('close', () => {
410
382
  streamClosed = true;
411
383
  logger.info(`Client disconnected SSE stream for session: ${sessionId}`);
@@ -414,15 +386,11 @@ if (useHttp) {
414
386
  streamClosed = true;
415
387
  logger.info(`Client aborted SSE stream for session: ${sessionId}`);
416
388
  });
417
- // Let the MCP transport handle the SSE stream completely
418
389
  const transport = transports[sessionId];
419
390
  try {
420
391
  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
392
  if (!streamClosed && !res.destroyed) {
424
393
  logger.info(`Transport completed, maintaining SSE stream for session: ${sessionId}`);
425
- // Send periodic heartbeat to keep connection alive
426
394
  const heartbeat = setInterval(() => {
427
395
  if (streamClosed || res.destroyed) {
428
396
  clearInterval(heartbeat);
@@ -436,7 +404,6 @@ if (useHttp) {
436
404
  clearInterval(heartbeat);
437
405
  }
438
406
  }, 30000);
439
- // Clean up heartbeat when connection closes
440
407
  req.on('close', () => clearInterval(heartbeat));
441
408
  res.on('close', () => clearInterval(heartbeat));
442
409
  }
@@ -446,7 +413,6 @@ if (useHttp) {
446
413
  }
447
414
  }
448
415
  else if (req.method === 'DELETE') {
449
- // Handle session termination
450
416
  const sessionId = req.headers['mcp-session-id'];
451
417
  if (!sessionId || !transports[sessionId]) {
452
418
  res.writeHead(400);
@@ -472,8 +438,7 @@ if (useHttp) {
472
438
  });
473
439
  }
474
440
  else {
475
- // Stdio mode (default)
476
- logger.info("Starting in stdio mode");
441
+ logger.info('Starting in stdio mode');
477
442
  const transport = new StdioServerTransport();
478
443
  server.connect(transport)
479
444
  .then(() => {
@@ -484,4 +449,3 @@ else {
484
449
  process.exit(1);
485
450
  });
486
451
  }
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,42 @@
1
1
  {
2
2
  "name": "@socketsecurity/mcp",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
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:dtx-pack": "dtx-pack ./build/index.js",
25
+ "clean": "./scripts/clean.sh",
26
+ "debug-stdio": "node --experimental-strip-types ./mock-client/debug-client.ts",
27
+ "debug-sdk": "node --experimental-strip-types ./mock-client/stdio-client.ts",
28
+ "debug-http": "node --experimental-strip-types ./mock-client/http-client.ts",
29
+ "server-stdio": "SOCKET_API_KEY=${SOCKET_API_KEY} --experimental-strip-types ./index.ts",
30
+ "server-http": "MCP_HTTP_MODE=true SOCKET_API_KEY=${SOCKET_API_KEY} ./build/index.js"
16
31
  },
32
+ "keywords": [],
17
33
  "files": [
18
- "build"
34
+ "index.js",
35
+ "index.d.ts",
36
+ "index.d.ts.map",
37
+ "mock-client/**/*.js",
38
+ "mock-client/**/*.d.ts*"
19
39
  ],
20
- "keywords": [],
21
40
  "author": "Alexandros Kapravelos",
22
41
  "description": "Socket MCP server for scanning dependencies",
23
42
  "repository": {
@@ -26,17 +45,19 @@
26
45
  },
27
46
  "dependencies": {
28
47
  "@modelcontextprotocol/sdk": "^1.11.3",
29
- "@types/node-fetch": "^2.6.12",
30
- "node-fetch": "^3.3.2",
31
48
  "pino": "^9.7.0",
32
49
  "pino-pretty": "^13.0.0",
33
50
  "semver": "^7.7.2",
34
51
  "zod": "^3.24.4"
35
52
  },
36
53
  "devDependencies": {
37
- "@types/node": "^22.15.19",
54
+ "neostandard": "^0.12.0",
55
+ "@anthropic-ai/dxt": "^0.2.0",
56
+ "@types/node": "^24.0.7",
38
57
  "@types/semver": "^7.7.0",
39
58
  "@types/triple-beam": "^1.3.5",
40
- "typescript": "^5.8.3"
59
+ "c8": "^10.0.0",
60
+ "npm-run-all2": "^8.0.1",
61
+ "typescript": "~5.8.2"
41
62
  }
42
63
  }
@@ -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":"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"}
@@ -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"}