@nekzus/mcp-server 1.7.0 → 1.7.2
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/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -3
- package/dist/index.js.map +1 -1
- package/llms-full.txt +582 -0
- package/package.json +3 -2
package/llms-full.txt
ADDED
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
# NPM Sentinel MCP Server - Full Documentation
|
|
2
|
+
|
|
3
|
+
## Protocol Specification
|
|
4
|
+
Version: 2025-05-11
|
|
5
|
+
Transport: stdio
|
|
6
|
+
Features: resources, tools, error handling
|
|
7
|
+
|
|
8
|
+
## Architecture
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart TD
|
|
11
|
+
Client[MCP Client] <-->|MCP Protocol| Server[NPM Sentinel Server]
|
|
12
|
+
Server -->|Fetch| NPM[NPM Registry]
|
|
13
|
+
Server -->|Analysis| Security[Security DB]
|
|
14
|
+
Server -->|Metrics| Stats[Download Stats]
|
|
15
|
+
|
|
16
|
+
subgraph Resources
|
|
17
|
+
NPM
|
|
18
|
+
Security
|
|
19
|
+
Stats
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
subgraph Tools
|
|
23
|
+
Analysis[Package Analysis]
|
|
24
|
+
TypeScript[TS Support]
|
|
25
|
+
Performance[Performance]
|
|
26
|
+
Trends[Trend Analysis]
|
|
27
|
+
end
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Resources
|
|
31
|
+
|
|
32
|
+
### npm://registry
|
|
33
|
+
Content-Type: application/json
|
|
34
|
+
Methods: GET, SUBSCRIBE
|
|
35
|
+
Update Frequency: Real-time
|
|
36
|
+
Rate Limits: Follows npm registry limits
|
|
37
|
+
Description: Package metadata and version information interface
|
|
38
|
+
|
|
39
|
+
### npm://security
|
|
40
|
+
Content-Type: application/json
|
|
41
|
+
Methods: GET
|
|
42
|
+
Update Frequency: Daily
|
|
43
|
+
Severity Levels: Low, Medium, High, Critical
|
|
44
|
+
Description: Vulnerability and security analysis interface
|
|
45
|
+
|
|
46
|
+
### npm://metrics
|
|
47
|
+
Content-Type: application/json
|
|
48
|
+
Methods: GET, SUBSCRIBE
|
|
49
|
+
Update Frequency: Real-time
|
|
50
|
+
Metrics Types: Downloads, Stars, Issues, Updates
|
|
51
|
+
Description: Package analytics and statistics interface
|
|
52
|
+
|
|
53
|
+
## Tool Specifications
|
|
54
|
+
|
|
55
|
+
// Note: For all tools below, the response payload, typically as described by its `XYZResponse` interface
|
|
56
|
+
// (or a textual summary if the response is simpler), is JSON stringified and placed within the `text` field
|
|
57
|
+
// of the standard MCP content object: {"type": "text", "text": "...", "isError": boolean}.
|
|
58
|
+
|
|
59
|
+
#### npmVersions
|
|
60
|
+
```typescript
|
|
61
|
+
interface NpmVersionsInput {
|
|
62
|
+
packages: string[];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface VersionInfo {
|
|
66
|
+
version: string;
|
|
67
|
+
releaseDate: string;
|
|
68
|
+
deprecated?: boolean;
|
|
69
|
+
description?: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
interface NpmVersionsResponse {
|
|
73
|
+
[packageName: string]: VersionInfo[];
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### npmLatest
|
|
78
|
+
```typescript
|
|
79
|
+
interface NpmLatestInput {
|
|
80
|
+
packages: string[];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
interface LatestInfo {
|
|
84
|
+
version: string;
|
|
85
|
+
releaseDate: string;
|
|
86
|
+
changelog?: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
interface NpmLatestResponse {
|
|
90
|
+
[packageName: string]: LatestInfo;
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### npmDeps
|
|
95
|
+
```typescript
|
|
96
|
+
interface NpmDepsInput {
|
|
97
|
+
packages: string[];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
interface DependencyNode {
|
|
101
|
+
name: string;
|
|
102
|
+
version: string;
|
|
103
|
+
dependencies?: { [dependencyName: string]: string };
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface NpmDepsResponse {
|
|
107
|
+
[packageName: string]: {
|
|
108
|
+
dependencyTree?: DependencyNode;
|
|
109
|
+
analysisSummary?: string;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### npmTypes
|
|
115
|
+
```typescript
|
|
116
|
+
interface NpmTypesInput {
|
|
117
|
+
packages: string[];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface TypeSupport {
|
|
121
|
+
hasTypes: boolean;
|
|
122
|
+
bundled: boolean;
|
|
123
|
+
definitelyTyped: boolean;
|
|
124
|
+
typeVersion?: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface NpmTypesResponse {
|
|
128
|
+
[packageName: string]: TypeSupport;
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### npmSize
|
|
133
|
+
```typescript
|
|
134
|
+
interface NpmSizeInput {
|
|
135
|
+
packages: string[];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface SizeMetrics {
|
|
139
|
+
size: number;
|
|
140
|
+
gzip: number;
|
|
141
|
+
dependenciesCount: number;
|
|
142
|
+
treeshakeable?: boolean;
|
|
143
|
+
assetSizes?: { assetName: string; size: number }[];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
interface NpmSizeResponse {
|
|
147
|
+
[packageName: string]: SizeMetrics;
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
#### npmVulnerabilities
|
|
152
|
+
```typescript
|
|
153
|
+
interface NpmVulnerabilitiesInput {
|
|
154
|
+
packages: string[];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
interface Vulnerability {
|
|
158
|
+
severity: 'low' | 'medium' | 'high' | 'critical' | 'unknown';
|
|
159
|
+
title: string;
|
|
160
|
+
description: string;
|
|
161
|
+
affectedVersions: string;
|
|
162
|
+
recommendation?: string;
|
|
163
|
+
cvssScore?: number;
|
|
164
|
+
url?: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface NpmVulnerabilitiesResponse {
|
|
168
|
+
[packageName: string]: Vulnerability[];
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### npmTrends
|
|
173
|
+
```typescript
|
|
174
|
+
interface NpmTrendsInput {
|
|
175
|
+
packages: string[];
|
|
176
|
+
period: 'last-day' | 'last-week' | 'last-month' | 'last-year';
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
interface TrendDataPoint {
|
|
180
|
+
date: string;
|
|
181
|
+
downloads: number;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
interface TrendMetrics {
|
|
185
|
+
period: string;
|
|
186
|
+
downloads: TrendDataPoint[];
|
|
187
|
+
growth?: number;
|
|
188
|
+
popularityScore?: number;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
interface NpmTrendsResponse {
|
|
192
|
+
[packageName: string]: TrendMetrics;
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### npmCompare
|
|
197
|
+
```typescript
|
|
198
|
+
interface NpmCompareInput {
|
|
199
|
+
packages: string[];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
interface ComparisonAspects {
|
|
203
|
+
latestVersion?: string;
|
|
204
|
+
size?: SizeMetrics;
|
|
205
|
+
vulnerabilitiesCount?: number;
|
|
206
|
+
averageDownloads?: number;
|
|
207
|
+
qualityScore?: number;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
interface NpmCompareResponse {
|
|
211
|
+
[packageName: string]: ComparisonAspects;
|
|
212
|
+
comparisonSummary?: string;
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
#### npmMaintainers
|
|
217
|
+
```typescript
|
|
218
|
+
interface NpmMaintainersInput {
|
|
219
|
+
packages: string[];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
interface Maintainer {
|
|
223
|
+
name: string;
|
|
224
|
+
email?: string;
|
|
225
|
+
githubUsername?: string;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
interface NpmMaintainersResponse {
|
|
229
|
+
[packageName: string]: Maintainer[];
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
#### npmScore
|
|
234
|
+
```typescript
|
|
235
|
+
interface NpmScoreInput {
|
|
236
|
+
packages: string[];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
interface ScoreDetails {
|
|
240
|
+
quality: number;
|
|
241
|
+
popularity: number;
|
|
242
|
+
maintenance: number;
|
|
243
|
+
overall: number;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
interface NpmScoreResponse {
|
|
247
|
+
[packageName: string]: ScoreDetails;
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### npmPackageReadme
|
|
252
|
+
```typescript
|
|
253
|
+
interface NpmPackageReadmeInput {
|
|
254
|
+
packages: string[];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
interface NpmPackageReadmeResponse {
|
|
258
|
+
[packageName: string]: {
|
|
259
|
+
content: string;
|
|
260
|
+
format: 'markdown' | 'text';
|
|
261
|
+
error?: string;
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
#### npmSearch
|
|
267
|
+
```typescript
|
|
268
|
+
interface NpmSearchInput {
|
|
269
|
+
query: string;
|
|
270
|
+
limit?: number;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
interface SearchResultPackage {
|
|
274
|
+
name: string;
|
|
275
|
+
version: string;
|
|
276
|
+
description?: string;
|
|
277
|
+
keywords?: string[];
|
|
278
|
+
score?: ScoreDetails;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
interface NpmSearchResponse {
|
|
282
|
+
query: string;
|
|
283
|
+
results: SearchResultPackage[];
|
|
284
|
+
totalResults?: number;
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### npmLicenseCompatibility
|
|
289
|
+
```typescript
|
|
290
|
+
interface NpmLicenseCompatibilityInput {
|
|
291
|
+
packages: string[];
|
|
292
|
+
projectLicense?: string;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
interface LicenseInfo {
|
|
296
|
+
spdxId: string;
|
|
297
|
+
name: string;
|
|
298
|
+
isCompatible?: boolean;
|
|
299
|
+
issues?: string[];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
interface NpmLicenseCompatibilityResponse {
|
|
303
|
+
[packageName: string]: LicenseInfo;
|
|
304
|
+
compatibilitySummary?: string;
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
#### npmRepoStats
|
|
309
|
+
```typescript
|
|
310
|
+
interface NpmRepoStatsInput {
|
|
311
|
+
packages: string[];
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
interface RepoStats {
|
|
315
|
+
stars?: number;
|
|
316
|
+
forks?: number;
|
|
317
|
+
openIssues?: number;
|
|
318
|
+
lastCommitDate?: string;
|
|
319
|
+
contributorsCount?: number;
|
|
320
|
+
repoUrl?: string;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
interface NpmRepoStatsResponse {
|
|
324
|
+
[packageName: string]: RepoStats;
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
#### npmDeprecated
|
|
329
|
+
```typescript
|
|
330
|
+
interface NpmDeprecatedInput {
|
|
331
|
+
packages: string[];
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
interface DeprecationInfo {
|
|
335
|
+
isDeprecated: boolean;
|
|
336
|
+
message?: string;
|
|
337
|
+
alternative?: string;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
interface NpmDeprecatedResponse {
|
|
341
|
+
[packageName: string]: DeprecationInfo;
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
#### npmChangelogAnalysis
|
|
346
|
+
```typescript
|
|
347
|
+
interface NpmChangelogAnalysisInput {
|
|
348
|
+
packages: string[];
|
|
349
|
+
targetVersion?: string;
|
|
350
|
+
sinceVersion?: string;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
interface ChangelogEntry {
|
|
354
|
+
version: string;
|
|
355
|
+
date?: string;
|
|
356
|
+
summary?: string;
|
|
357
|
+
changes?: { type: 'added' | 'fixed' | 'changed' | 'removed'; description: string }[];
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
interface NpmChangelogAnalysisResponse {
|
|
361
|
+
[packageName: string]: {
|
|
362
|
+
changelogUrl?: string;
|
|
363
|
+
entries?: ChangelogEntry[];
|
|
364
|
+
analysisSummary?: string;
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
#### npmAlternatives
|
|
370
|
+
```typescript
|
|
371
|
+
interface NpmAlternativesInput {
|
|
372
|
+
packages: string[];
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
interface AlternativePackageInfo {
|
|
376
|
+
name: string;
|
|
377
|
+
reason?: string;
|
|
378
|
+
score?: ScoreDetails;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
interface NpmAlternativesResponse {
|
|
382
|
+
[packageName: string]: {
|
|
383
|
+
alternatives: AlternativePackageInfo[];
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### npmQuality
|
|
389
|
+
```typescript
|
|
390
|
+
interface NpmQualityInput {
|
|
391
|
+
packages: string[];
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
interface QualityMetrics {
|
|
395
|
+
codeComplexity?: number;
|
|
396
|
+
testCoverage?: number;
|
|
397
|
+
documentationScore?: number;
|
|
398
|
+
communityEngagement?: number;
|
|
399
|
+
npmsQualityScore?: number;
|
|
400
|
+
npmsPopularityScore?: number;
|
|
401
|
+
npmsMaintenanceScore?: number;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
interface NpmQualityResponse {
|
|
405
|
+
[packageName: string]: QualityMetrics;
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
#### npmMaintenance
|
|
410
|
+
```typescript
|
|
411
|
+
interface NpmMaintenanceInput {
|
|
412
|
+
packages: string[];
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
interface MaintenanceMetrics {
|
|
416
|
+
lastPublishDate?: string;
|
|
417
|
+
commitFrequency?: string;
|
|
418
|
+
openIssuesRatio?: number;
|
|
419
|
+
timeSinceLastCommit?: string;
|
|
420
|
+
npmsMaintenanceScore?: number;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
interface NpmMaintenanceResponse {
|
|
424
|
+
[packageName: string]: MaintenanceMetrics;
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
## Error Handling
|
|
429
|
+
|
|
430
|
+
### Standard Error Format
|
|
431
|
+
// When an error occurs, the standard MCP response 'content' object will have 'isError: true'.
|
|
432
|
+
// The 'text' field of that content object will contain a JSON stringified MCPError object, as defined below.
|
|
433
|
+
```typescript
|
|
434
|
+
interface MCPError {
|
|
435
|
+
error: {
|
|
436
|
+
code: number;
|
|
437
|
+
message: string;
|
|
438
|
+
data?: {
|
|
439
|
+
details: string;
|
|
440
|
+
packageName?: string;
|
|
441
|
+
context?: any;
|
|
442
|
+
};
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### Error Codes
|
|
448
|
+
1000: Invalid package name
|
|
449
|
+
1001: Package not found
|
|
450
|
+
1002: Version not found
|
|
451
|
+
1003: Rate limit exceeded
|
|
452
|
+
1004: Network error
|
|
453
|
+
1005: Analysis failed
|
|
454
|
+
2000: Internal server error
|
|
455
|
+
|
|
456
|
+
## Security Considerations
|
|
457
|
+
|
|
458
|
+
### Data Protection
|
|
459
|
+
- All data is processed locally
|
|
460
|
+
- No sensitive information is stored
|
|
461
|
+
- Secure communication channels
|
|
462
|
+
|
|
463
|
+
### Rate Limiting
|
|
464
|
+
- Implements fair usage policies
|
|
465
|
+
- Respects NPM registry limits
|
|
466
|
+
- Prevents abuse
|
|
467
|
+
|
|
468
|
+
### Authentication
|
|
469
|
+
- Supports npm token authentication
|
|
470
|
+
- Validates package access
|
|
471
|
+
- Manages credentials securely
|
|
472
|
+
|
|
473
|
+
## Integration Guide
|
|
474
|
+
|
|
475
|
+
### Docker Configuration
|
|
476
|
+
The server can be run in a Docker container with directory mounting to `/projects`. This allows for secure access to files while maintaining isolation.
|
|
477
|
+
|
|
478
|
+
#### Build
|
|
479
|
+
```bash
|
|
480
|
+
# Build the Docker image
|
|
481
|
+
docker build -t nekzus/npm-sentinel-mcp .
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Basic Usage
|
|
485
|
+
```json
|
|
486
|
+
{
|
|
487
|
+
"mcpServers": {
|
|
488
|
+
"npm-sentinel-mcp": {
|
|
489
|
+
"command": "docker",
|
|
490
|
+
"args": [
|
|
491
|
+
"run",
|
|
492
|
+
"-i",
|
|
493
|
+
"--rm",
|
|
494
|
+
"-w", "/projects",
|
|
495
|
+
"--mount", "type=bind,src=${PWD},dst=/projects",
|
|
496
|
+
"nekzus/npm-sentinel-mcp",
|
|
497
|
+
"node",
|
|
498
|
+
"dist/index.js"
|
|
499
|
+
]
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
#### Multi-Directory Configuration
|
|
506
|
+
```json
|
|
507
|
+
{
|
|
508
|
+
"mcpServers": {
|
|
509
|
+
"npm-sentinel-mcp": {
|
|
510
|
+
"command": "docker",
|
|
511
|
+
"args": [
|
|
512
|
+
"run",
|
|
513
|
+
"-i",
|
|
514
|
+
"--rm",
|
|
515
|
+
"-w", "/projects",
|
|
516
|
+
"--mount", "type=bind,src=/path/to/workspace,dst=/projects/workspace",
|
|
517
|
+
"--mount", "type=bind,src=/path/to/other/dir,dst=/projects/other/dir,ro",
|
|
518
|
+
"nekzus/npm-sentinel-mcp",
|
|
519
|
+
"node",
|
|
520
|
+
"dist/index.js"
|
|
521
|
+
]
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
#### Mount Guidelines
|
|
528
|
+
- Mount all directories under `/projects`
|
|
529
|
+
- Use absolute paths for source directories
|
|
530
|
+
- Add `,ro` flag for read-only access
|
|
531
|
+
- Working directory is set to `/projects`
|
|
532
|
+
- Container runs in interactive mode with auto-removal
|
|
533
|
+
|
|
534
|
+
### Standard Configuration
|
|
535
|
+
```json
|
|
536
|
+
{
|
|
537
|
+
"mcpServers": {
|
|
538
|
+
"npm-sentinel-mcp": {
|
|
539
|
+
"transport": "stdio",
|
|
540
|
+
"command": "npx",
|
|
541
|
+
"args": ["-y", "@nekzus/mcp-server"]
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
### Basic Usage
|
|
548
|
+
```typescript
|
|
549
|
+
// Initialize client
|
|
550
|
+
const client = await MCPClient.connect("npm-sentinel-mcp");
|
|
551
|
+
|
|
552
|
+
// Analyze package
|
|
553
|
+
const result = await client.invoke("npmVersions", {
|
|
554
|
+
packages: ["react"]
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
// Subscribe to updates
|
|
558
|
+
const unsubscribe = await client.subscribe("npm://registry", {
|
|
559
|
+
package: "react",
|
|
560
|
+
onUpdate: (data) => console.log(data)
|
|
561
|
+
});
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
## Best Practices
|
|
565
|
+
|
|
566
|
+
### Resource Usage
|
|
567
|
+
1. Subscribe to resources for real-time updates
|
|
568
|
+
2. Implement caching for frequently accessed data
|
|
569
|
+
3. Use batch operations when possible
|
|
570
|
+
4. Handle rate limits gracefully
|
|
571
|
+
|
|
572
|
+
### Error Handling
|
|
573
|
+
1. Implement proper error recovery
|
|
574
|
+
2. Provide meaningful error messages
|
|
575
|
+
3. Log errors for debugging
|
|
576
|
+
4. Handle timeout scenarios
|
|
577
|
+
|
|
578
|
+
### Performance
|
|
579
|
+
1. Use connection pooling
|
|
580
|
+
2. Implement request queuing
|
|
581
|
+
3. Cache responses
|
|
582
|
+
4. Handle concurrent requests
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nekzus/mcp-server",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "NPM Sentinel MCP - A powerful Model Context Protocol (MCP) server that revolutionizes NPM package analysis through AI. Built to integrate with Claude and Anthropic AI, it provides real-time intelligence on package security, dependencies, and performance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
13
|
"README.md",
|
|
14
|
+
"llms-full.txt",
|
|
14
15
|
"LICENSE"
|
|
15
16
|
],
|
|
16
17
|
"scripts": {
|
|
@@ -75,7 +76,7 @@
|
|
|
75
76
|
},
|
|
76
77
|
"homepage": "https://github.com/Nekzus/npm-sentinel-mcp#readme",
|
|
77
78
|
"dependencies": {
|
|
78
|
-
"@modelcontextprotocol/sdk": "1.11.
|
|
79
|
+
"@modelcontextprotocol/sdk": "1.11.2",
|
|
79
80
|
"node-fetch": "3.3.2",
|
|
80
81
|
"zod": "3.24.4"
|
|
81
82
|
},
|