Skip to content

Specs

Spec은 API 도메인 또는 서비스를 나타내는 논리적 컨테이너입니다(예: YouTube, Binance, Open-Meteo). 각 spec은 고유한 domain, base_url, 선택적 auth를 가지며 하나 이상의 collection을 포함합니다.

Collections는 OpenAPI/Swagger/Postman 파일을 가리킵니다 — spec 자체는 파일이 아니라 이를 둘러싼 그룹입니다.

Domain — 이름 규칙

domain은 spec의 고유 식별자입니다. 시스템 전체에서 기본 키로 사용됩니다.

규칙제약
문자a-z, 0-9, _, -만 허용
길이1–60자
고유성중복 불가 — 두 개의 활성 spec이 동일한 domain을 공유할 수 없음

유효한 예: meteo, binance, github-api, my_service, openai-v1

유효하지 않은 예: Meteo(대문자), my api(공백), my.api(점), a-very-long-domain-name-that-exceeds-sixty-characters(너무 김)

Spec 필드

필드YAML 키필수설명
Domaindomain고유 API 식별자 (1–60자, a-z0-9_-)
LLM Titlellm_titleLLM이 이 API를 참조할 때 사용하는 사람이 읽을 수 있는 이름 (5–120자)
LLM Instructionllm_instructionswag2mcp 시스템 프롬프트에 주입되는 짧은 힌트 (최대 500자)
Base URLbase_url모든 API 요청의 기본 URL (유효한 URL)
Disabledisable로딩 및 인덱싱 중 이 spec 건너뛰기
Tagstags필터링용 태그 (예: ["public", "demo"])
Authauth인증 설정
HTTP Clienthttp_clientSpec별 HTTP 설정 (헤더, 쿠키)
Collectionscollections1–30개 collection 목록

검증

swag2mcp가 설정을 검증할 때 모든 spec에 대해 다음 규칙이 확인됩니다:

확인규칙
중복 도메인두 개의 활성 spec이 동일한 domain을 공유할 수 없음
도메인 형식^[a-z0-9_-]{1,60}$와 일치해야 함
LLM Title필수, 5–120자, 문자/숫자/공백/기본 구두점
LLM Instruction최대 500자, title과 동일한 문자 세트
Base URL필수, 유효한 URL이어야 함
Collections필수, 1–30개 항목
Auth인증 유형별로 검증 (예: bearer는 token 필요, basic은 username + password 필요)
Location각 collection의 location은 유효한 URL 또는 파일 경로여야 함 (5–250자)

검증은 모든 swag2mcp mcp 시작 시 실행됩니다. 실패하면 MCP 서버가 시작되지 않습니다 — 일부 IDE에서는 서버가 연결되지 않고 LLM이 수정해야 할 사항을 설명하는 명확한 오류 메시지를 받게 됩니다.

서버를 시작하기 전에 문제를 진단하려면 validate 명령어를 사용하세요:

bash
# 기본 워크스페이스 검증 (~/.swag2mcp)
swag2mcp validate

# 커스텀 프로젝트 워크스페이스 검증
swag2mcp validate ./my-project

LLM Instruction

각 spec에 llm_instruction을 설정하는 것이 좋습니다 — 이 API의 용도와 사용 시기를 LLM에 알려주는 짧은 힌트(최대 500자)입니다. 이 지침은 swag2mcp 시스템 프롬프트에 주입되어 LLM이 추가 컨텍스트 없이 spec의 목적을 이해하는 데 도움을 줍니다.

yaml
specs:
  - domain: jokes
    llm_title: Dad Joke API
    llm_instruction: "이 API를 사용하여 무작위 아재개그를 얻거나 키워드로 특정 농담을 검색하세요."
    base_url: https://icanhazdadjoke.com
    collections:
      - llm_title: Jokes
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml

Collection은 더 구체적인 지침을 위해 자체 llm_instruction(최대 360자)를 가질 수도 있습니다.

Auth

인증은 spec 수준에서 설정되며 모든 collection에 적용됩니다. swag2mcp는 9가지 인증 방법을 지원합니다:

방법YAML 타입주요 필드
Nonenone
Basicbasicusername, password
Bearerbearertoken
Digestdigestusername, password
OAuth2 Client Credentialsoauth2-ccclient_id, client_secret, token_url
OAuth2 Passwordoauth2-pwdusername, password, client_id, token_url
API Keyapi-keykey, value, in (header 또는 query)
HMAChmacapi_key, secret_key
Scriptscriptdomain

각 방법에 대한 자세한 내용은 인증 개요를 참조하세요.

HTTP Client

spec 수준에서 HTTP 설정을 재정의할 수 있습니다. 이는 이 spec의 collection이 만드는 모든 요청에 적용됩니다.

yaml
specs:
  - domain: slow-api
    llm_title: Slow API
    base_url: https://slow-api.example.com
    http_client:
      headers:
        X-API-Version: "2"
      cookies:
        - name: session
          value: abc123
    collections:
      - llm_title: Default
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml

설정은 전역 → spec → collection 순으로 계단식으로 적용됩니다. 자세한 내용은 설정 계단식을 참조하세요.

Tags

태그를 사용하면 카테고리별로 spec을 필터링할 수 있습니다. swag2mcp ls 또는 부트스트랩 중에 --tags 플래그와 함께 사용하세요.

yaml
specs:
  - domain: meteo
    llm_title: Open-Meteo Weather APIs
    base_url: https://api.open-meteo.com
    tags: ["weather", "public"]
    collections:
      - llm_title: Forecast
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/meteo/forecast.yml
bash
# "weather" 태그가 있는 spec만 나열
swag2mcp ls --tags weather

Disable

disable: true로 설정하면 spec을 완전히 건너뜁니다. 로드, 인덱싱되지 않으며 LLM이 사용할 수 없습니다.

yaml
specs:
  - domain: old-api
    llm_title: Old API (Deprecated)
    base_url: https://old-api.example.com
    disable: true
    collections:
      - llm_title: Default
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml

예시

최소 Spec

yaml
specs:
  - domain: dadjokes
    llm_title: Dad Joke API
    base_url: https://icanhazdadjoke.com
    collections:
      - llm_title: Jokes
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml

인증이 있는 Spec

yaml
specs:
  - domain: binance
    llm_title: Binance Market Data API
    base_url: https://api.binance.com
    auth:
      type: hmac
      config:
        api_key: $(BINANCE_API_KEY)
        secret_key: $(BINANCE_SECRET_KEY)
    collections:
      - llm_title: Market Data
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/binance.yaml

여러 Collection이 있는 Spec

yaml
specs:
  - domain: meteo
    llm_title: Open-Meteo Weather APIs
    base_url: https://api.open-meteo.com
    collections:
      - llm_title: Forecast
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/meteo/forecast.yml
      - llm_title: Air Quality
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/meteo/air-quality.yml
      - llm_title: Marine
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/meteo/marine.yml

LLM Instruction과 Tags가 있는 Spec

yaml
specs:
  - domain: rickandmorty
    llm_title: Rick and Morty API
    llm_instruction: "이 API를 사용하여 Rick and Morty 쇼의 캐릭터, 에피소드, 위치 정보를 가져오세요."
    base_url: https://rickandmortyapi.com/api
    tags: ["entertainment", "public"]
    collections:
      - llm_title: Characters
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/rick-and-morty.json

관련 항목