📄 원문: Claude Desktop Extensions: One-click MCP server installation for Claude Desktop
- 출처: Claude Desktop Extensions: One-click MCP server installation for Claude Desktop
- 저자: Anthropic
- 원문 발행일: 2025년 6월 26일
- 라이선스: 저작권 Anthropic
- 번역일: 2025년 6월 27일
- 번역 및 감수: Claude and 공부하우
- 참고: 이 번역은 교육 목적으로 작성되었으며, Anthropic의 공식 번역이 아닙니다.
⚖️ 저작권 안내
이 번역문은 교육 및 정보 제공 목적으로 작성되었습니다. 원문의 저작권은 Anthropic에 있으며, 이 번역은 Anthropic의 공식 번역이 아닙니다.
본 번역은 다음과 같은 교육적 공정 사용(Fair Use) 원칙에 따라 제공됩니다:
- 비영리 교육 목적
- 원문 출처의 명확한 표시
- 한국어 사용자의 기술 이해 증진을 위한 변형적 사용
- 원저작물의 시장 가치에 부정적 영향을 미치지 않음
저작권 관련 문제가 제기될 경우, 즉시 적절한 조치를 취하겠습니다. 상업적 사용이나 재배포 전에 원저작권자의 허가를 받으시기 바랍니다.
문의사항이나 우려사항이 있으시면 오른쪽 템플릿 복사를 클릭 하신 뒤, 연락 페이지를 통해 알려 주시기 바랍니다.
Claude Desktop Extensions: Claude Desktop을 위한 원클릭 MCP 서버 설치
작년에 Model Context Protocol (MCP)을 릴리스했을 때, 개발자들이 Claude가 파일 시스템부터 데이터베이스까지 모든 것에 액세스할 수 있게 하는 놀라운 로컬 서버를 구축하는 것을 보았습니다. 하지만 우리는 계속 같은 피드백을 들었습니다: 설치가 너무 복잡하다는 것이었습니다. 사용자들은 개발자 도구가 필요했고, 구성 파일을 수동으로 편집해야 했으며, 종종 의존성 문제에 막혔습니다.
오늘, 우리는 Desktop Extensions를 소개합니다—MCP 서버 설치를 버튼 클릭만큼 간단하게 만드는 새로운 패키징 형식입니다.
MCP 설치 문제 해결하기
로컬 MCP 서버는 Claude Desktop 사용자에게 강력한 기능을 제공합니다. 로컬 애플리케이션과 상호 작용하고, 개인 데이터에 액세스하며, 개발 도구와 통합할 수 있습니다—모든 것이 사용자의 컴퓨터에서 데이터를 유지하면서 이루어집니다. 그러나 현재의 설치 과정은 상당한 장벽을 만듭니다:
- 개발자 도구 필요: 사용자는 Node.js, Python 또는 기타 런타임이 설치되어 있어야 합니다
- 수동 구성: 각 서버는 JSON 구성 파일을 편집해야 합니다
- 의존성 관리: 사용자는 패키지 충돌과 버전 불일치를 해결해야 합니다
- 검색 메커니즘 없음: 유용한 MCP 서버를 찾으려면 GitHub를 검색해야 합니다
- 업데이트 복잡성: 서버를 최신 상태로 유지하려면 수동으로 재설치해야 합니다
이러한 마찰 포인트는 MCP 서버가 강력함에도 불구하고 기술에 익숙하지 않은 사용자들에게는 대부분 접근할 수 없다는 것을 의미했습니다.
Desktop Extensions 소개
Desktop Extensions (.dxt 파일)은 전체 MCP 서버—모든 의존성 포함—을 단일 설치 가능 패키지로 번들링하여 이러한 문제를 해결합니다. 사용자를 위해 다음과 같이 변경됩니다:
이전:# 먼저 Node.js 설치
npm install -g @example/mcp-server
# ~/.claude/claude_desktop_config.json 수동으로 편집
# Claude Desktop 재시작
# 작동하기를 희망
원본:
# Install Node.js first
npm install -g @example/mcp-server
# Edit ~/.claude/claude_desktop_config.json manually
# Restart Claude Desktop
# Hope it works
- .dxt 파일 다운로드
- Claude Desktop으로 열기 위해 더블클릭
- "설치" 클릭
원본:
- Download a .dxt file
- Double-click to open with Claude Desktop
- Click "Install"
그게 전부입니다. 터미널도, 구성 파일도, 의존성 충돌도 없습니다.
아키텍처 개요
Desktop Extension은 로컬 MCP 서버와 manifest.json을 포함하는 zip 아카이브입니다. manifest.json은 Claude Desktop과 desktop extensions를 지원하는 다른 앱들이 알아야 할 모든 것을 설명합니다.
extension.dxt (ZIP 아카이브)
├── manifest.json # Extension 메타데이터 및 구성
├── server/ # MCP 서버 구현
│ └── [서버 파일들]
├── dependencies/ # 모든 필요한 패키지/라이브러리
└── icon.png # 선택사항: Extension 아이콘
원본:
extension.dxt (ZIP archive)
├── manifest.json # Extension metadata and configuration
├── server/ # MCP server implementation
│ └── [server files]
├── dependencies/ # All required packages/libraries
└── icon.png # Optional: Extension icon
예시: Node.js Extension
extension.dxt
├── manifest.json # 필수: Extension 메타데이터 및 구성
├── server/ # 서버 파일들
│ └── index.js # 메인 진입점
├── node_modules/ # 번들된 의존성
├── package.json # 선택사항: NPM 패키지 정의
└── icon.png # 선택사항: Extension 아이콘
원본:
# Example: Node.js Extension
extension.dxt
├── manifest.json # Required: Extension metadata and configuration
├── server/ # Server files
│ └── index.js # Main entry point
├── node_modules/ # Bundled dependencies
├── package.json # Optional: NPM package definition
└── icon.png # Optional: Extension icon
예시: Python Extension
extension.dxt (ZIP 파일)
├── manifest.json # 필수: Extension 메타데이터 및 구성
├── server/ # 서버 파일들
│ ├── main.py # 메인 진입점
│ └── utils.py # 추가 모듈
├── lib/ # 번들된 Python 패키지
├── requirements.txt # 선택사항: Python 의존성 목록
└── icon.png # 선택사항: Extension 아이콘
원본:
# Example: Python Extension
extension.dxt (ZIP file)
├── manifest.json # Required: Extension metadata and configuration
├── server/ # Server files
│ ├── main.py # Main entry point
│ └── utils.py # Additional modules
├── lib/ # Bundled Python packages
├── requirements.txt # Optional: Python dependencies list
└── icon.png # Optional: Extension icon
Desktop Extension에서 유일하게 필요한 파일은 manifest.json입니다. Claude Desktop이 모든 복잡성을 처리합니다:
- 내장 런타임: Claude Desktop과 함께 Node.js를 제공하여 외부 의존성을 제거합니다
- 자동 업데이트: 새 버전이 사용 가능하면 Extensions가 자동으로 업데이트됩니다
- 보안 비밀: API 키와 같은 민감한 구성은 OS 키체인에 저장됩니다
manifest는 사람이 읽을 수 있는 정보(이름, 설명, 작성자 등), 기능 선언(도구, 프롬프트), 사용자 구성 및 런타임 요구 사항을 포함합니다. 대부분의 필드는 선택 사항이므로 최소 버전은 매우 짧지만, 실제로는 세 가지 지원되는 extension 유형(Node.js, Python, 그리고 클래식 바이너리/실행 파일) 모두가 파일을 포함할 것으로 예상합니다:
{
"dxt_version": "0.1", // 이 manifest가 따르는 DXT 사양 버전
"name": "my-extension", // 기계가 읽을 수 있는 이름 (CLI, API에 사용)
"version": "1.0.0", // extension의 시맨틱 버전
"description": "간단한 MCP extension", // extension이 수행하는 작업에 대한 간략한 설명
"author": { // 작성자 정보 (필수)
"name": "Extension Author" // 작성자 이름 (필수 필드)
},
"server": { // 서버 구성 (필수)
"type": "node", // 서버 타입: "node", "python", 또는 "binary"
"entry_point": "server/index.js", // 메인 서버 파일 경로
"mcp_config": { // MCP 서버 구성
"command": "node", // 서버 실행 명령
"args": [ // 명령에 전달되는 인수
"${__dirname}/server/index.js" // ${__dirname}은 extension 디렉토리로 대체됨
]
}
}
}
원본:
{
"dxt_version": "0.1", // DXT spec version this manifest conforms to
"name": "my-extension", // Machine-readable name (used for CLI, APIs)
"version": "1.0.0", // Semantic version of your extension
"description": "A simple MCP extension", // Brief description of what the extension does
"author": { // Author information (required)
"name": "Extension Author" // Author's name (required field)
},
"server": { // Server configuration (required)
"type": "node", // Server type: "node", "python", or "binary"
"entry_point": "server/index.js", // Path to the main server file
"mcp_config": { // MCP server configuration
"command": "node", // Command to run the server
"args": [ // Arguments passed to the command
"${__dirname}/server/index.js" // ${__dirname} is replaced with the extension's directory
]
}
}
}
manifest 사양에는 로컬 MCP 서버의 설치 및 구성을 더 쉽게 만들기 위한 여러 편의 옵션이 있습니다. 서버 구성 객체는 템플릿 리터럴 형태의 사용자 정의 구성과 플랫폼별 재정의를 모두 포함하는 방식으로 정의할 수 있습니다. Extension 개발자는 사용자로부터 수집하려는 구성의 종류를 자세히 정의할 수 있습니다.
manifest가 구성에 어떻게 도움이 되는지 구체적인 예를 살펴보겠습니다. 아래의 manifest에서 개발자는 사용자가 api_key를 제공해야 한다고 선언합니다. Claude는 사용자가 해당 값을 제공할 때까지 extension을 활성화하지 않으며, 자동으로 운영 체제의 비밀 저장소에 보관하고, 서버를 시작할 때 ${user_config.api_key}를 사용자가 제공한 값으로 투명하게 대체합니다. 마찬가지로 ${__dirname}은 extension의 압축 해제된 디렉토리의 전체 경로로 대체됩니다.
{
"dxt_version": "0.1",
"name": "my-extension",
"version": "1.0.0",
"description": "간단한 MCP extension",
"author": {
"name": "Extension Author"
},
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"env": {
"API_KEY": "${user_config.api_key}"
}
}
},
"user_config": {
"api_key": {
"type": "string",
"title": "API 키",
"description": "인증을 위한 API 키",
"sensitive": true,
"required": true
}
}
}
대부분의 선택적 필드를 포함한 전체 manifest.json은 다음과 같습니다:
{
"dxt_version": "0.1",
"name": "My MCP Extension",
"display_name": "My Awesome MCP Extension",
"version": "1.0.0",
"description": "이 extension이 수행하는 작업에 대한 간략한 설명",
"long_description": "extension의 기능, 사용 사례 및 기능을 설명하는 여러 단락을 포함할 수 있는 자세한 설명. 기본 마크다운을 지원합니다.",
"author": {
"name": "Your Name",
"email": "[email protected]",
"url": "https://your-website.com"
},
"repository": {
"type": "git",
"url": "https://github.com/your-username/my-mcp-extension"
},
"homepage": "https://example.com/my-extension",
"documentation": "https://docs.example.com/my-extension",
"support": "https://github.com/your-username/my-extension/issues",
"icon": "icon.png",
"screenshots": [
"assets/screenshots/screenshot1.png",
"assets/screenshots/screenshot2.png"
],
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"env": {
"ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
}
}
},
"tools": [
{
"name": "search_files",
"description": "디렉토리에서 파일 검색"
}
],
"prompts": [
{
"name": "poetry",
"description": "LLM이 시를 쓰도록 합니다",
"arguments": ["topic"],
"text": "다음 주제에 대한 창의적인 시를 작성하세요: ${arguments.topic}"
}
],
"tools_generated": true,
"keywords": ["api", "automation", "productivity"],
"license": "MIT",
"compatibility": {
"claude_desktop": ">=1.0.0",
"platforms": ["darwin", "win32", "linux"],
"runtimes": {
"node": ">=16.0.0"
}
},
"user_config": {
"allowed_directories": {
"type": "directory",
"title": "허용된 디렉토리",
"description": "서버가 액세스할 수 있는 디렉토리",
"multiple": true,
"required": true,
"default": ["${HOME}/Desktop"]
},
"api_key": {
"type": "string",
"title": "API 키",
"description": "인증을 위한 API 키",
"sensitive": true,
"required": false
},
"max_file_size": {
"type": "number",
"title": "최대 파일 크기 (MB)",
"description": "처리할 최대 파일 크기",
"default": 10,
"min": 1,
"max": 100
}
}
}
extension과 manifest를 보려면 dxt 저장소의 예제를 참조하세요.
manifest.json의 모든 필수 및 선택적 필드에 대한 전체 사양은 우리의 오픈 소스 툴체인의 일부로 찾을 수 있습니다.
첫 번째 extension 구축하기
기존 MCP 서버를 Desktop Extension으로 패키징하는 과정을 살펴보겠습니다. 간단한 파일 시스템 서버를 예로 들겠습니다.
1단계: manifest 생성
먼저 서버를 위한 manifest를 초기화합니다:
npx @anthropic-ai/dxt init
이 대화형 도구는 서버에 대해 묻고 완전한 manifest.json을 생성합니다. 가장 기본적인 manifest.json으로 빠르게 진행하려면 --yes 매개변수와 함께 명령을 실행할 수 있습니다.
2단계: 사용자 구성 처리
서버에 사용자 입력(API 키나 허용된 디렉토리 등)이 필요한 경우 manifest에 선언합니다:
"user_config": {
"allowed_directories": {
"type": "directory",
"title": "허용된 디렉토리",
"description": "서버가 액세스할 수 있는 디렉토리",
"multiple": true,
"required": true,
"default": ["${HOME}/Documents"]
}
}
Claude Desktop이 다음을 수행합니다:
- 사용자 친화적인 구성 UI 표시
- extension을 활성화하기 전에 입력 유효성 검사
- 민감한 값을 안전하게 저장
- 개발자 구성에 따라 인수 또는 환경 변수로 서버에 구성 전달
아래 예시에서는 사용자 구성을 환경 변수로 전달하지만 인수일 수도 있습니다.
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"env": {
"ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
}
}
}
3단계: extension 패키징
모든 것을 .dxt 파일로 번들합니다:
npx @anthropic-ai/dxt pack
이 명령은:
- manifest 유효성 검사
- .dxt 아카이브 생성
4단계: 로컬 테스트
.dxt 파일을 Claude Desktop의 설정 창으로 드래그합니다. 다음을 볼 수 있습니다:
- extension에 대한 사람이 읽을 수 있는 정보
- 필요한 권한 및 구성
- 간단한 "설치" 버튼
고급 기능
교차 플랫폼 지원
Extensions는 다른 운영 체제에 적응할 수 있습니다:
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"platforms": {
"win32": {
"command": "node.exe",
"env": {
"TEMP_DIR": "${TEMP}"
}
},
"darwin": {
"env": {
"TEMP_DIR": "${TMPDIR}"
}
}
}
}
}
동적 구성
런타임 값에 대한 템플릿 리터럴 사용:
- ${__dirname}: Extension의 설치 디렉토리
- ${user_config.key}: 사용자가 제공한 구성
- ${HOME}, ${TEMP}: 시스템 환경 변수
기능 선언
사용자가 기능을 미리 이해하도록 도와주세요:
"tools": [
{
"name": "read_file",
"description": "파일의 내용 읽기"
}
],
"prompts": [
{
"name": "code_review",
"description": "모범 사례를 위한 코드 검토",
"arguments": ["file_path"]
}
]
extension 디렉토리
우리는 Claude Desktop에 내장된 큐레이트된 extension 디렉토리로 시작합니다. 사용자는 한 번의 클릭으로 검색, 탐색 및 설치할 수 있습니다—GitHub를 검색하거나 코드를 검증할 필요가 없습니다.
Desktop Extension 사양과 Claude for macOS 및 Windows의 구현이 시간이 지남에 따라 발전할 것으로 예상하지만, extension이 창의적인 방식으로 Claude의 기능을 확장하는 데 사용될 수 있는 많은 방법을 보기를 기대합니다.
extension을 제출하려면:
- 제출 양식에서 찾을 수 있는 지침을 따르는지 확인하세요
- Windows와 macOS에서 테스트하세요
- extension 제출
- 우리 팀이 품질과 보안을 검토합니다
개방형 생태계 구축
우리는 MCP 서버 주변의 개방형 생태계에 전념하고 있으며 여러 애플리케이션과 서비스에서 보편적으로 채택될 수 있는 능력이 커뮤니티에 도움이 되었다고 믿습니다. 이러한 약속에 따라 Desktop Extension 사양, 툴체인, 그리고 Claude for macOS 및 Windows가 Desktop Extensions 자체 지원을 구현하는 데 사용하는 스키마와 주요 기능을 오픈 소스로 공개합니다. dxt 형식이 Claude뿐만 아니라 다른 AI 데스크톱 애플리케이션에서도 로컬 MCP 서버를 더 이식 가능하게 만들기를 바랍니다.
우리가 오픈 소스로 공개하는 것:
- 완전한 DXT 사양
- 패키징 및 유효성 검사 도구
- 참조 구현 코드
- TypeScript 타입 및 스키마
이것이 의미하는 것:
- MCP 서버 개발자를 위해: 한 번 패키징하면 DXT를 지원하는 모든 곳에서 실행
- 앱 개발자를 위해: 처음부터 구축하지 않고도 extension 지원 추가
- 사용자를 위해: 모든 MCP 지원 애플리케이션에서 일관된 경험
사양과 툴체인은 의도적으로 0.1로 버전이 지정되어 있으며, 더 큰 커뮤니티와 함께 형식을 발전시키고 변경하기를 기대합니다. 여러분의 의견을 듣기를 기대합니다.
보안 및 기업 고려 사항
extensions가 특히 기업에 새로운 보안 고려 사항을 도입한다는 것을 이해합니다. Desktop Extensions의 프리뷰 릴리스에 여러 안전 장치를 구축했습니다:
사용자를 위해
- 민감한 데이터는 OS 키체인에 유지
- 자동 업데이트
- 설치된 extension을 감사할 수 있는 기능
기업을 위해
- 그룹 정책(Windows) 및 MDM(macOS) 지원
- 승인된 extensions 사전 설치 기능
- 특정 extensions 또는 게시자 차단
- extension 디렉토리 완전히 비활성화
- 개인 extension 디렉토리 배포
조직 내에서 extensions를 관리하는 방법에 대한 자세한 내용은 문서를 참조하세요.
시작하기
자신만의 extension을 구축할 준비가 되셨나요? 시작하는 방법은 다음과 같습니다:
MCP 서버 개발자를 위해: 개발자 문서를 검토하거나 로컬 MCP 서버 디렉토리에서 다음 명령을 실행하여 바로 시작하세요:
npm install -g @anthropic-ai/dxt
dxt init
dxt pack
Claude Desktop 사용자를 위해: 최신 버전으로 업데이트하고 설정에서 Extensions 섹션을 찾으세요
기업을 위해: 배포 옵션에 대한 기업 문서를 검토하세요
Claude Code로 구축하기
Anthropic 내부에서 Claude가 최소한의 개입으로 extensions를 구축하는 데 뛰어나다는 것을 발견했습니다. Claude Code를 사용하고 싶다면 extension이 수행하기를 원하는 작업을 간략히 설명한 다음 프롬프트에 다음 컨텍스트를 추가하는 것이 좋습니다:
나는 이것을 Desktop Extension, 약어로 "DXT"로 구축하고 싶습니다. 다음 단계를 따르세요:
1. **사양을 철저히 읽으세요:**
- https://github.com/anthropics/dxt/blob/main/README.md - DXT 아키텍처 개요, 기능 및 통합 패턴
- https://github.com/anthropics/dxt/blob/main/MANIFEST.md - 완전한 extension manifest 구조 및 필드 정의
- https://github.com/anthropics/dxt/tree/main/examples - "Hello World" 예제를 포함한 참조 구현
2. **적절한 extension 구조 만들기:**
- MANIFEST.md 사양에 따라 유효한 manifest.json 생성
- 적절한 도구 정의와 함께 @modelcontextprotocol/sdk를 사용하여 MCP 서버 구현
- 적절한 오류 처리 및 시간 초과 관리 포함
3. **최선의 개발 관행 따르기:**
- stdio 전송을 통한 적절한 MCP 프로토콜 통신 구현
- 명확한 스키마, 유효성 검사 및 일관된 JSON 응답으로 도구 구조화
- 이 extension이 로컬에서 실행될 것이라는 사실 활용
- 적절한 로깅 및 디버깅 기능 추가
- 적절한 문서 및 설정 지침 포함
4. **테스트 고려 사항:**
- 모든 도구 호출이 적절하게 구조화된 응답을 반환하는지 확인
- manifest가 올바르게 로드되고 호스트 통합이 작동하는지 확인
즉시 테스트할 수 있는 완전한 프로덕션 준비 코드를 생성하세요. 방어적 프로그래밍, 명확한 오류 메시지, 생태계와의 호환성을 보장하기 위한 정확한 DXT 사양 준수에 집중하세요.
원본:
I want to build this as a Desktop Extension, abbreviated as "DXT". Please follow these steps:
1. **Read the specifications thoroughly:**
- https://github.com/anthropics/dxt/blob/main/README.md - DXT architecture overview, capabilities, and integration patterns
- https://github.com/anthropics/dxt/blob/main/MANIFEST.md - Complete extension manifest structure and field definitions
- https://github.com/anthropics/dxt/tree/main/examples - Reference implementations including a "Hello World" example
2. **Create a proper extension structure:**
- Generate a valid manifest.json following the MANIFEST.md spec
- Implement an MCP server using @modelcontextprotocol/sdk with proper tool definitions
- Include proper error handling and timeout management
3. **Follow best development practices:**
- Implement proper MCP protocol communication via stdio transport
- Structure tools with clear schemas, validation, and consistent JSON responses
- Make use of the fact that this extension will be running locally
- Add appropriate logging and debugging capabilities
- Include proper documentation and setup instructions
4. **Test considerations:**
- Validate that all tool calls return properly structured responses
- Verify manifest loads correctly and host integration works
Generate complete, production-ready code that can be immediately tested. Focus on defensive programming, clear error messages, and following the exact
DXT specifications to ensure compatibility with the ecosystem.
결론
Desktop Extensions는 사용자가 로컬 AI 도구와 상호 작용하는 방식의 근본적인 변화를 나타냅니다. 설치 마찰을 제거함으로써 강력한 MCP 서버를 개발자뿐만 아니라 모든 사람이 액세스할 수 있도록 만들고 있습니다.
여러분이 무엇을 만들지 기대됩니다. 수천 개의 MCP 서버를 가져온 동일한 창의성이 이제 단 한 번의 클릭으로 수백만 명의 사용자에게 도달할 수 있습니다. MCP 서버를 공유할 준비가 되셨나요? 검토를 위해 extension을 제출하세요.
아래 내용은 독자의 이해를 돕기 위해 공부하우가 추가한 설명입니다. 원문에는 없는 내용입니다.
주요 용어 설명
이 문서에서 사용된 주요 기술 용어들을 설명합니다:
개발 관련 용어
Model Context Protocol (MCP)
Claude가 외부 도구나 데이터 소스와 상호 작용할 수 있게 하는 프로토콜입니다. 이를 통해 Claude는 파일 시스템, 데이터베이스, API 등 다양한 로컬 리소스에 접근할 수 있습니다.
Desktop Extensions (.dxt 파일)
MCP 서버와 모든 의존성을 하나의 설치 가능한 패키지로 묶은 새로운 형식입니다. 사용자는 복잡한 설정 없이 더블클릭만으로 설치할 수 있습니다.
manifest.json
Extension의 메타데이터, 구성, 기능 등을 정의하는 핵심 파일입니다. 이 파일은 Claude Desktop이 extension을 어떻게 실행하고 관리해야 하는지 알려줍니다.
런타임 (Runtime)
프로그램을 실행하는 데 필요한 환경입니다. Node.js나 Python 같은 프로그래밍 언어 실행 환경을 의미합니다.
구성 관련 용어
의존성 (Dependencies)
프로그램이 작동하기 위해 필요한 다른 소프트웨어 패키지나 라이브러리들입니다. Desktop Extensions는 이러한 의존성을 모두 포함하여 별도 설치가 필요 없습니다.
템플릿 리터럴 (Template Literals)
$\{__dirname\}
, $\{user_config.api_key\}
같은 형식으로, 실행 시점에 실제 값으로 대체되는 변수입니다.
키체인 (Keychain)
운영 체제가 제공하는 안전한 비밀번호 저장소입니다. API 키 같은 민감한 정보를 암호화하여 보관합니다.
보안 관련 용어
그룹 정책 (Group Policy)
Windows에서 기업이 여러 컴퓨터의 설정을 중앙에서 관리할 수 있게 하는 기능입니다.
MDM (Mobile Device Management)
macOS를 포함한 Apple 기기들을 기업이 원격으로 관리할 수 있게 하는 시스템입니다.
오픈 소스 (Open Source)
소스 코드가 공개되어 누구나 사용, 수정, 배포할 수 있는 소프트웨어입니다. Desktop Extensions의 사양과 도구들이 오픈 소스로 제공됩니다.