대시보드
Morit Plugin7. SDK, MCP, API

CLI와 AI 에이전트 MCP

Morit은 두 MCP 연결을 제공합니다.

연결실행 위치적합한 작업
Local @morit/plugin-mcp개발자 PC의 stdio process로컬 파일 직접 편집, 빠른 preview/build
Remote https://morit-api.moring.co/mcpMorit Cloud Streamable HTTP파일시스템 없는 AI client, 조직 Project·Secret·Deployment

두 연결은 SDK 1.7.12의 @morit/cli와 Host Plugin contract를 사용합니다. 계약에는 mode별 Plugin Theme, Local Storage/AI access, 표준 Storage Tool, UI binding, A2UI Response catalog와 safe preview가 포함됩니다. Local source에 접근할 필요가 없으면 Remote를, 현재 저장소 파일을 직접 고쳐야 하면 Local을 선택합니다.

준비

bash
node --version
npx -y @morit/cli login

Node.js 20.12 이상이 필요합니다. Local MCP의 Cloud Tool을 쓸 때만 CLI 로그인이 필요합니다. MCP 설정이나 Project source에 access token을 직접 넣지 않습니다.

Codex에 Local MCP 추가

bash
codex mcp add morit-plugin-local -- npx -y @morit/plugin-mcp
codex mcp list

특정 workspace만 허용하려면 환경변수로 절대 경로를 전달합니다.

bash
codex mcp add morit-plugin-local \
  --env MORIT_PLUGIN_WORKSPACE=/absolute/development/path \
  -- npx -y @morit/plugin-mcp

Codex CLI/IDE/Desktop의 현재 MCP 설정 방식은 공식 OpenAI MCP 문서를 참고하세요. Codex TUI에서는 /mcp로 활성 서버를 확인합니다.

Codex에 Remote MCP 추가

bash
codex mcp add morit-plugin-remote --url https://morit-api.moring.co/mcp
codex mcp login morit-plugin-remote
codex mcp list

브라우저에서 Morit 계정으로 로그인하고 조직과 scope를 승인합니다. static bearer token을 config에 넣지 않습니다.

Claude Code

Local stdio:

bash
claude mcp add --scope user morit-plugin-local -- npx -y @morit/plugin-mcp

Remote Streamable HTTP:

bash
claude mcp add --transport http --scope user \
  morit-plugin-remote https://morit-api.moring.co/mcp

클라이언트가 OAuth를 요청하면 Morit SSO 승인을 완료한 뒤 Tool 목록을 새로고침합니다. Claude Web/Desktop에서는 Custom Connector에 같은 Remote URL을 등록합니다. Local stdio는 로컬 process를 실행할 수 있는 client에서만 사용할 수 있습니다.

ChatGPT와 기타 Remote MCP client

ChatGPT에서 custom MCP app을 사용할 수 있는 계정·workspace라면 Apps의 custom connector 생성 화면에 다음 URL을 입력하고 Morit OAuth를 승인합니다.

text
https://morit-api.moring.co/mcp

ChatGPT Web은 개발자 PC의 stdio process나 Codex config.toml을 읽지 않으므로 Local MCP 대신 Remote MCP를 사용합니다. 조직 계정은 관리자가 custom app과 필요한 read/write scope를 허용해야 할 수 있습니다. Tool이 변경된 뒤에는 connector의 Tool schema를 새로고침하고 새 대화에서 확인합니다.

stdio MCP를 지원하는 다른 desktop agent의 일반적인 설정은 다음 형태입니다. 실제 설정 파일 위치와 key 이름은 해당 client 문서를 따릅니다.

json
{
  "mcpServers": {
    "morit-plugin-local": {
      "command": "npx",
      "args": ["-y", "@morit/plugin-mcp"],
      "env": {
        "MORIT_PLUGIN_WORKSPACE": "/absolute/development/path"
      }
    }
  }
}

Remote를 지원하는 client에는 command나 server Secret 대신 endpoint와 OAuth만 설정합니다. 연결 뒤 Tool 목록에서 morit_sdk_contract, morit_docs_search, morit_project_create가 보이는지 확인합니다. OpenAI의 Apps 안내에서 현재 계정과 workspace의 custom app 지원 범위를 확인할 수 있습니다.

Local MCP 작업 순서

text
morit_sdk_contract
→ morit_docs_search / morit_docs_get
→ morit_project_create 또는 morit_project_open
→ morit_project_files_get
→ morit_project_files_put
→ morit_project_validate
→ UI가 있으면 morit_project_preview(light/dark 확인)
→ morit_build_start / morit_build_status
→ morit_artifact_download

주요 Local Tool:

  • 계약·문서: morit_sdk_contract, morit_docs_search, morit_docs_get
  • local project: morit_project_create, morit_project_open, morit_project_files_get, morit_project_files_put
  • 산출물: morit_project_validate, morit_project_preview, morit_project_source_download, morit_build_start, morit_build_status, morit_artifact_download
  • Cloud 상태·Project: morit_cloud_status, morit_cloud_project_list, morit_cloud_project_get, morit_cloud_project_add, morit_cloud_project_sync, morit_cloud_project_delete
  • Cloud Deployment: morit_cloud_deployment_start, morit_cloud_deployment_list, morit_cloud_deployment_get, morit_cloud_deployment_publish
  • Cloud Secret: morit_cloud_secret_list, morit_cloud_secret_put, morit_cloud_secret_delete
  • Cloud Connection: morit_cloud_connection_list, morit_cloud_connection_put, morit_cloud_connection_delete

MCP가 반환한 project ID, revision, artifact ID를 다음 호출에 그대로 사용합니다. 경로를 추측하거나 build 전에 완료했다고 보고하지 않습니다.

PNG/JPEG/GIF/WebP icon·UI asset과 children/*.mplgmorit-base64-v1:<canonical-base64> 문자열로 files_put할 수 있습니다. text 경로에 envelope를 쓰거나 이미지 확장자와 magic byte가 다르면 Local/Remote MCP가 거부합니다. files_get도 같은 envelope를 반환하므로 수정하지 않은 바이트는 그대로 다음 revision에 유지합니다.

Storage 기능을 생성할 때는 먼저 morit_sdk_contractpermissions, storage_tools, storage_ai_access, storage_limits를 읽고 Manifest storage와 UI data source를 함께 작성합니다. AI가 쓰는 namespace는 ai_access: read_writeai_storage 권한을 모두 선언합니다. MCP는 package runtime 데이터를 읽는 우회 경로가 아니며 개발 source와 artifact만 다룹니다.

Response extension을 생성할 때는 ai_responseui_runtime 계약을 함께 읽습니다. MCP 에이전트는 point: "response", Runtime v2, a2ui.version/description/schema, 실제 capability data source를 한 단위로 작성해야 합니다. AI가 결과 JSON을 만들게 하지 말고 schema에는 표시 가능한 최소 데이터와 empty 조건을 명시합니다. validate가 schema·권한·version을 거부하면 파일을 우회 패키징하지 않습니다.

Remote MCP 작업 순서

text
morit_organization_list
→ morit_project_create 또는 morit_project_list
→ morit_project_files_get
→ morit_project_files_put(revision 포함)
→ morit_project_validate
→ morit_project_preview
→ morit_build_start
→ morit_build_status
→ morit_deployment_get
→ morit_artifact_download

Secret과 Connection은 build 전에 별도 Tool로 설정합니다. Secret 조회는 ID와 masked metadata만 반환하며 평문 값을 다시 읽을 수 없습니다.

에이전트 완료 규칙

AI 에이전트는 다음을 모두 확인한 뒤 완료를 보고합니다.

  • source를 다시 읽고 요청한 파일이 존재함
  • 최신 revision으로 validate 성공
  • UI가 있으면 preview artifact 생성
  • build state가 completed
  • .mplg artifact ID, 크기, SHA-256, MIME 확인
  • 다운로드한 package가 다시 열리고 signature가 유효함
  • 배포 요청이면 고유 Deployment와 visibility 확인

연결 문제

증상확인
Local server가 보이지 않음Node 버전, npx -y @morit/plugin-mcp, client restart
workspace 밖 경로 거부MORIT_PLUGIN_WORKSPACE와 project 상대 경로
Remote 401정상 OAuth 시작 여부, codex mcp login
Remote 404/mcp ingress route
contract parse 오류server가 전체 JSON stdout을 반환하는지, stderr 혼합 여부
revision conflictfiles_get으로 최신 revision을 읽고 변경을 합침
artifact 없음build status가 completed인지 확인

Remote Tool의 전체 필드는 원격 Plugin MCP에 있습니다.