@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.
- package/.agent/skills/README.md +67 -0
- package/.agent/skills/sparrow-comprehensive-security/SKILL.md +141 -0
- package/.agent/skills/sparrow-fix-vulnerabilities/SKILL.md +101 -0
- package/.agent/skills/sparrow-full-audit/SKILL.md +103 -0
- package/.agent/skills/sparrow-mcp-test/SKILL.md +199 -0
- package/.agent/skills/sparrow-quick-scan/SKILL.md +91 -0
- package/.agent/skills/sparrow-sca-check/SKILL.md +126 -0
- package/README.md +65 -0
- package/bin/sparrow-mcp-test.cjs +29 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/scripts/mcp-test/mcp-client.d.ts +39 -0
- package/dist/scripts/mcp-test/mcp-client.js +151 -0
- package/dist/scripts/test-runner/standalone-test.d.ts +1 -0
- package/dist/scripts/test-runner/standalone-test.js +284 -0
- package/dist/src/config/appConfig.js +82 -0
- package/dist/src/config/constants.d.ts +45 -0
- package/dist/src/config/constants.js +26 -0
- package/dist/src/controllers/__tests__/analysis.controller.test.d.ts +1 -0
- package/dist/src/controllers/__tests__/analysis.controller.test.js +202 -0
- package/dist/src/controllers/__tests__/sast.controller.test.d.ts +1 -0
- package/dist/src/controllers/__tests__/sast.controller.test.js +126 -0
- package/dist/src/controllers/__tests__/sca.controller.test.d.ts +1 -0
- package/dist/src/controllers/__tests__/sca.controller.test.js +120 -0
- package/dist/src/controllers/__tests__/security.controller.test.d.ts +1 -0
- package/dist/src/controllers/__tests__/security.controller.test.js +59 -0
- package/dist/src/controllers/__tests__/system.controller.test.d.ts +1 -0
- package/dist/src/controllers/__tests__/system.controller.test.js +19 -0
- package/dist/src/controllers/analysis.controller.d.ts +150 -0
- package/dist/src/controllers/analysis.controller.js +440 -0
- package/dist/src/controllers/sast.controller.d.ts +109 -0
- package/dist/src/controllers/sast.controller.js +169 -0
- package/dist/src/controllers/sca.controller.d.ts +119 -0
- package/dist/src/controllers/sca.controller.js +180 -0
- package/dist/src/controllers/security.controller.d.ts +30 -0
- package/dist/src/controllers/security.controller.js +63 -0
- package/dist/src/controllers/system.controller.d.ts +2 -0
- package/dist/src/controllers/system.controller.js +2 -0
- package/dist/src/schemas/tool.schemas.d.ts +51 -0
- package/dist/src/schemas/tool.schemas.js +58 -0
- package/dist/src/server.js +152 -0
- package/dist/src/services/__tests__/checker.service.test.d.ts +1 -0
- package/dist/src/services/__tests__/checker.service.test.js +83 -0
- package/dist/src/services/__tests__/llm.service.test.d.ts +1 -0
- package/dist/src/services/__tests__/llm.service.test.js +83 -0
- package/dist/src/services/__tests__/s3.service.test.d.ts +1 -0
- package/dist/src/services/__tests__/s3.service.test.js +77 -0
- package/dist/src/services/__tests__/sparrow.service.test.d.ts +1 -0
- package/dist/src/services/__tests__/sparrow.service.test.js +66 -0
- package/dist/src/services/analysis.service.d.ts +113 -0
- package/dist/src/services/analysis.service.js +790 -0
- package/dist/src/services/checker.service.d.ts +70 -0
- package/dist/src/services/checker.service.js +242 -0
- package/dist/src/services/llm/AnthropicProvider.d.ts +7 -0
- package/dist/src/services/llm/AnthropicProvider.js +20 -0
- package/dist/src/services/llm/BedrockProvider.d.ts +7 -0
- package/dist/src/services/llm/BedrockProvider.js +48 -0
- package/dist/src/services/llm/GeminiProvider.d.ts +7 -0
- package/dist/src/services/llm/GeminiProvider.js +15 -0
- package/dist/src/services/llm/LLMFactory.d.ts +4 -0
- package/dist/src/services/llm/LLMFactory.js +33 -0
- package/dist/src/services/llm/LLMProvider.d.ts +3 -0
- package/dist/src/services/llm/LLMProvider.js +1 -0
- package/dist/src/services/llm/OllamaProvider.d.ts +7 -0
- package/dist/src/services/llm/OllamaProvider.js +35 -0
- package/dist/src/services/llm/OpenAIProvider.d.ts +7 -0
- package/dist/src/services/llm/OpenAIProvider.js +16 -0
- package/dist/{services → src/services}/llm.service.d.ts +1 -2
- package/dist/src/services/llm.service.js +128 -0
- package/dist/{services → src/services}/s3.service.d.ts +2 -0
- package/dist/src/services/s3.service.js +891 -0
- package/dist/{services → src/services}/sparrow.service.d.ts +7 -0
- package/dist/src/services/sparrow.service.js +351 -0
- package/dist/{types → src/types}/types.d.ts +97 -0
- package/dist/src/types/types.js +1 -0
- package/dist/src/utils/__tests__/crypto.util.test.d.ts +1 -0
- package/dist/src/utils/__tests__/crypto.util.test.js +52 -0
- package/dist/src/utils/__tests__/diff.util.test.d.ts +1 -0
- package/dist/src/utils/__tests__/diff.util.test.js +60 -0
- package/dist/src/utils/__tests__/fileManager.test.d.ts +1 -0
- package/dist/src/utils/__tests__/fileManager.test.js +53 -0
- package/dist/src/utils/__tests__/fileManagerSecure.test.d.ts +1 -0
- package/dist/src/utils/__tests__/fileManagerSecure.test.js +51 -0
- package/dist/src/utils/__tests__/logger.test.d.ts +1 -0
- package/dist/src/utils/__tests__/logger.test.js +51 -0
- package/dist/src/utils/crypto.util.js +59 -0
- package/dist/src/utils/diff.util.js +113 -0
- package/dist/src/utils/fileManager.d.ts +19 -0
- package/dist/src/utils/fileManager.js +34 -0
- package/dist/src/utils/fileManagerSecure.d.ts +20 -0
- package/dist/src/utils/fileManagerSecure.js +42 -0
- package/dist/src/utils/logger.js +56 -0
- package/package.json +26 -7
- package/test-cases-example.md +97 -0
- package/dist/config/appConfig.js +0 -1
- package/dist/server.js +0 -2
- package/dist/services/analysis.service.d.ts +0 -52
- package/dist/services/analysis.service.js +0 -1
- package/dist/services/llm.service.js +0 -1
- package/dist/services/s3.service.js +0 -1
- package/dist/services/sparrow.service.js +0 -1
- package/dist/types/types.js +0 -1
- package/dist/utils/crypto.util.js +0 -1
- package/dist/utils/diff.util.js +0 -1
- package/dist/utils/logger.js +0 -1
- /package/dist/{config → src/config}/appConfig.d.ts +0 -0
- /package/dist/{server.d.ts → src/server.d.ts} +0 -0
- /package/dist/{utils → src/utils}/crypto.util.d.ts +0 -0
- /package/dist/{utils → src/utils}/diff.util.d.ts +0 -0
- /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
|
+
});
|