swagger-parser-mcp-server 2.3.3 → 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.
Files changed (127) hide show
  1. package/README.md +81 -120
  2. package/dist/index.d.ts +0 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +266 -102
  5. package/dist/index.js.map +1 -1
  6. package/dist/schemas.d.ts +2 -283
  7. package/dist/schemas.d.ts.map +1 -1
  8. package/dist/schemas.js +0 -108
  9. package/dist/schemas.js.map +1 -1
  10. package/dist/utils/swaggerCache.d.ts +0 -4
  11. package/dist/utils/swaggerCache.d.ts.map +1 -1
  12. package/dist/utils/swaggerCache.js +0 -8
  13. package/dist/utils/swaggerCache.js.map +1 -1
  14. package/package.json +3 -11
  15. package/dist/application/snapshot/createSnapshotRuntime.d.ts +0 -2
  16. package/dist/application/snapshot/createSnapshotRuntime.d.ts.map +0 -1
  17. package/dist/application/snapshot/createSnapshotRuntime.js +0 -2
  18. package/dist/application/snapshot/createSnapshotRuntime.js.map +0 -1
  19. package/dist/application/snapshot/snapshotCaptureService.d.ts +0 -90
  20. package/dist/application/snapshot/snapshotCaptureService.d.ts.map +0 -1
  21. package/dist/application/snapshot/snapshotCaptureService.js +0 -394
  22. package/dist/application/snapshot/snapshotCaptureService.js.map +0 -1
  23. package/dist/application/snapshot/snapshotRepository.d.ts +0 -77
  24. package/dist/application/snapshot/snapshotRepository.d.ts.map +0 -1
  25. package/dist/application/snapshot/snapshotRepository.js +0 -2
  26. package/dist/application/snapshot/snapshotRepository.js.map +0 -1
  27. package/dist/domain/canonical/canonicalSnapshot.d.ts +0 -61
  28. package/dist/domain/canonical/canonicalSnapshot.d.ts.map +0 -1
  29. package/dist/domain/canonical/canonicalSnapshot.js +0 -300
  30. package/dist/domain/canonical/canonicalSnapshot.js.map +0 -1
  31. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts +0 -21
  32. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts.map +0 -1
  33. package/dist/domain/contracts/runtimeEnvironmentContract.js +0 -50
  34. package/dist/domain/contracts/runtimeEnvironmentContract.js.map +0 -1
  35. package/dist/domain/contracts/snapshotDiffContract.d.ts +0 -270
  36. package/dist/domain/contracts/snapshotDiffContract.d.ts.map +0 -1
  37. package/dist/domain/contracts/snapshotDiffContract.js +0 -99
  38. package/dist/domain/contracts/snapshotDiffContract.js.map +0 -1
  39. package/dist/domain/diff/endpointDiffClassifier.d.ts +0 -78
  40. package/dist/domain/diff/endpointDiffClassifier.d.ts.map +0 -1
  41. package/dist/domain/diff/endpointDiffClassifier.js +0 -317
  42. package/dist/domain/diff/endpointDiffClassifier.js.map +0 -1
  43. package/dist/http.d.ts +0 -3
  44. package/dist/http.d.ts.map +0 -1
  45. package/dist/http.js +0 -52
  46. package/dist/http.js.map +0 -1
  47. package/dist/infrastructure/postgres/migrationRunner.d.ts +0 -14
  48. package/dist/infrastructure/postgres/migrationRunner.d.ts.map +0 -1
  49. package/dist/infrastructure/postgres/migrationRunner.js +0 -161
  50. package/dist/infrastructure/postgres/migrationRunner.js.map +0 -1
  51. package/dist/infrastructure/postgres/migrations/001_snapshot_schema.sql +0 -29
  52. package/dist/infrastructure/postgres/migrations/002_snapshot_change_history.sql +0 -32
  53. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts +0 -25
  54. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts.map +0 -1
  55. package/dist/infrastructure/postgres/postgresSnapshotRepository.js +0 -323
  56. package/dist/infrastructure/postgres/postgresSnapshotRepository.js.map +0 -1
  57. package/dist/infrastructure/postgres/runMigrations.d.ts +0 -3
  58. package/dist/infrastructure/postgres/runMigrations.d.ts.map +0 -1
  59. package/dist/infrastructure/postgres/runMigrations.js +0 -33
  60. package/dist/infrastructure/postgres/runMigrations.js.map +0 -1
  61. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts +0 -17
  62. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts.map +0 -1
  63. package/dist/infrastructure/runtime/createSnapshotRuntime.js +0 -38
  64. package/dist/infrastructure/runtime/createSnapshotRuntime.js.map +0 -1
  65. package/dist/tests/canonicalSnapshot.test.d.ts +0 -2
  66. package/dist/tests/canonicalSnapshot.test.d.ts.map +0 -1
  67. package/dist/tests/canonicalSnapshot.test.js +0 -425
  68. package/dist/tests/canonicalSnapshot.test.js.map +0 -1
  69. package/dist/tests/endpointDiffClassifier.test.d.ts +0 -2
  70. package/dist/tests/endpointDiffClassifier.test.d.ts.map +0 -1
  71. package/dist/tests/endpointDiffClassifier.test.js +0 -633
  72. package/dist/tests/endpointDiffClassifier.test.js.map +0 -1
  73. package/dist/tests/httpSnapshotTransport.test.d.ts +0 -2
  74. package/dist/tests/httpSnapshotTransport.test.d.ts.map +0 -1
  75. package/dist/tests/httpSnapshotTransport.test.js +0 -356
  76. package/dist/tests/httpSnapshotTransport.test.js.map +0 -1
  77. package/dist/tests/indexLifecycle.test.d.ts +0 -2
  78. package/dist/tests/indexLifecycle.test.d.ts.map +0 -1
  79. package/dist/tests/indexLifecycle.test.js +0 -44
  80. package/dist/tests/indexLifecycle.test.js.map +0 -1
  81. package/dist/tests/mcpSnapshotTools.test.d.ts +0 -2
  82. package/dist/tests/mcpSnapshotTools.test.d.ts.map +0 -1
  83. package/dist/tests/mcpSnapshotTools.test.js +0 -316
  84. package/dist/tests/mcpSnapshotTools.test.js.map +0 -1
  85. package/dist/tests/postgresMigrationSmoke.test.d.ts +0 -2
  86. package/dist/tests/postgresMigrationSmoke.test.d.ts.map +0 -1
  87. package/dist/tests/postgresMigrationSmoke.test.js +0 -187
  88. package/dist/tests/postgresMigrationSmoke.test.js.map +0 -1
  89. package/dist/tests/realPostgresTestSchema.d.ts +0 -10
  90. package/dist/tests/realPostgresTestSchema.d.ts.map +0 -1
  91. package/dist/tests/realPostgresTestSchema.js +0 -73
  92. package/dist/tests/realPostgresTestSchema.js.map +0 -1
  93. package/dist/tests/snapshotCapturePipeline.test.d.ts +0 -2
  94. package/dist/tests/snapshotCapturePipeline.test.d.ts.map +0 -1
  95. package/dist/tests/snapshotCapturePipeline.test.js +0 -475
  96. package/dist/tests/snapshotCapturePipeline.test.js.map +0 -1
  97. package/dist/tests/snapshotDiffContract.test.d.ts +0 -2
  98. package/dist/tests/snapshotDiffContract.test.d.ts.map +0 -1
  99. package/dist/tests/snapshotDiffContract.test.js +0 -156
  100. package/dist/tests/snapshotDiffContract.test.js.map +0 -1
  101. package/dist/tests/snapshotPersistence.real.test.d.ts +0 -2
  102. package/dist/tests/snapshotPersistence.real.test.d.ts.map +0 -1
  103. package/dist/tests/snapshotPersistence.real.test.js +0 -310
  104. package/dist/tests/snapshotPersistence.real.test.js.map +0 -1
  105. package/dist/tests/webServerRuntime.test.d.ts +0 -2
  106. package/dist/tests/webServerRuntime.test.d.ts.map +0 -1
  107. package/dist/tests/webServerRuntime.test.js +0 -123
  108. package/dist/tests/webServerRuntime.test.js.map +0 -1
  109. package/dist/transport/createSnapshotToolRuntime.d.ts +0 -7
  110. package/dist/transport/createSnapshotToolRuntime.d.ts.map +0 -1
  111. package/dist/transport/createSnapshotToolRuntime.js +0 -40
  112. package/dist/transport/createSnapshotToolRuntime.js.map +0 -1
  113. package/dist/transport/httpSnapshotServer.d.ts +0 -11
  114. package/dist/transport/httpSnapshotServer.d.ts.map +0 -1
  115. package/dist/transport/httpSnapshotServer.js +0 -216
  116. package/dist/transport/httpSnapshotServer.js.map +0 -1
  117. package/dist/transport/mcpToolRouter.d.ts +0 -81
  118. package/dist/transport/mcpToolRouter.d.ts.map +0 -1
  119. package/dist/transport/mcpToolRouter.js +0 -416
  120. package/dist/transport/mcpToolRouter.js.map +0 -1
  121. package/dist/transport/webServerRuntime.d.ts +0 -17
  122. package/dist/transport/webServerRuntime.d.ts.map +0 -1
  123. package/dist/transport/webServerRuntime.js +0 -73
  124. package/dist/transport/webServerRuntime.js.map +0 -1
  125. package/dist/web/dashboard.css +0 -411
  126. package/dist/web/dashboard.html +0 -141
  127. 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 파일을 파싱하고, snapshot 캡처 diff 조회까지 지원하는 MCP 서버입니다.
3
+ Swagger/OpenAPI JSON 파일을 파싱하여 API 정보를 분석하는 MCP 서버입니다.
4
4
 
5
- MCP 클라이언트에서 API 문서 분석과 변경 추적을 함께 사용할 수 있습니다.
5
+ Claude와 함께 사용하여 API 문서를 쉽게 분석하고 이해할 수 있습니다.
6
6
 
7
7
  ## 주요 기능
8
8
 
9
- - Swagger/OpenAPI JSON 로드
10
- - 컨트롤러(태그) 목록 조회
11
- - 컨트롤러별 path 목록 조회
12
- - path별 parameters, request body, response schema 조회
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
- 권장 방식은 `npx`로 MCP를 등록하는 것입니다. 로컬에 저장소를 clone해서 `node dist/index.js`를 직접 실행할 필요는 없습니다.
16
+ ### 방법 1: npx 등록 (권장)
22
17
 
23
- MCP 설정 파일(`mcp.json`, Claude Desktop 설정 등)에 아래와 같이 등록합니다.
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", "swagger-parser-mcp-server"],
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-team": {
48
- "command": "npx",
49
- "args": ["-y", "swagger-parser-mcp-server"],
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
- - README나 저장소에는 실제 DB 주소, 계정, 비밀번호를 커밋하지 마세요.
64
- - 실제 값은 각자 로컬 MCP 설정 파일이나 사내 비밀 관리 수단에만 넣어야 합니다.
65
- - snapshot/diff는 현재 설정된 `PROJECT_KEY` + `SWAGGER_URL` source에 고정됩니다.
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
- - `SNAPSHOT_WEB_ENABLED`: `false`면 MCP stdio 실행 시 내장 HTTP 서버를 비활성화합니다. MCP 전용이면 `false` 권장
79
- - `HTTP_HOST`: HTTP 서버 바인딩 주소. 기본값 `0.0.0.0`
80
- - `HTTP_PORT`: HTTP 서버 포트. 기본값 `3100`
71
+ ### 3. Claude 재시작
81
72
 
82
- ## Snapshot / Diff 사용 순서
73
+ 설정을 저장한 후 Claude Desktop/Cursor/Claude Code를 재시작합니다.
83
74
 
84
- snapshot 관련 툴은 환경 변수에 고정된 source를 기준으로 동작합니다.
75
+ ## 사용 예시
85
76
 
86
- 1. `capture_snapshot`
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
- HTTP 서버만 실행:
113
+ ## 테스트
128
114
 
129
115
  ```bash
130
- pnpm run dev:http
116
+ pnpm run test
131
117
  ```
132
118
 
133
- Postgres migration 실행:
119
+ ## 지원하는 OpenAPI 버전
134
120
 
135
- ```bash
136
- DATABASE_URL=postgresql://<user>:<pass>@<host>:5432/<db> pnpm run migrate
137
- ```
121
+ - ✅ Swagger 2.0
122
+ - OpenAPI 3.0.x
138
123
 
139
- ## 테스트
124
+ ## 문제 해결
140
125
 
141
- 메모리 DB 기반 회귀 테스트:
126
+ ### "MCP 서버를 찾을 수 없습니다" 오류
127
+ 1. 설정 파일의 경로가 올바른지 확인하세요
128
+ 2. Node.js가 설치되어 있는지 확인하세요 (`node --version`)
129
+ 3. 프로젝트가 빌드되었는지 확인하세요 (`pnpm run build`)
142
130
 
131
+ ### 패키지 실행 오류
143
132
  ```bash
144
- pnpm run test:db:mem
145
- ```
146
-
147
- 실 Postgres 영속성 테스트:
133
+ # npx 캐시 클리어
134
+ npx clear-npx-cache
148
135
 
149
- ```bash
150
- TEST_DATABASE_URL=postgresql://<user>:<pass>@<host>:5432/<db> pnpm run test:db:real
136
+ # 패키지 재설치
137
+ npm uninstall swagger-parser-mcp-server
138
+ npm install swagger-parser-mcp-server
151
139
  ```
152
140
 
153
- ## 선택 사항: Read-only Dashboard
141
+ ### Swagger JSON 로드 실패
142
+ 1. URL이 CORS를 허용하는지 확인하세요
143
+ 2. JSON 형식이 올바른 Swagger/OpenAPI 형식인지 확인하세요
154
144
 
155
- snapshot 이력과 diff를 브라우저에서 확인하려면 HTTP 서버를 사용할 수 있습니다.
145
+ ### Cursor 에서 MCP 설정시 에러 로그 발생
146
+ > 서버 실행에서 에러나는 경우
156
147
 
157
- ```bash
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AASA,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAiB5F;AA2ED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAQjF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}