sayren Docs

설치 없이 MCP 연결하기

원격 MCP 주소와 Sayren 계정 로그인만으로 AI 도구를 상점에 연결하기

sayren 원격 MCP는 https://mcp.sayren.app/mcp 주소 하나로 연결합니다. Node.js나 패키지를 설치하지 않아도 되고, 도구 버전은 sayren이 최신으로 유지합니다. 상점 조회·관리와 스토어프론트 호스팅 사이트의 편집·발행·되돌리기·공개 전환에 씁니다.

내 컴퓨터에서 쇼핑몰 화면을 만들고 검사하는 도구(get_scaffold_plan·verify_storefront)는 원격 MCP에 없습니다. 화면을 직접 만들 때는 MCP 연결하기의 로컬 연결을 씁니다. 템플릿 원본을 읽는 도구(list_template_files·get_template_file)는 두 연결에 모두 있습니다. 반대로 호스팅 사이트의 파일을 고치는 도구(read_file·write_files 등)는 원격 MCP에만 있습니다. 두 연결을 함께 등록해도 됩니다.

1. 도구에 연결

상점 플랫폼의 개발자 › 개요 › 연결 정보 › 원격 MCP나 개발자 › 스토어프론트 만들기 › 1. 원격 MCP 연결에서 도구별 설정을 복사할 수 있습니다. 설정에는 토큰이 없고 주소와 상점 id만 들어 있습니다. 처음 연결할 때 Sayren 계정 로그인과 권한 허용 화면이 뜹니다.

Claude Code

claude mcp add --transport http sayren https://mcp.sayren.app/mcp \
  --header "X-Store-Id: store_abc123"

모든 프로젝트에서 쓰려면 --scope user를 붙입니다.

Cursor

.cursor/mcp.json(이 프로젝트) 또는 ~/.cursor/mcp.json(모든 프로젝트)에 넣습니다.

{
  "mcpServers": {
    "sayren": {
      "url": "https://mcp.sayren.app/mcp",
      "headers": { "X-Store-Id": "store_abc123" }
    }
  }
}

npx sayren pull이 만드는 .mcp.json도 같은 모양입니다("type": "http").

그 밖의 도구

Streamable HTTP 방식의 원격 MCP 서버를 등록할 수 있는 도구라면 연결됩니다. 주소는 https://mcp.sayren.app/mcp입니다.

2. Sayren 계정으로 로그인

OAuth를 지원하는 도구는 처음 연결할 때 Sayren에 스스로 앱 등록(OAuth 동적 클라이언트 등록)을 하고 Sayren 계정 로그인 창을 엽니다. 로그인한 뒤 도구에 허락할 권한과 상점을 고릅니다.

  • 권한 허용 화면에는 도구가 등록한 이름이 Sayren이 확인하지 않은 앱으로 표시됩니다. 지금 연결하려는 도구가 맞는지 확인한 뒤 허용하십시오. 직접 연결하지 않았다면 거부합니다.
  • 이 방식으로 연결한 도구는 구성원 조회·관리(member:r·member:rw), 웹훅 설정 변경(webhook:rw) 권한을 받을 수 없습니다. 이 작업은 상점 플랫폼에서 하거나 해당 권한을 넣은 액세스 토큰을 씁니다.
  • 상점 정보 수정(store:rw)은 승인을 거칩니다. 결제 설정·구매자 로그인 설정·출고지처럼 상점 플랫폼에서만 하는 작업은 이 권한이 있어도 할 수 없습니다.
  • 30일 동안 쓰지 않은 연결은 정리됩니다. 그 뒤에 도구를 쓰면 다시 로그인하고 권한을 허용합니다.
하려는 일필요한 스코프
상점 정보 조회store:r, product:r
상점 정보 수정(고객센터·배송비 정책 등, 승인 필요)store:rw
스토어프론트 사이트 조회, 사이트 파일 읽기·검증storefront:r
사이트 파일 쓰기·검사 실행·버전 만들기, 발행·되돌리기·공개 전환storefront:rw
주문·상품 등 조회·수정해당 리소스의 스코프(예: order:r, product:rw)
  • 실제 권한은 그 상점에서의 내 역할과 허락한 권한 중 좁은 쪽입니다.
  • 상점은 X-Store-Id 헤더로 정합니다. 헤더가 없으면 허락한 상점이 하나일 때 그 상점으로 연결하고, 여럿이면 400으로 거부됩니다. X-Store-Id를 넣거나 연결할 때 상점 하나만 고르십시오.
  • 헤더의 상점이 허락한 상점 범위 밖이면 403으로 거부됩니다.
  • 이 연결의 요청은 언제나 AI 에이전트 요청으로 기록되고 고위험 작업은 승인을 거칩니다.
  • 연결은 Sayren 계정 › 연결된 앱에 보이고, 연결 해제로 끊습니다.
  • 허락한 권한은 연결할 때 정해집니다. 권한을 늘리려면 연결을 해제하고 다시 연결하십시오. 이 변경 전에 연결했다면 상점 정보 수정(store:rw)을 쓰려면 다시 연결해야 합니다.

로그인 창을 쓸 수 없는 도구

요청 헤더만 지정할 수 있는 도구는 AI 에이전트용 액세스 토큰을 넣습니다.

{
  "mcpServers": {
    "sayren": {
      "type": "http",
      "url": "https://mcp.sayren.app/mcp",
      "headers": { "Authorization": "Bearer 액세스_토큰", "X-Store-Id": "store_abc123" }
    }
  }
}

토큰이 든 설정 파일은 저장소에 올리지 마십시오. 옛 API 토큰(sy_pat_…)은 더 이상 연결되지 않습니다.

3. 연결 확인

도구에 아래처럼 물어봅니다.

sayren MCP로 내 상점 정보 알려줘.

상점 이름과 상점 코드가 나오면 연결된 것입니다.

도구

도구하는 일필요 스코프
get_store_context상점 코드·카테고리·상품 수·상품 표본store:r
list_template_files·get_template_file호스팅 템플릿 원본(지금 카탈로그 버전)의 파일 목록·원문. 읽기만 합니다없음
list_operations·describe_operation부를 수 있는 관리 API 목록과 상세없음
call_api_read·call_api_write관리 API 조회·변경오퍼레이션의 스코프
get_approval_request승인 요청 상태없음
list_approvals승인 요청 목록(기본 승인 대기)·한 건store:r, OWNER·ADMIN
decide_approval확인 창에서 사람이 수락하면 승인·거절store:rw와 원 요청의 스코프, OWNER·ADMIN
upload_image상품 이미지 업로드(이미지 주소 또는 base64)product:rw
get_site사이트 주소·공개 상태·발행 버전·반영 상태storefront:r
list_versions사이트 버전 목록storefront:r
publish_version버전 발행storefront:rw
rollback이전 버전으로 되돌리기storefront:rw
set_visibility오픈 준비중 ↔ 공개 전환storefront:rw
get_editing_guide사이트를 고치는 순서·규칙·손대지 않을 파일없음
start_editing·get_editing_status편집 환경 열기·상태storefront:rw·storefront:r
list_files·read_file·search_files사이트 파일 목록·읽기·검색storefront:r
write_files·delete_file·move_file사이트 파일 쓰기·삭제·이동storefront:rw
run_check·get_check타입 검사·lint·테스트 중 하나 실행과 결과storefront:rw·storefront:r
verify_site결제·로그인 규칙 검증storefront:r
create_version·get_build버전 만들기와 빌드 결과storefront:rw·storefront:r

입력과 출력은 MCP 도구 레퍼런스에 있습니다. 사이트 편집 도구는 아래 절에서 설명합니다.

템플릿 원본 읽기

list_template_files·get_template_file은 새 사이트가 처음 받는 템플릿 원본을 줍니다. 고친 사이트 파일을 원본과 비교하거나, 실수로 지운 파일을 되살릴 때 씁니다. templateId로 템플릿을 고르고(생략하면 기본 템플릿) list_template_files 응답의 templates가 고를 수 있는 목록입니다. 원격 MCP는 각 템플릿의 지금 카탈로그 버전만 줍니다. 다른 version을 주면 오류이고, 예전 버전으로 만든 사이트의 파일은 read_file로 읽습니다. 그림 같은 이진 파일은 path·encoding(base64)·content를 담은 JSON입니다. 템플릿 원본을 읽어도 사이트는 바뀌지 않습니다.

AI로 사이트 고치기

호스팅 사이트의 코드를 AI 도구로 고칠 수 있습니다. 편집 환경이 열려 있으면 AI가 고친 파일이 상점 플랫폼의 미리보기에 바로 반영됩니다. 공개 사이트는 버전을 만들어 발행해야 바뀝니다. 코드를 받아 내 컴퓨터에서 고치지 않아도 됩니다.

도구에 이렇게 요청합니다.

sayren MCP로 내 스토어프론트 헤더 배경을 남색으로 바꾸고, 상품 카드에 할인율을 크게 보여 줘.
검사가 통과하면 버전을 만들어 줘.

사이트가 아직 없으면 AI 도구가 템플릿 목록(StorefrontHostingController_listTemplates)을 보여 주고, 확인받은 템플릿으로 사이트를 만듭니다(call_api_write로 StorefrontHostingController_create). 만든 사이트는 v1이 발행된 오픈 준비중 상태입니다. 템플릿은 만든 뒤 바꿀 수 없습니다.

AI 도구는 대체로 아래 순서로 진행합니다.

  1. get_editing_guide로 고치는 순서와 규칙을 읽습니다.
  2. start_editing으로 편집 환경을 엽니다. 여는 데 30초 안팎이 걸리고, 15분 동안 쓰지 않으면 다시 잠듭니다. 파일 쓰기·검사·버전 만들기가 30분 동안 없으면 미리보기를 보고 있어도 닫힙니다. 고친 내용은 잠들거나 닫혀도 남습니다.
  3. list_files·search_files·read_file로 고칠 곳을 찾고 write_files로 고칩니다. 파일 읽기·쓰기는 편집 환경이 잠들어 있어도 됩니다.
  4. run_check(타입 검사)와 verify_site(규칙 검증)로 확인합니다. 둘 다 편집 환경 없이 됩니다. 검사가 오래 걸리면 run_check가 검사 id(checkId)를 돌려주고, AI 도구가 get_check로 결과를 이어서 봅니다.
  5. 상점 플랫폼의 스토어프론트 › 개요에서 **[미리보기 열기]**로 화면을 확인합니다. 미리보기는 직접 엽니다.
  6. create_version으로 버전을 만들고 get_build로 빌드 결과를 봅니다.
  7. 발행은 publish_version입니다. 앞 절처럼 상점 플랫폼에서 승인해야 공개 사이트가 바뀝니다.

여러 사람이 함께 고칠 때

사이트의 작업 내용은 하나이고 구성원과 AI 도구가 함께 씁니다. write_files는 파일을 읽었을 때의 hash를 함께 보내고, 그사이 다른 사람이 같은 파일을 고쳤으면 FILE_CHANGED로 쓰지 않습니다. AI 도구는 파일을 다시 읽어 변경을 합친 뒤 씁니다. 남의 변경을 덮어쓰지 않습니다.

규칙 검증과 빌드

버전을 만들면 규칙 검증 → 타입 검사 → 빌드 순서로 확인합니다. 결제·로그인 규칙을 어기면 버전을 발행할 수 없습니다. 빌드가 실패하면 get_build가 실패 단계(failureStage)와 로그의 끝부분, 규칙 위반과 고치는 방법을 알려 줍니다. verify_site와 같은 규칙이라 버전을 만들기 전에 verify_site를 통과하면 규칙 단계에서 막히지 않습니다.

결제창·결제 복귀·구매자 세션을 다루는 파일은 고치지 않는 것이 안전합니다. 목록은 get_editing_guide의 doNotTouch에 있습니다.

고칠 수 있는 파일

src/·public/·messages/(화면 문구) 아래 파일과 루트 설정 파일 몇 개를 고칠 수 있습니다. package.json과 pnpm-lock.yaml은 읽기만 되고, 패키지를 더하거나 뺄 수 없습니다. 설치 폴더(node_modules)·빌드 결과물·.env 파일은 다루지 않습니다.

편집 상한

항목값
파일 하나1MiB
사이트 전체20MiB, 파일 2,000개
write_files 한 번파일 50개, 합계 1.5MB
read_file 한 번6만 자. 넘으면 나눠 읽습니다
검사 한 번(run_check)150초. 넘으면 TIMED_OUT
동시에 도는 검사사이트당 1개

동시에 열 수 있는 편집 환경 수에는 상한이 있습니다. 자리가 없으면 start_editing이 EDIT_CAPACITY_FULL과 다시 시도할 때까지의 시간(retryAfterSeconds)을 알려 줍니다. 그동안에도 파일 읽기·쓰기와 verify_site는 됩니다.

발행·공개 전환은 승인 뒤 실행됩니다

AI 도구가 요청한 발행·되돌리기·공개 전환은 바로 실행되지 않고 승인 대기가 됩니다. 도구가 승인 링크를 알려 주면 상점 플랫폼의 설정 › 보안 › 승인 요청에서 승인합니다. 확인 창(MCP elicitation)을 지원하는 클라이언트라면 decide_approval로 이 대화에서 승인할 수도 있습니다. 클라이언트가 확인 창을 띄우고 사람이 수락해야 실행됩니다. 승인하면 서버가 그 요청을 그대로 실행합니다. 24시간 안에 승인하지 않으면 만료됩니다. 규칙은 AI 작업 승인과 감사 로그에 있습니다.

발행이 끝나도 공개 주소에 보이기까지 최대 1분이 걸립니다. get_site의 provisioning.status가 SYNCED면 반영된 것입니다.

미리보기 링크는 AI 도구로 주지 않습니다. 링크를 받은 사람은 오픈 준비 중인 화면을 볼 수 있어 대화 기록에 남기지 않기 위해서입니다. 오픈 준비 중인 화면은 상점 플랫폼의 스토어프론트 › 개요에서 **[미리보기 열기]**로 봅니다.

요청 한도

한도값
토큰당 요청1분에 약 120회
요청 본문4MB

한도를 넘으면 429와 Retry-After를 받습니다. 1분 뒤 다시 시도합니다. 관리 API 자체의 한도는 그대로 적용됩니다.

문제 해결

증상확인해결
연결이 400으로 거부됨설정에 X-Store-Id가 있는지상점 id를 헤더로 넣거나, 다시 연결하며 상점 하나만 고름
연결이 403으로 거부됨X-Store-Id가 허락한 상점 범위 안인지그 상점을 포함해 다시 연결하거나 헤더를 고침
401 invalid_token 또는 로그인 창이 다시 뜸Sayren 계정 › 연결된 앱·액세스 토큰에서 연결·토큰 상태다시 로그인하거나 새 액세스 토큰을 만듦
로그인 창이 뜨기 전에 앱 등록이 429로 실패같은 네트워크에서 연결을 짧은 시간에 여러 번 시도했는지잠시 뒤 다시 연결
헤더에 sy_pat_…를 넣었는데 연결되지 않음옛 API 토큰인지헤더를 지우고 로그인 창으로 연결하거나 액세스 토큰으로 바꿈
도구 결과가 INSUFFICIENT_ROLE허락한 권한과 내 역할연결된 앱에서 연결을 해제하고 위 표의 스코프를 허락해 다시 연결
get_site의 site가 null스토어프론트 공간에 사이트가 있는지AI 도구에 템플릿을 골라 사이트를 만들어 달라고 요청하거나(StorefrontHostingController_create) 상점 플랫폼에서 만든 뒤 다시 조회
발행했는데 화면이 그대로결과가 APPROVAL_PENDING인지상점 플랫폼에서 승인 요청을 승인
파일을 고쳤는데 공개 사이트가 그대로버전을 만들고 발행했는지create_version → 빌드 성공 → publish_version 승인
write_files가 FILE_CHANGED다른 사람이 같은 파일을 고쳤는지파일을 다시 읽고 합쳐서 씀
start_editing이 EDIT_CAPACITY_FULLretryAfterSeconds그 시간 뒤 다시 시도
run_check가 CHECK_RUNNING다른 검사가 도는지(details.checkId)get_check로 그 검사가 끝나기를 기다린 뒤 다시 실행
검사 결과가 UNKNOWN검사 환경과의 연결이 끊겼는지run_check로 새로 실행
편집 환경이 저절로 꺼짐30분 동안 파일 쓰기·검사·버전 만들기가 없었는지start_editing으로 다시 엶. 고친 파일은 남아 있음
write_files가 INVALID_FILE_PATH경로가 src/·public/·messages/ 아래인지고칠 수 있는 파일만 씀
빌드가 VERIFY에서 실패get_build의 verify 위반안내대로 고치고 verify_site로 확인한 뒤 버전을 다시 만듦

연결을 해제하거나 토큰을 폐기해도 원격 MCP가 최대 1분 동안 연결을 유지할 수 있습니다. 그동안의 도구 호출은 모두 UNAUTHORIZED로 실패합니다.

다음 단계

이 페이지 목차