CLI와 AI 에이전트 MCP
Morit은 두 MCP 연결을 제공합니다.
두 연결은 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을 선택합니다.
준비
node --version
npx -y @morit/cli login
Node.js 20.12 이상이 필요합니다. Local MCP의 Cloud Tool을 쓸 때만 CLI 로그인이 필요합니다. MCP 설정이나 Project source에 access token을 직접 넣지 않습니다.
Codex에 Local MCP 추가
codex mcp add morit-plugin-local -- npx -y @morit/plugin-mcp
codex mcp list
특정 workspace만 허용하려면 환경변수로 절대 경로를 전달합니다.
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 추가
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:
claude mcp add --scope user morit-plugin-local -- npx -y @morit/plugin-mcp
Remote Streamable HTTP:
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를 승인합니다.
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 문서를 따릅니다.
{
"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 작업 순서
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/*.mplg는
morit-base64-v1:<canonical-base64> 문자열로 files_put할 수 있습니다. text 경로에 envelope를
쓰거나 이미지 확장자와 magic byte가 다르면 Local/Remote MCP가 거부합니다. files_get도 같은
envelope를 반환하므로 수정하지 않은 바이트는 그대로 다음 revision에 유지합니다.
Storage 기능을 생성할 때는 먼저 morit_sdk_contract의 permissions, storage_tools,
storage_ai_access, storage_limits를 읽고 Manifest storage와 UI data source를 함께 작성합니다.
AI가 쓰는 namespace는 ai_access: read_write와 ai_storage 권한을 모두 선언합니다. MCP는 package
runtime 데이터를 읽는 우회 경로가 아니며 개발 source와 artifact만 다룹니다.
Response extension을 생성할 때는 ai_response와 ui_runtime 계약을 함께 읽습니다. MCP 에이전트는
point: "response", Runtime v2, a2ui.version/description/schema, 실제 capability data source를 한
단위로 작성해야 합니다. AI가 결과 JSON을 만들게 하지 말고 schema에는 표시 가능한 최소 데이터와
empty 조건을 명시합니다. validate가 schema·권한·version을 거부하면 파일을 우회 패키징하지 않습니다.
Remote MCP 작업 순서
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
.mplgartifact ID, 크기, SHA-256, MIME 확인- 다운로드한 package가 다시 열리고 signature가 유효함
- 배포 요청이면 고유 Deployment와 visibility 확인
연결 문제
Remote Tool의 전체 필드는 원격 Plugin MCP에 있습니다.