@sparrowai/sparrow-mcp 1.0.10 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.agent/skills/README.md +67 -0
  2. package/.agent/skills/sparrow-comprehensive-security/SKILL.md +141 -0
  3. package/.agent/skills/sparrow-fix-vulnerabilities/SKILL.md +101 -0
  4. package/.agent/skills/sparrow-full-audit/SKILL.md +103 -0
  5. package/.agent/skills/sparrow-mcp-test/SKILL.md +199 -0
  6. package/.agent/skills/sparrow-quick-scan/SKILL.md +91 -0
  7. package/.agent/skills/sparrow-sca-check/SKILL.md +126 -0
  8. package/README.md +65 -0
  9. package/bin/sparrow-mcp-test.cjs +29 -0
  10. package/dist/.tsbuildinfo +1 -1
  11. package/dist/scripts/mcp-test/mcp-client.d.ts +39 -0
  12. package/dist/scripts/mcp-test/mcp-client.js +151 -0
  13. package/dist/scripts/test-runner/standalone-test.d.ts +1 -0
  14. package/dist/scripts/test-runner/standalone-test.js +284 -0
  15. package/dist/src/config/appConfig.js +82 -0
  16. package/dist/src/config/constants.d.ts +45 -0
  17. package/dist/src/config/constants.js +26 -0
  18. package/dist/src/controllers/__tests__/analysis.controller.test.d.ts +1 -0
  19. package/dist/src/controllers/__tests__/analysis.controller.test.js +202 -0
  20. package/dist/src/controllers/__tests__/sast.controller.test.d.ts +1 -0
  21. package/dist/src/controllers/__tests__/sast.controller.test.js +126 -0
  22. package/dist/src/controllers/__tests__/sca.controller.test.d.ts +1 -0
  23. package/dist/src/controllers/__tests__/sca.controller.test.js +120 -0
  24. package/dist/src/controllers/__tests__/security.controller.test.d.ts +1 -0
  25. package/dist/src/controllers/__tests__/security.controller.test.js +59 -0
  26. package/dist/src/controllers/__tests__/system.controller.test.d.ts +1 -0
  27. package/dist/src/controllers/__tests__/system.controller.test.js +19 -0
  28. package/dist/src/controllers/analysis.controller.d.ts +150 -0
  29. package/dist/src/controllers/analysis.controller.js +440 -0
  30. package/dist/src/controllers/sast.controller.d.ts +109 -0
  31. package/dist/src/controllers/sast.controller.js +169 -0
  32. package/dist/src/controllers/sca.controller.d.ts +119 -0
  33. package/dist/src/controllers/sca.controller.js +180 -0
  34. package/dist/src/controllers/security.controller.d.ts +30 -0
  35. package/dist/src/controllers/security.controller.js +63 -0
  36. package/dist/src/controllers/system.controller.d.ts +2 -0
  37. package/dist/src/controllers/system.controller.js +2 -0
  38. package/dist/src/schemas/tool.schemas.d.ts +51 -0
  39. package/dist/src/schemas/tool.schemas.js +58 -0
  40. package/dist/src/server.js +152 -0
  41. package/dist/src/services/__tests__/checker.service.test.d.ts +1 -0
  42. package/dist/src/services/__tests__/checker.service.test.js +83 -0
  43. package/dist/src/services/__tests__/llm.service.test.d.ts +1 -0
  44. package/dist/src/services/__tests__/llm.service.test.js +83 -0
  45. package/dist/src/services/__tests__/s3.service.test.d.ts +1 -0
  46. package/dist/src/services/__tests__/s3.service.test.js +77 -0
  47. package/dist/src/services/__tests__/sparrow.service.test.d.ts +1 -0
  48. package/dist/src/services/__tests__/sparrow.service.test.js +66 -0
  49. package/dist/src/services/analysis.service.d.ts +113 -0
  50. package/dist/src/services/analysis.service.js +790 -0
  51. package/dist/src/services/checker.service.d.ts +70 -0
  52. package/dist/src/services/checker.service.js +242 -0
  53. package/dist/src/services/llm/AnthropicProvider.d.ts +7 -0
  54. package/dist/src/services/llm/AnthropicProvider.js +20 -0
  55. package/dist/src/services/llm/BedrockProvider.d.ts +7 -0
  56. package/dist/src/services/llm/BedrockProvider.js +48 -0
  57. package/dist/src/services/llm/GeminiProvider.d.ts +7 -0
  58. package/dist/src/services/llm/GeminiProvider.js +15 -0
  59. package/dist/src/services/llm/LLMFactory.d.ts +4 -0
  60. package/dist/src/services/llm/LLMFactory.js +33 -0
  61. package/dist/src/services/llm/LLMProvider.d.ts +3 -0
  62. package/dist/src/services/llm/LLMProvider.js +1 -0
  63. package/dist/src/services/llm/OllamaProvider.d.ts +7 -0
  64. package/dist/src/services/llm/OllamaProvider.js +35 -0
  65. package/dist/src/services/llm/OpenAIProvider.d.ts +7 -0
  66. package/dist/src/services/llm/OpenAIProvider.js +16 -0
  67. package/dist/{services → src/services}/llm.service.d.ts +1 -2
  68. package/dist/src/services/llm.service.js +128 -0
  69. package/dist/{services → src/services}/s3.service.d.ts +2 -0
  70. package/dist/src/services/s3.service.js +891 -0
  71. package/dist/{services → src/services}/sparrow.service.d.ts +7 -0
  72. package/dist/src/services/sparrow.service.js +351 -0
  73. package/dist/{types → src/types}/types.d.ts +97 -0
  74. package/dist/src/types/types.js +1 -0
  75. package/dist/src/utils/__tests__/crypto.util.test.d.ts +1 -0
  76. package/dist/src/utils/__tests__/crypto.util.test.js +52 -0
  77. package/dist/src/utils/__tests__/diff.util.test.d.ts +1 -0
  78. package/dist/src/utils/__tests__/diff.util.test.js +60 -0
  79. package/dist/src/utils/__tests__/fileManager.test.d.ts +1 -0
  80. package/dist/src/utils/__tests__/fileManager.test.js +53 -0
  81. package/dist/src/utils/__tests__/fileManagerSecure.test.d.ts +1 -0
  82. package/dist/src/utils/__tests__/fileManagerSecure.test.js +51 -0
  83. package/dist/src/utils/__tests__/logger.test.d.ts +1 -0
  84. package/dist/src/utils/__tests__/logger.test.js +51 -0
  85. package/dist/src/utils/crypto.util.js +59 -0
  86. package/dist/src/utils/diff.util.js +113 -0
  87. package/dist/src/utils/fileManager.d.ts +19 -0
  88. package/dist/src/utils/fileManager.js +34 -0
  89. package/dist/src/utils/fileManagerSecure.d.ts +20 -0
  90. package/dist/src/utils/fileManagerSecure.js +42 -0
  91. package/dist/src/utils/logger.js +56 -0
  92. package/package.json +26 -7
  93. package/test-cases-example.md +97 -0
  94. package/dist/config/appConfig.js +0 -1
  95. package/dist/server.js +0 -2
  96. package/dist/services/analysis.service.d.ts +0 -52
  97. package/dist/services/analysis.service.js +0 -1
  98. package/dist/services/llm.service.js +0 -1
  99. package/dist/services/s3.service.js +0 -1
  100. package/dist/services/sparrow.service.js +0 -1
  101. package/dist/types/types.js +0 -1
  102. package/dist/utils/crypto.util.js +0 -1
  103. package/dist/utils/diff.util.js +0 -1
  104. package/dist/utils/logger.js +0 -1
  105. /package/dist/{config → src/config}/appConfig.d.ts +0 -0
  106. /package/dist/{server.d.ts → src/server.d.ts} +0 -0
  107. /package/dist/{utils → src/utils}/crypto.util.d.ts +0 -0
  108. /package/dist/{utils → src/utils}/diff.util.d.ts +0 -0
  109. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: sparrow-sca-check
3
+ description: 오픈소스 라이브러리의 취약점 및 라이선스 이슈를 검사합니다
4
+ ---
5
+
6
+ # Sparrow SCA Check
7
+
8
+ 프로젝트의 오픈소스 의존성을 분석하여 취약한 라이브러리와 라이선스 이슈를 찾습니다.
9
+
10
+ ## 사용 시나리오
11
+
12
+ 사용자가 다음과 같이 요청할 때 이 skill을 적용하세요:
13
+ - "package.json 라이브러리 취약점 있어?"
14
+ - "오픈소스 보안 점검해줘"
15
+ - "의존성 보안 검사해줘"
16
+ - "라이선스 이슈 확인해줘"
17
+ - "SCA 분석해줘"
18
+
19
+ ## 지원 파일 형식
20
+
21
+ | 패키지 관리자 | 파일명 |
22
+ |--------------|--------|
23
+ | npm/Node.js | package.json, package-lock.json |
24
+ | Maven/Java | pom.xml |
25
+ | Gradle | build.gradle |
26
+ | Python | requirements.txt, Pipfile |
27
+ | .NET | *.csproj, packages.config |
28
+
29
+ ## 실행 단계
30
+
31
+ ### 단일 파일 분석
32
+
33
+ #### 1단계: SCA 분석 시작
34
+ ```
35
+ 도구: analyze_file_sca
36
+ 입력:
37
+ - filePath: 의존성 파일 경로 (예: "package.json")
38
+ 출력: analysisId
39
+ ```
40
+
41
+ ### 폴더 전체 분석
42
+
43
+ #### 1단계: 폴더 SCA 분석 시작
44
+ ```
45
+ 도구: analyze_folder_sca
46
+ 입력:
47
+ - folderPath: 프로젝트 경로
48
+ 출력: analysisId
49
+ ```
50
+
51
+ ### 공통 단계
52
+
53
+ #### 2단계: 진행률 추적
54
+ ```
55
+ 도구: track_analysis_progress
56
+ 입력:
57
+ - analysisId: 분석 ID
58
+ - maxWaitMs: 120000 (2분)
59
+ 출력: 완료 상태
60
+ ```
61
+
62
+ #### 3단계: SCA 결과 조회
63
+ ```
64
+ 도구: get_sca_analysis_results
65
+ 입력:
66
+ - analysisId: 분석 ID
67
+ 출력: 컴포넌트 목록, 취약점, 라이선스 정보
68
+ ```
69
+
70
+ ## 결과 보고 형식
71
+
72
+ ```markdown
73
+ # 📦 오픈소스 보안 점검 결과
74
+
75
+ ## 요약
76
+ | 항목 | 수치 |
77
+ |------|------|
78
+ | 검사된 컴포넌트 | N개 |
79
+ | 취약점 발견 | N개 |
80
+ | Critical | N개 |
81
+ | High | N개 |
82
+
83
+ ## 🚨 취약한 라이브러리
84
+
85
+ ### 1. lodash@4.17.15
86
+ - **취약점**: CVE-2021-23337 (CVSS: 7.2)
87
+ - **심각도**: High
88
+ - **설명**: Prototype Pollution 취약점
89
+ - **권장 조치**: `4.17.21` 이상으로 업데이트
90
+
91
+ ### 2. express@4.16.0
92
+ - **취약점**: CVE-2022-24999 (CVSS: 5.3)
93
+ - **심각도**: Medium
94
+ - **권장 조치**: `4.18.2` 이상으로 업데이트
95
+
96
+ ## 📋 라이선스 현황
97
+
98
+ | 라이브러리 | 버전 | 라이선스 |
99
+ |-----------|------|---------|
100
+ | react | 18.2.0 | MIT |
101
+ | lodash | 4.17.15 | MIT |
102
+
103
+ ## ✅ 권장 조치
104
+
105
+ ```bash
106
+ # Critical/High 취약점 해결
107
+ npm update lodash
108
+ npm update express
109
+
110
+ # 또는 특정 버전으로 업그레이드
111
+ npm install lodash@4.17.21
112
+ ```
113
+ ```
114
+
115
+ ## 🌐 언어 정책 (Language Policy)
116
+
117
+ - 결과 언어는 사용자가 입력한 프롬프트의 언어를 따릅니다.
118
+ - 모든 출력 및 보고서는 사용자의 언어로 표시하여 가독성을 높입니다.
119
+
120
+ ## 추가 안내
121
+
122
+ SCA 분석은 코드 자체가 아닌 **의존성 라이브러리**를 분석합니다.
123
+ - SAST: 작성한 코드의 취약점 (SQL Injection, XSS 등)
124
+ - SCA: 사용하는 라이브러리의 알려진 취약점 (CVE)
125
+
126
+ 두 가지를 함께 수행하면 더 완벽한 보안 점검이 가능합니다.
package/README.md CHANGED
@@ -176,6 +176,71 @@ To verify that the MCP server is connected:
176
176
  2. Check the MCP server status in the status bar or settings
177
177
  3. Try using one of the MCP tools (see Usage section below)
178
178
 
179
+ ## 🧪 Testing Installed MCP Server
180
+
181
+ The Sparrow MCP package includes an automated Inspector tool that tests all MCP server functionality and generates detailed reports.
182
+
183
+ ### Quick Start
184
+
185
+ ```bash
186
+ # Test local development server
187
+ npm run inspector:local
188
+
189
+ # Test installed NPM package
190
+ npm run inspector:npm
191
+ ```
192
+
193
+ ### Inspector Features
194
+
195
+ - ✅ **Automated Testing**: Tests all MCP tools automatically
196
+ - 📊 **Visual Reports**: Generates HTML reports with test results
197
+ - 🔍 **Detailed Analysis**: Shows success/failure reasons for each test
198
+ - 🚀 **Easy Integration**: Single command execution
199
+
200
+ ### Command Options
201
+
202
+ ```bash
203
+ # Basic usage
204
+ npm run inspector -- --target <local|npm> [options]
205
+
206
+ # Options:
207
+ # --target <type> Test target (local or npm)
208
+ # --output <format> Output format (console, html, json, all)
209
+ # --api-key <key> Sparrow API key
210
+ # --suite <name> Run specific test suite only
211
+ # --help Show help
212
+
213
+ # Examples:
214
+ npm run inspector -- --target local --output html
215
+ npm run inspector -- --target npm --api-key YOUR_KEY --output all
216
+ npm run inspector -- --target local --suite basic
217
+ ```
218
+
219
+ ### Test Suites
220
+
221
+ | Suite | Description | Tests |
222
+ |-------|-------------|-------|
223
+ | `basic` | Basic connection tests | 3 |
224
+ | `validation` | Input validation tests | 5 |
225
+ | `sast` | SAST analysis tests | 8 |
226
+ | `error` | Error handling tests | 4 |
227
+ | `workflow` | Workflow integration tests | 3 |
228
+ | `track` | Progress tracking tests | 2 |
229
+
230
+ ### Output Reports
231
+
232
+ After running tests, reports are generated in the `test-results/` directory:
233
+
234
+ - **HTML Report**: `test-results/inspector-report.html` - Visual report for browser viewing
235
+ - **JSON Report**: `test-results/inspector-report.json` - Machine-readable format for CI/CD
236
+
237
+ ### Documentation
238
+
239
+ For detailed usage instructions, see:
240
+ - [Inspector Guide (한글)](docs/INSPECTOR_GUIDE_KO.md) - Complete usage guide in Korean
241
+ - [Changes Documentation (한글)](docs/INSPECTOR_CHANGES_KO.md) - Detailed change log in Korean
242
+
243
+
179
244
  ## 🚀 Usage
180
245
 
181
246
  ### Available MCP Tools
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Sparrow MCP Test - CLI 진입점
5
+ *
6
+ * NPM 패키지로 설치된 후 `sparrow-mcp-test` 명령어로 실행됩니다.
7
+ * 독립형 테스트 러너를 실행하여 MCP 서버를 자동으로 테스트합니다.
8
+ */
9
+
10
+ const path = require('path');
11
+ const { spawn } = require('child_process');
12
+
13
+ // NPM 패키지 내부의 테스트 스크립트 경로
14
+ const testScript = path.join(__dirname, '..', 'dist', 'scripts', 'test-runner', 'standalone-test.js');
15
+
16
+ // Node.js로 테스트 스크립트 실행
17
+ const nodeProcess = spawn('node', [testScript, ...process.argv.slice(2)], {
18
+ stdio: 'inherit',
19
+ shell: process.platform === 'win32'
20
+ });
21
+
22
+ nodeProcess.on('error', (err) => {
23
+ console.error('Failed to start test runner:', err.message);
24
+ process.exit(1);
25
+ });
26
+
27
+ nodeProcess.on('exit', (code) => {
28
+ process.exit(code || 0);
29
+ });