Skip to main content
Glama
psh4607

Swagger MCP (Multi-API Edition)

by psh4607
README.md
# Swagger MCP (Multi-API Edition)

**[English](./README.en.md)** | 한국어

---

AI가 Swagger/OpenAPI 문서를 이해하고 활용할 수 있도록 도와주는 MCP 서버입니다.

> 이 버전은 [Vizioz/Swagger-MCP](https://github.com/Vizioz/Swagger-MCP)를 포크하여 **다중 API 지원** 기능을 추가한 커스텀 버전입니다.

## 주요 기능

- **다중 API 지원**: `apis.yaml` 설정 파일로 여러 API를 단일 MCP 서버에서 관리
- **API 목록 조회**: `listApis` 도구로 설정된 모든 API 확인
- **엔드포인트 조회**: 특정 API의 모든 엔드포인트 목록 조회
- **모델 조회**: 특정 엔드포인트에서 사용하는 모델 정보 조회
- **TypeScript 코드 생성**: 모델 및 MCP 도구 정의 코드 자동 생성
- **캐싱**: Swagger 정의를 로컬에 캐싱하여 빠른 조회

## 빠른 시작

### 1. Docker로 실행 (권장)

```bash
# 이미지 빌드
docker build -t swagger-mcp-multi:latest .

# 테스트 실행
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listApis","arguments":{}}}' | \
  docker run -i --rm swagger-mcp-multi:latest
```

### 2. API 설정 파일 생성

**프로젝트의 `.cursor/` 폴더**에 `apis.yaml` 파일을 생성합니다.

`apis.yaml.example`을 참고하여 작성하세요:

```yaml
# .cursor/apis.yaml
apis:
  - name: petstore
    description: Petstore API (Example)
    url: https://petstore.swagger.io/v2/swagger.json

  - name: my-api
    description: My API Description
    url: https://my-api.example.com/v3/api-docs
```

> **중요**: `apis.yaml`은 API URL 등 민감한 정보를 포함할 수 있으므로, 프로젝트의 `.gitignore`에 추가하는 것을 권장합니다.

### 3. Cursor MCP 설정

프로젝트의 `.cursor/mcp.json` 파일에 추가:

```json
{
  "mcpServers": {
    "api-docs": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/path/to/your/project/.cursor/apis.yaml:/app/apis.yaml:ro",
        "swagger-mcp-multi:latest"
      ]
    }
  }
}
```

> **중요**: `/path/to/your/project/.cursor/apis.yaml` 경로를 실제 프로젝트 경로로 변경하세요.

### 4. 추가 API 설정 (선택)

`apis.yaml` 파일에 API를 추가/수정:

```yaml
apis:
  - name: api-1
    description: API
    url: https://~~~

  - name: api-2
    description: Core API
    url: https://api.~~~~

  # 새 API 추가
  - name: new-api
    description: 새로운 API 설명
    url: https://new-api.example.com/v3/api-docs
```

## 사용 가능한 도구

### listApis

설정된 모든 API 목록을 조회합니다.

```
입력: 없음
출력: API 이름, 설명, URL 목록
```

### listEndpoints

특정 API의 모든 엔드포인트를 조회합니다.

```
입력:
  - apiName: API 이름 (예: "oi-api")
출력: 엔드포인트 경로, HTTP 메서드, 설명 목록
```

### listEndpointModels

특정 엔드포인트에서 사용하는 모델을 조회합니다.

```
입력:
  - apiName: API 이름
  - path: 엔드포인트 경로 (예: "/users")
  - method: HTTP 메서드 (예: "GET")
출력: 모델 이름, 스키마 정보
```

### generateModelCode

모델의 TypeScript 인터페이스 코드를 생성합니다.

```
입력:
  - apiName: API 이름
  - modelName: 모델 이름
출력: TypeScript 인터페이스 코드
```

### generateEndpointToolCode

엔드포인트를 위한 MCP 도구 정의 코드를 생성합니다.

```
입력:
  - apiName: API 이름
  - path: 엔드포인트 경로
  - method: HTTP 메서드
출력: MCP 도구 정의 TypeScript 코드
```

### version

MCP 서버 버전을 반환합니다.

## 사용 예시

### AI에게 API 정보 요청하기

```
"OI API의 엔드포인트 목록을 보여줘"
→ AI가 listApis로 API 확인 후 listEndpoints(apiName: "oi-api") 호출

"dalpha-api의 /users GET 엔드포인트에서 사용하는 모델 알려줘"
→ AI가 listEndpointModels(apiName: "dalpha-api", path: "/users", method: "GET") 호출

"User 모델의 TypeScript 인터페이스 생성해줘"
→ AI가 generateModelCode(apiName: "oi-api", modelName: "User") 호출
```

## 로컬 개발

### 요구사항

- Node.js v20 이상
- npm 또는 pnpm

### 설치 및 빌드

```bash
# 의존성 설치
npm install

# TypeScript 빌드
npm run build

# 로컬 실행
node build/index.js
```

### Docker Compose

```bash
# 서비스 시작
docker-compose up -d

# 로그 확인
docker-compose logs -f
```

## 파일 구조

```
swagger-mcp/                    # MCP 서버 (Git 저장소)
├── apis.yaml.example          # API 설정 예시 파일
├── Dockerfile
├── docker-compose.yml
├── package.json
├── tsconfig.json
└── src/
    ├── index.ts               # MCP 서버 진입점
    ├── tools/                 # MCP 도구 정의
    │   ├── listApis.ts        # [신규] API 목록 조회
    │   ├── listEndpoints.ts
    │   ├── listEndpointModels.ts
    │   ├── generateModelCode.ts
    │   └── generateEndpointToolCode.ts
    ├── services/              # 비즈니스 로직
    └── utils/
        ├── apiConfigLoader.ts # [신규] API 설정 로더
        ├── swaggerLoader.ts   # Swagger 로더 (다중 API 지원)
        └── logger.ts

your-project/                   # 사용하는 프로젝트
└── .cursor/
    ├── apis.yaml              # API 설정 파일 (여기에 생성!)
    └── mcp.json               # MCP 서버 설정
```

## 기존 버전과의 차이점

| 기능      | 기존 버전       | Multi-API Edition  |
| --------- | --------------- | ------------------ |
| API 개수  | 1개 (CLI 인자)  | 무제한 (설정 파일) |
| API 추가  | MCP 서버 재등록 | apis.yaml 수정만   |
| API 선택  | 불가            | `apiName` 파라미터 |
| 설정 방식 | CLI 인자        | YAML 설정 파일     |

## 라이선스

MIT License - 원본 프로젝트: [Vizioz/Swagger-MCP](https://github.com/Vizioz/Swagger-MCP)

Maintenance

ActivitySlowing
ResponsivenessNo issues