swagger-parser-mcp-server 2.3.4 → 3.0.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/README.md +81 -120
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +266 -102
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +2 -283
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +0 -108
- package/dist/schemas.js.map +1 -1
- package/dist/utils/swaggerCache.d.ts +0 -4
- package/dist/utils/swaggerCache.d.ts.map +1 -1
- package/dist/utils/swaggerCache.js +0 -8
- package/dist/utils/swaggerCache.js.map +1 -1
- package/package.json +3 -11
- package/dist/application/snapshot/createSnapshotRuntime.d.ts +0 -2
- package/dist/application/snapshot/createSnapshotRuntime.d.ts.map +0 -1
- package/dist/application/snapshot/createSnapshotRuntime.js +0 -2
- package/dist/application/snapshot/createSnapshotRuntime.js.map +0 -1
- package/dist/application/snapshot/snapshotCaptureService.d.ts +0 -90
- package/dist/application/snapshot/snapshotCaptureService.d.ts.map +0 -1
- package/dist/application/snapshot/snapshotCaptureService.js +0 -394
- package/dist/application/snapshot/snapshotCaptureService.js.map +0 -1
- package/dist/application/snapshot/snapshotRepository.d.ts +0 -77
- package/dist/application/snapshot/snapshotRepository.d.ts.map +0 -1
- package/dist/application/snapshot/snapshotRepository.js +0 -2
- package/dist/application/snapshot/snapshotRepository.js.map +0 -1
- package/dist/domain/canonical/canonicalSnapshot.d.ts +0 -61
- package/dist/domain/canonical/canonicalSnapshot.d.ts.map +0 -1
- package/dist/domain/canonical/canonicalSnapshot.js +0 -300
- package/dist/domain/canonical/canonicalSnapshot.js.map +0 -1
- package/dist/domain/contracts/runtimeEnvironmentContract.d.ts +0 -21
- package/dist/domain/contracts/runtimeEnvironmentContract.d.ts.map +0 -1
- package/dist/domain/contracts/runtimeEnvironmentContract.js +0 -50
- package/dist/domain/contracts/runtimeEnvironmentContract.js.map +0 -1
- package/dist/domain/contracts/snapshotDiffContract.d.ts +0 -270
- package/dist/domain/contracts/snapshotDiffContract.d.ts.map +0 -1
- package/dist/domain/contracts/snapshotDiffContract.js +0 -99
- package/dist/domain/contracts/snapshotDiffContract.js.map +0 -1
- package/dist/domain/diff/endpointDiffClassifier.d.ts +0 -78
- package/dist/domain/diff/endpointDiffClassifier.d.ts.map +0 -1
- package/dist/domain/diff/endpointDiffClassifier.js +0 -317
- package/dist/domain/diff/endpointDiffClassifier.js.map +0 -1
- package/dist/http.d.ts +0 -3
- package/dist/http.d.ts.map +0 -1
- package/dist/http.js +0 -52
- package/dist/http.js.map +0 -1
- package/dist/infrastructure/postgres/migrationRunner.d.ts +0 -14
- package/dist/infrastructure/postgres/migrationRunner.d.ts.map +0 -1
- package/dist/infrastructure/postgres/migrationRunner.js +0 -161
- package/dist/infrastructure/postgres/migrationRunner.js.map +0 -1
- package/dist/infrastructure/postgres/migrations/001_snapshot_schema.sql +0 -29
- package/dist/infrastructure/postgres/migrations/002_snapshot_change_history.sql +0 -32
- package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts +0 -25
- package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts.map +0 -1
- package/dist/infrastructure/postgres/postgresSnapshotRepository.js +0 -323
- package/dist/infrastructure/postgres/postgresSnapshotRepository.js.map +0 -1
- package/dist/infrastructure/postgres/runMigrations.d.ts +0 -3
- package/dist/infrastructure/postgres/runMigrations.d.ts.map +0 -1
- package/dist/infrastructure/postgres/runMigrations.js +0 -33
- package/dist/infrastructure/postgres/runMigrations.js.map +0 -1
- package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts +0 -17
- package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts.map +0 -1
- package/dist/infrastructure/runtime/createSnapshotRuntime.js +0 -38
- package/dist/infrastructure/runtime/createSnapshotRuntime.js.map +0 -1
- package/dist/tests/canonicalSnapshot.test.d.ts +0 -2
- package/dist/tests/canonicalSnapshot.test.d.ts.map +0 -1
- package/dist/tests/canonicalSnapshot.test.js +0 -425
- package/dist/tests/canonicalSnapshot.test.js.map +0 -1
- package/dist/tests/endpointDiffClassifier.test.d.ts +0 -2
- package/dist/tests/endpointDiffClassifier.test.d.ts.map +0 -1
- package/dist/tests/endpointDiffClassifier.test.js +0 -633
- package/dist/tests/endpointDiffClassifier.test.js.map +0 -1
- package/dist/tests/httpSnapshotTransport.test.d.ts +0 -2
- package/dist/tests/httpSnapshotTransport.test.d.ts.map +0 -1
- package/dist/tests/httpSnapshotTransport.test.js +0 -393
- package/dist/tests/httpSnapshotTransport.test.js.map +0 -1
- package/dist/tests/indexLifecycle.test.d.ts +0 -2
- package/dist/tests/indexLifecycle.test.d.ts.map +0 -1
- package/dist/tests/indexLifecycle.test.js +0 -44
- package/dist/tests/indexLifecycle.test.js.map +0 -1
- package/dist/tests/mcpSnapshotTools.test.d.ts +0 -2
- package/dist/tests/mcpSnapshotTools.test.d.ts.map +0 -1
- package/dist/tests/mcpSnapshotTools.test.js +0 -316
- package/dist/tests/mcpSnapshotTools.test.js.map +0 -1
- package/dist/tests/postgresMigrationSmoke.test.d.ts +0 -2
- package/dist/tests/postgresMigrationSmoke.test.d.ts.map +0 -1
- package/dist/tests/postgresMigrationSmoke.test.js +0 -187
- package/dist/tests/postgresMigrationSmoke.test.js.map +0 -1
- package/dist/tests/realPostgresTestSchema.d.ts +0 -10
- package/dist/tests/realPostgresTestSchema.d.ts.map +0 -1
- package/dist/tests/realPostgresTestSchema.js +0 -73
- package/dist/tests/realPostgresTestSchema.js.map +0 -1
- package/dist/tests/snapshotCapturePipeline.test.d.ts +0 -2
- package/dist/tests/snapshotCapturePipeline.test.d.ts.map +0 -1
- package/dist/tests/snapshotCapturePipeline.test.js +0 -475
- package/dist/tests/snapshotCapturePipeline.test.js.map +0 -1
- package/dist/tests/snapshotDiffContract.test.d.ts +0 -2
- package/dist/tests/snapshotDiffContract.test.d.ts.map +0 -1
- package/dist/tests/snapshotDiffContract.test.js +0 -156
- package/dist/tests/snapshotDiffContract.test.js.map +0 -1
- package/dist/tests/snapshotPersistence.real.test.d.ts +0 -2
- package/dist/tests/snapshotPersistence.real.test.d.ts.map +0 -1
- package/dist/tests/snapshotPersistence.real.test.js +0 -310
- package/dist/tests/snapshotPersistence.real.test.js.map +0 -1
- package/dist/tests/webServerRuntime.test.d.ts +0 -2
- package/dist/tests/webServerRuntime.test.d.ts.map +0 -1
- package/dist/tests/webServerRuntime.test.js +0 -123
- package/dist/tests/webServerRuntime.test.js.map +0 -1
- package/dist/transport/createSnapshotToolRuntime.d.ts +0 -7
- package/dist/transport/createSnapshotToolRuntime.d.ts.map +0 -1
- package/dist/transport/createSnapshotToolRuntime.js +0 -40
- package/dist/transport/createSnapshotToolRuntime.js.map +0 -1
- package/dist/transport/httpSnapshotServer.d.ts +0 -11
- package/dist/transport/httpSnapshotServer.d.ts.map +0 -1
- package/dist/transport/httpSnapshotServer.js +0 -234
- package/dist/transport/httpSnapshotServer.js.map +0 -1
- package/dist/transport/mcpToolRouter.d.ts +0 -81
- package/dist/transport/mcpToolRouter.d.ts.map +0 -1
- package/dist/transport/mcpToolRouter.js +0 -416
- package/dist/transport/mcpToolRouter.js.map +0 -1
- package/dist/transport/webServerRuntime.d.ts +0 -17
- package/dist/transport/webServerRuntime.d.ts.map +0 -1
- package/dist/transport/webServerRuntime.js +0 -73
- package/dist/transport/webServerRuntime.js.map +0 -1
- package/dist/web/dashboard.css +0 -411
- package/dist/web/dashboard.html +0 -141
- package/dist/web/dashboard.js +0 -540
package/README.md
CHANGED
|
@@ -1,111 +1,97 @@
|
|
|
1
1
|
# Swagger Parser MCP Server
|
|
2
2
|
|
|
3
|
-
Swagger/OpenAPI JSON 파일을
|
|
3
|
+
Swagger/OpenAPI JSON 파일을 파싱하여 API 정보를 분석하는 MCP 서버입니다.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Claude와 함께 사용하여 API 문서를 쉽게 분석하고 이해할 수 있습니다.
|
|
6
6
|
|
|
7
7
|
## 주요 기능
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
- 컨트롤러(태그)
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- `$ref` 스키마 해석
|
|
14
|
-
- Postgres에 snapshot 영속화
|
|
15
|
-
- snapshot 이력 조회
|
|
16
|
-
- 두 snapshot 간 diff summary 조회
|
|
17
|
-
- 특정 endpoint의 before/after diff detail 조회
|
|
9
|
+
- ✅ 원하는 컨트롤러에 대한 path 리스트 조회
|
|
10
|
+
- ✅ JSON에서 컨트롤러(태그) 리스트 추출
|
|
11
|
+
- ✅ Path에 대한 parameters, requestBody, responseBody 정보 및 스키마 조회
|
|
12
|
+
- ✅ $ref로 참조된 스키마의 실제 타입 정보 제공 (자동 해결)
|
|
18
13
|
|
|
19
|
-
##
|
|
14
|
+
## 설치 및 사용법
|
|
20
15
|
|
|
21
|
-
|
|
16
|
+
### 방법 1: npx 등록 (권장)
|
|
22
17
|
|
|
23
|
-
|
|
18
|
+
#### 1. MCP 설정
|
|
19
|
+
MCP 설정 파일(`mcp.json` 또는 Claude 설정)에 다음 내용을 추가합니다:
|
|
24
20
|
|
|
25
21
|
```json
|
|
26
22
|
{
|
|
27
23
|
"mcpServers": {
|
|
28
24
|
"swagger-parser": {
|
|
29
25
|
"command": "npx",
|
|
30
|
-
"args": ["-y",
|
|
31
|
-
"env": {
|
|
32
|
-
"DATABASE_URL": "postgresql://<db-user>:<db-password>@<db-host>:5432/<db-name>",
|
|
33
|
-
"PROJECT_KEY": "frontend-diff",
|
|
34
|
-
"SWAGGER_URL": "https://api.example.com/openapi.json",
|
|
35
|
-
"SNAPSHOT_WEB_ENABLED": "false"
|
|
36
|
-
}
|
|
26
|
+
"args": ["-y","swagger-parser-mcp-server"]
|
|
37
27
|
}
|
|
38
28
|
}
|
|
39
29
|
}
|
|
40
30
|
```
|
|
41
31
|
|
|
42
|
-
|
|
32
|
+
**Claude Code CLI 사용시:**
|
|
33
|
+
```bash
|
|
34
|
+
claude mcp add swagger-parser -- npx -y swagger-parser-mcp-server
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 방법 2: 소스코드 직접 사용
|
|
38
|
+
|
|
39
|
+
#### 1. 소스코드 다운로드 및 빌드
|
|
40
|
+
```bash
|
|
41
|
+
# 저장소 클론 또는 파일 다운로드 후
|
|
42
|
+
cd swagger-parser-mcp-server
|
|
43
|
+
|
|
44
|
+
# 의존성 설치
|
|
45
|
+
pnpm install
|
|
43
46
|
|
|
47
|
+
# TypeScript 빌드
|
|
48
|
+
pnpm run build
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### 2. MCP 설정
|
|
52
|
+
|
|
53
|
+
MCP 설정 파일을 열어 다음 내용을 추가합니다:
|
|
44
54
|
```json
|
|
45
55
|
{
|
|
46
56
|
"mcpServers": {
|
|
47
|
-
"swagger-parser
|
|
48
|
-
"command": "
|
|
49
|
-
"args": ["
|
|
50
|
-
"env": {
|
|
51
|
-
"DATABASE_URL": "postgresql://<db-user>:<db-password>@<db-host>:5432/<db-name>",
|
|
52
|
-
"PROJECT_KEY": "team.frontend-diff",
|
|
53
|
-
"SWAGGER_URL": "https://api.example.com/openapi.json",
|
|
54
|
-
"SNAPSHOT_WEB_ENABLED": "false"
|
|
55
|
-
}
|
|
57
|
+
"swagger-parser": {
|
|
58
|
+
"command": "node",
|
|
59
|
+
"args": ["<프로젝트 절대경로>/dist/index.js"]
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
```
|
|
60
64
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- 보통 API source 하나당 MCP 서버 엔트리 하나로 등록하는 것이 가장 단순합니다.
|
|
67
|
-
|
|
68
|
-
## 환경 변수
|
|
69
|
-
|
|
70
|
-
필수:
|
|
71
|
-
|
|
72
|
-
- `DATABASE_URL`: snapshot/diff 저장용 Postgres 연결 문자열
|
|
73
|
-
- `PROJECT_KEY`: source 식별자. 영문, 숫자, `.`, `_`, `-`만 허용
|
|
74
|
-
- `SWAGGER_URL`: 캡처 대상 OpenAPI JSON URL
|
|
75
|
-
|
|
76
|
-
선택:
|
|
65
|
+
**Claude Code CLI 사용시:**
|
|
66
|
+
```bash
|
|
67
|
+
claude mcp add swagger-parser node <프로젝트 절대경로>/dist/index.js
|
|
68
|
+
```
|
|
69
|
+
> IDE에서 ./dist/index.js 파일 우클릭 후 절대 경로 복사 가능합니다.
|
|
77
70
|
|
|
78
|
-
|
|
79
|
-
- `HTTP_HOST`: HTTP 서버 바인딩 주소. 기본값 `0.0.0.0`
|
|
80
|
-
- `HTTP_PORT`: HTTP 서버 포트. 기본값 `3100`
|
|
71
|
+
### 3. Claude 재시작
|
|
81
72
|
|
|
82
|
-
|
|
73
|
+
설정을 저장한 후 Claude Desktop/Cursor/Claude Code를 재시작합니다.
|
|
83
74
|
|
|
84
|
-
|
|
75
|
+
## 사용 예시
|
|
85
76
|
|
|
86
|
-
|
|
87
|
-
2. `list_snapshots`
|
|
88
|
-
3. `get_snapshot_diff`
|
|
89
|
-
4. 필요하면 `get_endpoint_diff_detail`
|
|
77
|
+
⚠️ JSON 형태 스웨거를 반환하는 URL을 줘야합니다.
|
|
90
78
|
|
|
91
|
-
|
|
79
|
+
Claude에서 다음과 같이 사용할 수 있습니다:
|
|
92
80
|
|
|
93
|
-
```text
|
|
94
|
-
현재 설정된 Swagger source를 snapshot으로 캡처해줘
|
|
95
|
-
최근 snapshot 20개를 보여줘
|
|
96
|
-
가장 최근 두 snapshot의 diff를 보여줘
|
|
97
|
-
GET /users endpoint diff detail을 보여줘
|
|
98
81
|
```
|
|
99
|
-
|
|
100
|
-
## 일반 Swagger 분석 예시
|
|
101
|
-
|
|
102
|
-
⚠️ JSON 형태의 Swagger/OpenAPI 문서를 반환하는 URL이어야 합니다.
|
|
103
|
-
|
|
104
|
-
```text
|
|
82
|
+
# Swagger JSON 로드
|
|
105
83
|
이 API 문서를 분석해줘: https://petstore.swagger.io/v2/swagger.json
|
|
84
|
+
|
|
85
|
+
# 컨트롤러 목록 보기
|
|
106
86
|
어떤 컨트롤러들이 있는지 보여줘
|
|
87
|
+
|
|
88
|
+
# 특정 컨트롤러의 API 목록
|
|
107
89
|
pet 컨트롤러의 모든 API를 보여줘
|
|
90
|
+
|
|
91
|
+
# API 상세 정보
|
|
108
92
|
GET /pet/{petId} API의 파라미터와 응답 스키마를 자세히 보여줘
|
|
93
|
+
|
|
94
|
+
# 스키마 정보
|
|
109
95
|
Pet 모델의 전체 스키마 구조를 보여줘
|
|
110
96
|
```
|
|
111
97
|
|
|
@@ -124,76 +110,51 @@ pnpm run build
|
|
|
124
110
|
pnpm run dev
|
|
125
111
|
```
|
|
126
112
|
|
|
127
|
-
|
|
113
|
+
## 테스트
|
|
128
114
|
|
|
129
115
|
```bash
|
|
130
|
-
pnpm run
|
|
116
|
+
pnpm run test
|
|
131
117
|
```
|
|
132
118
|
|
|
133
|
-
|
|
119
|
+
## 지원하는 OpenAPI 버전
|
|
134
120
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
```
|
|
121
|
+
- ✅ Swagger 2.0
|
|
122
|
+
- ✅ OpenAPI 3.0.x
|
|
138
123
|
|
|
139
|
-
##
|
|
124
|
+
## 문제 해결
|
|
140
125
|
|
|
141
|
-
|
|
126
|
+
### "MCP 서버를 찾을 수 없습니다" 오류
|
|
127
|
+
1. 설정 파일의 경로가 올바른지 확인하세요
|
|
128
|
+
2. Node.js가 설치되어 있는지 확인하세요 (`node --version`)
|
|
129
|
+
3. 프로젝트가 빌드되었는지 확인하세요 (`pnpm run build`)
|
|
142
130
|
|
|
131
|
+
### 패키지 실행 오류
|
|
143
132
|
```bash
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
실 Postgres 영속성 테스트:
|
|
133
|
+
# npx 캐시 클리어
|
|
134
|
+
npx clear-npx-cache
|
|
148
135
|
|
|
149
|
-
|
|
150
|
-
|
|
136
|
+
# 패키지 재설치
|
|
137
|
+
npm uninstall swagger-parser-mcp-server
|
|
138
|
+
npm install swagger-parser-mcp-server
|
|
151
139
|
```
|
|
152
140
|
|
|
153
|
-
|
|
141
|
+
### Swagger JSON 로드 실패
|
|
142
|
+
1. URL이 CORS를 허용하는지 확인하세요
|
|
143
|
+
2. JSON 형식이 올바른 Swagger/OpenAPI 형식인지 확인하세요
|
|
154
144
|
|
|
155
|
-
|
|
145
|
+
### Cursor 에서 MCP 설정시 에러 로그 발생
|
|
146
|
+
> 서버 실행에서 에러나는 경우
|
|
156
147
|
|
|
157
|
-
|
|
158
|
-
HTTP_HOST=127.0.0.1 HTTP_PORT=3100 pnpm run start:http
|
|
148
|
+
1. npx cache 삭제
|
|
159
149
|
```
|
|
160
|
-
|
|
161
|
-
접속 경로:
|
|
162
|
-
|
|
163
|
-
- `/dashboard`
|
|
164
|
-
- `/api/snapshots`
|
|
165
|
-
- `/api/snapshots/diff`
|
|
166
|
-
- `/api/snapshots/endpoint-detail`
|
|
167
|
-
|
|
168
|
-
MCP만 사용할 경우에는 `SNAPSHOT_WEB_ENABLED=false`를 권장합니다.
|
|
169
|
-
|
|
170
|
-
## 문제 해결
|
|
171
|
-
|
|
172
|
-
### MCP 서버가 뜨지 않는 경우
|
|
173
|
-
|
|
174
|
-
1. Node.js 버전이 `>= 20`인지 확인하세요.
|
|
175
|
-
2. `npx -y swagger-parser-mcp-server`가 로컬에서 실행되는지 확인하세요.
|
|
176
|
-
3. MCP 설정 파일 JSON 문법이 올바른지 확인하세요.
|
|
177
|
-
|
|
178
|
-
### DB 연결 실패
|
|
179
|
-
|
|
180
|
-
1. `DATABASE_URL`이 Postgres 연결 문자열인지 확인하세요.
|
|
181
|
-
2. MCP가 실행되는 환경에서 DB host/port로 접속 가능한지 확인하세요.
|
|
182
|
-
3. 계정 권한과 방화벽 정책을 확인하세요.
|
|
183
|
-
|
|
184
|
-
### Swagger 로드 실패
|
|
185
|
-
|
|
186
|
-
1. `SWAGGER_URL`이 MCP가 실행되는 환경에서 접근 가능한지 확인하세요.
|
|
187
|
-
2. 응답이 실제 JSON Swagger/OpenAPI 문서인지 확인하세요.
|
|
188
|
-
3. 사내망 URL이라면 MCP 실행 위치에서 해당 네트워크에 접근 가능한지 확인하세요.
|
|
189
|
-
|
|
190
|
-
### npx 실행 오류
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
npx clear-npx-cache
|
|
194
150
|
npm cache clean --force
|
|
195
151
|
```
|
|
152
|
+
2. IDE 종료후 재 실행
|
|
196
153
|
|
|
197
154
|
## 라이선스
|
|
198
155
|
|
|
199
156
|
MIT
|
|
157
|
+
|
|
158
|
+
## 기여하기
|
|
159
|
+
|
|
160
|
+
이슈와 PR은 언제나 환영합니다!
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
type StdioInput = Pick<NodeJS.ReadStream, 'once' | 'off'>;
|
|
3
|
-
export declare function attachStdioShutdownHooks(stdin: StdioInput, onClosed: () => void): () => void;
|
|
4
|
-
export declare function isDirectExecution(argv?: readonly string[]): boolean;
|
|
5
2
|
export {};
|
|
6
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|