문제 해결
설치 문제
swag2mcp: command not found
바이너리가 PATH에 없습니다.
# Go가 설치되어 있는지 확인
go version
# Go가 바이너리를 설치하는 위치 확인
go env GOPATH
# 일반적으로 ~/go 또는 ~/go/bin
# PATH에 추가 (~/.zshrc 또는 ~/.bashrc에 추가)
export PATH=$PATH:$(go env GOPATH)/bin
# 또는 전체 경로 사용
~/go/bin/swag2mcp --versionGitHub Releases에서 바이너리를 다운로드한 경우 PATH에 있는 디렉토리에 있는지 확인하세요:
# /usr/local/bin으로 이동 (macOS/Linux)
sudo mv swag2mcp /usr/local/bin/permission denied
바이너리에 실행 권한이 없습니다.
# go install의 경우 (소유권 수정)
sudo chown -R $(whoami) $(go env GOPATH)
# 다운로드한 바이너리의 경우
chmod +x /path/to/swag2mcpGo 버전이 너무 오래됨
swag2mcp는 Go 1.26+이 필요합니다.
go version
# 버전이 1.26 미만이면 Go 업데이트:
# https://go.dev/dl/모의 서버를 찾을 수 없음
모의 서버는 별도의 바이너리입니다. 명시적으로 설치하세요:
go install github.com/mmadfox/swag2mcp/cmd/swag2mcp-mock@latest설정 문제
설정 파일을 찾을 수 없음
swag2mcp가 swag2mcp.yaml을 찾을 수 없습니다.
# 새 설정 생성
swag2mcp init
# 또는 경로를 명시적으로 지정
swag2mcp mcp /path/to/workspace
swag2mcp ls /path/to/workspace일반적인 원인: 임의의 디렉토리에서 swag2mcp mcp를 실행하여 프로젝트의 워크스페이스 대신 ~/.swag2mcp/를 찾았습니다. 항상 경로를 명시적으로 전달하세요.
잘못된 워크스페이스가 로드됨
예상과 다른 워크스페이스가 로드되었습니다.
해결 순서: 명시적 [path] → 현재 디렉토리(./) → ~/.swag2mcp/. 경로 없이 swag2mcp mcp를 swag2mcp.yaml이 없는 디렉토리에서 실행하면 ~/.swag2mcp/로 폴백됩니다.
해결 방법: 항상 워크스페이스 경로를 전달하세요: swag2mcp mcp /path/to/your/workspace
YAML 파싱 오류
설정 파일에 잘못된 YAML 구문이 있습니다.
# 설정 검증
swag2mcp validate
# 일반적인 실수:
# - 공백 대신 탭 사용 (YAML은 공백 필요)
# - 중첩 필드의 들여쓰기 누락
# - 특수 문자가 있는 따옴표 없는 문자열 (: # & {)팁: YAML 린터 또는 YAML을 지원하는 편집기를 사용하여 구문 오류를 찾으세요.
검증 실패: "no specifications defined"
설정 파일이 존재하지만 spec이 없습니다.
# spec 추가
swag2mcp add spec
# 또는 swag2mcp.yaml을 편집하여 최소 하나의 spec 추가검증 실패: "duplicate domain"
두 spec이 동일한 domain 값을 가지고 있습니다. 도메인은 고유해야 합니다.
# 현재 spec 목록 보기
swag2mcp ls
# swag2mcp.yaml에서 중복 도메인 확인검증 실패: "invalid spec location"
location URL 또는 파일 경로에 접근할 수 없거나 유효한 spec 파일이 아닙니다.
# URL에 접근 가능한지 확인
curl -I https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml
# 로컬 파일이 존재하는지 확인
ls -la ./specs/my-api.yaml
# 파일이 유효한 OpenAPI/Swagger/Postman인지 확인
# (단순한 JSON이나 HTML 페이지가 아닌지)일반적인 원인: location 필드가 API 엔드포인트 자체(예: https://api.example.com/v1/users)를 가리키고 있습니다. 위치는 OpenAPI/Swagger/Postman 파일을 가리켜야 합니다.
MCP 서버 문제
포트가 이미 사용 중
다른 프로세스가 포트를 사용 중입니다.
# 프로세스 찾기
lsof -i :8080
# 종료
kill <PID>
# 또는 다른 포트 사용
swag2mcp mcp --transport sse --http-addr :9090연결 거부됨
MCP 서버가 실행 중이 아니거나 접근할 수 없습니다.
# 서버가 실행 중인지 확인
swag2mcp mcp --transport sse --http-addr 127.0.0.1:8080
# 다른 터미널에서 health 엔드포인트 확인
curl http://127.0.0.1:8080/health
# 커스텀 경로 사용 시
curl http://127.0.0.1:8080/custom-path/healthMCP 도구가 LLM 클라이언트에 표시되지 않음
LLM 클라이언트가 도구를 볼 수 없습니다.
# spec이 로드되었는지 확인
swag2mcp ls
# spec이 비활성화되지 않았는지 확인
swag2mcp validate
# 서버 로그 확인
swag2mcp mcp --logfile /tmp/swag2mcp.log
cat /tmp/swag2mcp.log
# IDE 설정의 워크스페이스 경로가 올바른지 확인
# (절대 경로여야 함)일반적인 원인:
- IDE 설정의 잘못된 워크스페이스 경로
- 모든 spec에
disable: true설정 --tags로 인해 spec이 필터링됨- 지정된 경로에 설정 파일이 없음
MCP 핸드셰이크 실패 (HTTP 전송)
SSE 및 Streamable HTTP 전송의 경우 MCP 프로토콜은 도구 호출 전에 초기화가 필요합니다.
1단계: POST /mcp → {"method":"initialize", ...}
2단계: POST /mcp → {"method":"notifications/initialized"}
3단계: POST /mcp → {"method":"tools/list", ...} ← 이제 작동LLM 클라이언트가 도구를 호출하기 전에 핸드셰이크를 완료하는지 확인하세요.
Health check가 404 반환
Health 엔드포인트 경로가 MCP 경로와 다를 수 있습니다.
# 기본 health 엔드포인트
curl http://127.0.0.1:8080/health
# MCP 경로를 변경해도 health는 여전히 /health에 있습니다
# (--http-path의 영향을 받지 않음)Auth 도구를 사용할 수 없음
auth MCP 도구가 표시되지 않습니다.
auth 도구는 기본적으로 비활성화되어 있습니다(--disable-llm-auth=true). 이는 프로덕션 보안을 위한 의도적인 설정입니다.
# auth 도구 활성화
swag2mcp mcp --disable-llm-auth=false인증 문제
401 Unauthorized
자격 증명이 없거나 유효하지 않아 API가 요청을 거부했습니다.
# 인증이 설정되었는지 확인
swag2mcp info
# 설정 검증
swag2mcp validate
# 환경 변수가 설정되었는지 확인
echo $MY_TOKEN
# 토큰이 만료되지 않았는지 확인 (bearer 토큰은 정적)일반적인 원인:
- 토큰이 없거나 비어 있음
- 환경 변수가 설정되지 않음
- 토큰이 만료됨 (bearer 토큰은 자동 갱신되지 않음)
- 잘못된 인증 유형 설정
403 Forbidden
권한이 부족하여 API가 요청을 거부했습니다.
- 토큰에 필요한 범위가 없을 수 있습니다
- API 키가 이 리소스에 접근 권한이 없을 수 있습니다
- 필요한 권한에 대한 API 문서를 확인하세요
OAuth2 토큰 엔드포인트에 연결할 수 없음
swag2mcp가 OAuth2 토큰 URL에 연결할 수 없습니다.
# 설정의 token_url 확인
# URL이 올바르고 접근 가능한지 확인
curl -X POST https://auth.example.com/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=test" \
-d "client_secret=test"
# 네트워크 연결 확인
# 회사 프록시 뒤에 있는 경우 프록시 설정 확인Digest 인증 실패
swag2mcp가 Digest 인증 핸드셰이크를 완료할 수 없습니다.
- 서버가 401 응답과 함께
WWW-Authenticate: Digest ...헤더를 반환해야 합니다 - 챌린지는 5분 동안 캐시됩니다 — 서버가 nonce를 변경하면 캐시가 만료될 때까지 기다리세요
- 사용자 이름과 비밀번호가 올바른지 확인하세요
HMAC 서명 불일치
API가 HMAC 서명된 요청을 거부했습니다.
api_key와secret_key가 올바른지 확인하세요- API가 Binance 스타일 HMAC-SHA256 서명을 사용하는지 확인하세요
- 일부 거래소는 다른 서명 방식을 사용합니다 — HMAC 인증은 Binance 호환 API 전용입니다
Script 인증 실패
외부 인증 스크립트가 실패했습니다.
# 스크립트가 존재하는지 확인
ls -la ~/.swag2mcp/auth_scripts/my-domain.sh
# 수동으로 스크립트 실행 테스트
sh ~/.swag2mcp/auth_scripts/my-domain.sh
# 스크립트 출력 형식 확인 (JSON이어야 함: {"token": "...", "expires_in": 3600})
# 스크립트가 30초 이내에 완료되는지 확인
# 스크립트에 실행 권한이 있는지 확인
chmod +x ~/.swag2mcp/auth_scripts/my-domain.sh검색 문제
검색 결과 없음
검색 결과가 없습니다.
# spec이 로드되었는지 확인
swag2mcp ls
# spec이 비활성화되지 않았는지 확인
swag2mcp validate
# 더 간단한 쿼리 시도
# method로 검색: method:GET
# tag로 검색: tag:pets
# 인덱스는 MCP 서버 시작 시마다 재구축됩니다
# 방금 spec을 추가했다면 서버를 다시 시작하세요검색 결과가 관련 없음
쿼리가 너무 광범위하거나 모호합니다.
- 필드 필터를 사용하여 좁히기:
method:GET +tag:pets - 정확한 구문 사용:
"find pet by status" limit매개변수를 사용하여 더 집중된 결과 얻기
API 호출 문제
invoke가 오류 반환
API 호출이 실패했습니다.
# 오류 메시지 확인 — HTTP 상태 코드 포함
# 4xx 오류: 매개변수, 인증 또는 권한 확인
# 5xx 오류: API 서버에 문제가 있음
# 호출 전에 항상 엔드포인트 검사
inspect(endpointId: "...")
# 모든 필수 매개변수가 제공되었는지 확인
# 매개변수 유형 확인 (문자열, 숫자, 부울)속도 제한 오류
LLM이 동일한 엔드포인트를 너무 빨리 호출했습니다.
각 엔드포인트에는 10초의 쿨다운이 있습니다. 다시 호출하기 전에 기다리거나 속도 제한기를 비활성화하세요:
disable_ratelimiter: true응답이 너무 큼 (fileRef 반환)
응답이 max_response_size를 초과했습니다.
정상적인 현상입니다. 응답 도구를 사용하여 데이터를 탐색하세요:
1. response_outline(path) → 구조 이해
2. response_compress(path, mode: "first_of_array") → 샘플 얻기
3. response_slice(path, jsonPath: "data.0") → 특정 데이터 얻기또는 제한을 늘리세요:
http_client:
max_response_size: 4194304 # 4 MB느린 API 응답
API 응답 시간이 너무 깁니다.
http_client:
timeout: 120s # 기본 30s에서 증가워크스페이스 문제
swag2mcp init 실패: "directory is not empty"
대상 디렉토리에 이미 파일이 있습니다.
# --force를 사용하여 덮어쓰기
swag2mcp init --force
# 또는 다른 디렉토리 사용
swag2mcp init ./new-workspaceswag2mcp update 실패
하나 이상의 spec 파일을 다운로드할 수 없습니다.
# 어떤 URL이 실패했는지 오류 메시지 확인
# URL에 접근 가능한지 확인
curl -I <failed-url>
# 네트워크 연결 확인
# 프록시 설정 확인내보내기에서 ZIP이 생성되지 않음
[output] 인수는 디렉토리가 아닌 .zip으로 끝나는 파일 경로여야 합니다.
# 올바름
swag2mcp export /path/to/workspace /path/to/backup.zip
# 잘못됨 (ZIP이 생성되지 않음)
swag2mcp export /path/to/workspace /some/directory가져오기 실패: "not a valid swag2mcp backup"
ZIP 파일이 swag2mcp export로 생성되지 않았습니다.
swag2mcp export로 생성된 ZIP 아카이브만 가져올 수 있습니다. 아카이브에는 특정 내부 구조(swag2mcp.yaml, specs/, auth_scripts/)가 있습니다.
TUI 문제
TUI가 올바르게 렌더링되지 않음
터미널이 너무 작거나 필요한 기능을 지원하지 않습니다.
- 최소 터미널 크기: 80×24 문자
- TUI는 Bubbletea를 사용하며 대부분의 최신 터미널에서 작동합니다
- 터미널 창 크기를 조정해 보세요
- 다른 터미널 에뮬레이터를 시도해 보세요
- Windows PowerShell 5.1: TUI가 입력 필드를 새 줄에 표시할 수 있습니다. Windows Terminal 또는 VS Code 터미널을 사용하세요 — raw 모드를 올바르게 처리합니다.
TUI에 "no specs found" 표시
워크스페이스에 설정된 spec이 없습니다.
# spec 확인
swag2mcp ls
# spec 추가
swag2mcp add spec모의 서버 문제
모의 서버가 시작되지 않음
# 설정에 mock_enabled: true가 있는지 확인
# 모든 collection에 base_mock_url이 설정되어 있는지 확인
# 포트가 사용 중이 아닌지 확인
lsof -i :9090
# 모의 서버 로그 확인
swag2mcp-mock모의 서버가 빈 응답 반환
명세 파일에 응답 스키마가 정의되지 않았을 수 있습니다.
- 모의 서버는 응답 스키마에서 데이터를 생성합니다
- 스키마가 없으면
{}를 반환합니다 - OpenAPI 명세에
responses와schema가 정의되어 있는지 확인하세요
네트워크 문제
프록시 연결 실패
swag2mcp가 설정된 프록시를 통해 연결할 수 없습니다.
# 프록시 URL 형식 확인 (스키마 포함: http://, https://, socks5://)
# 프록시 자격 증명 확인
# 바이패스 목록 확인 — 대상이 바이패스 목록에 있을 수 있음
# curl로 프록시 테스트
curl -x http://proxy.company.com:8080 https://api.example.comTLS/SSL 오류
인증서 검증에 실패했습니다.
- MCP 서버에 자체 서명 인증서를 사용하는 경우 클라이언트가 이를 신뢰해야 합니다
--tls와 함께 모의 서버를 사용하면 자체 서명 인증서가 자동으로 생성됩니다- API 호출의 경우 swag2mcp는 시스템의 인증서 저장소를 사용합니다
기타 문제
높은 디스크 사용량
캐시 및 응답 디렉토리가 시간이 지남에 따라 커질 수 있습니다.
# 모든 항목 정리
swag2mcp clean
# 오래된 응답(48시간 초과)은 MCP 서버 시작 시 자동으로 정리됩니다
# 캐시 파일은 1-48시간 사이에 무작위로 만료됩니다"command not found" after go install
go install 디렉토리가 PATH에 없습니다.
# Go가 바이너리를 설치하는 위치 확인
go env GOPATH
# PATH에 추가
export PATH=$PATH:$(go env GOPATH)/binLLM이 도구를 올바르게 사용하지 않음
LLM에 더 나은 지침이나 포맷팅 스킬이 필요할 수 있습니다.
- spec 설정에서
llm_instruction을 사용하여 API가 무엇을 하는지 설명하세요 - 일관된 출력 포맷팅을 위해 swag2mcp-format 스킬을 고려하세요
- LLM 응답의 품질은 모델과 받는 지침에 따라 달라집니다
버그를 어떻게 신고하나요?
GitHub에 이슈를 열고 다음 정보를 포함하세요:
- swag2mcp 버전 (
swag2mcp --version) - 운영 체제 및 아키텍처
- 실행한 정확한 명령어
- 전체 오류 메시지
- 설정 파일 (시크릿 제거)