새로운 운영 체제? ChatGPT의 앱 및 앱 SDK (MCP 기반): 새로운 플랫폼 잠금 해제

작성자: Boxu Li at Macaron
소개:
ChatGPT의 앱은 이제 서드파티 개발자들이 대화 인터페이스 내에 존재하는 인터랙티브 미니 애플리케이션을 구축할 수 있도록 허용합니다. 사용자를 웹사이트나 모바일 앱으로 보내는 대신, 이 앱들은 대화 내에서 실행되며 모델의 추론을 활용하여 작업을 수행합니다. Canva, Coursera, Expedia, Zillow와 같은 초기 파트너들은 사용자들이 플레이리스트를 요청하거나 포스터를 디자인하거나 부동산을 검색할 수 있는 방법을 ChatGPT 안에서 시연했습니다[1]. 새로운 Apps SDK는 모델이 외부 도구 및 사용자 인터페이스와 상호작용할 수 있도록 하는 개방형 표준인 **Model Context Protocol (MCP)**을 기반으로 구축되었습니다[2]. 이 블로그는 MCP 기반 앱의 아키텍처에 대해 깊이 있게 탐구하고, SDK의 기능을 설명하며, 앱을 단계별로 구축하는 과정을 안내하고, 사용자가 앱을 발견하고 사용하는 방법을 탐구하며, 개인정보 보호 및 보안 고려 사항에 대해 논의합니다. 전반에 걸쳐 공식 문서와 신뢰할 수 있는 저널리즘을 인용하여 분석을 신뢰할 수 있는 출처에 근거합니다.
모델 컨텍스트 프로토콜 (MCP) 이해하기
개방형 표준이 중요한 이유
앱 SDK의 기초는 모델 컨텍스트 프로토콜입니다. 개발자 문서에 따르면, 모든 앱 SDK 통합은 MCP 서버를 사용하여 도구를 노출하고, 인증을 처리하며, 구조화된 데이터와 HTML을 패키징하여 ChatGPT에 렌더링합니다[2]. MCP는 오픈 표준으로, 누구나 어떤 언어로든 서버를 구현하여 GPT-4나 Codex와 같은 모델에 연결할 수 있습니다. 오픈 소스 특성은 공급업체 종속이 없음을 의미하며, 동일한 앱이 MCP 프로토콜을 구현하는 AI 플랫폼에서 이론적으로 실행될 수 있습니다. 이러한 개방성은 커뮤니티 기여를 장려하고, HTTP와 같은 표준이 상호운용 가능한 웹사이트를 가능하게 했던 초기 웹과 유사한 생태계를 조성합니다.
서버, 도구 및 리소스
MCP 서버는 하나 이상의 도구를 노출합니다. 도구는 모델이 호출할 수 있는 작업을 정의하며, 예를 들어 “칸반 보드 생성,” “주택 검색,” “플레이리스트 생성” 등이 있습니다. 각 도구는 기계 이름, 사람이 이해하기 쉬운 제목, 모델이 수락하는 인수를 설명하는 JSON 스키마로 설명됩니다. ChatGPT가 도구 호출을 결정하면, 서버에 구조화된 호출을 보냅니다. 서버는 API 쿼리, 계산 수행 또는 데이터베이스와의 상호작용을 통해 로직을 실행한 후 도구 응답을 반환합니다. 이 응답에는 세 가지 필드가 포함됩니다:
- structuredContent – 모델에게 현재 상태를 설명하는 데이터를 나타냅니다. 예를 들어, 칸반 보드는 열과 작업 배열을 포함할 수 있습니다[3].
- content – 사용자가 들을 수 있는 선택적 텍스트입니다. 결과를 요약하거나 사용자를 안내할 수 있습니다.
- _meta – 모델이 볼 수 없는 숨겨진 메타데이터입니다. 개발자는 UI 구성 요소에서 사용되는 ID나 목록을 저장하는 데 이를 사용합니다. 예를 들어, 보드 예제에서는 _meta에서 tasksById 맵을 사용하여 작업 세부 정보를 모델에 노출하지 않고 유지합니다[4].
도구는 ui:// URL을 참조하여 HTML 템플릿이나 이미지와 같은 리소스를 참조할 수도 있습니다. 서버는 시작 시 이러한 리소스를 등록합니다. 문서에서는 리소스가 OpenAI의 인프라에 의해 캐시되기 때문에 개발자가 파일 이름에 빌드 해시를 포함하여 버전을 관리해야 한다고 경고합니다[5]. 그렇지 않으면 배포 후 사용자가 오래된 UI를 볼 수 있습니다.
구조화된 콘텐츠와 메타데이터
structuredContent와 _meta의 구분은 매우 중요합니다. 문서에 따르면, structuredContent는 모델에 노출되며 UI 구성 요소를 활성화하는 데 사용됩니다. 반면, _meta는 모델에서 숨겨져 있으며 드롭다운 메뉴와 같은 UI를 위한 추가 데이터를 포함할 수 있습니다[3]. 가시 데이터와 숨겨진 데이터를 분리함으로써 개발자는 민감한 정보를 모델로부터 보호하면서도 풍부한 인터페이스를 제공할 수 있습니다. 이러한 설계는 또한 최소한의 데이터 공유를 장려합니다. 작업을 완료하는 데 필요한 데이터만 노출되어 개인정보 보호 원칙과 일치합니다.
인증과 세션
사용자가 앱을 처음 호출할 때 서버는 사용자를 인증해야 할 수 있습니다. Apps SDK는 OAuth 2.1 흐름을 지원하며, 개발자는 범위를 지정하고 사용자를 신원 제공자로 리디렉션합니다. 사용자가 동의하면 앱은 토큰을 얻고 사용자의 데이터에 접근할 수 있습니다. 서버의 역할은 종종 사용자의 ChatGPT 계정에 키된 데이터베이스에 토큰을 저장하여 세션 상태를 관리하는 것입니다. 이를 통해 후속 도구 호출 시 사용자를 다시 묻지 않고 세션을 재사용할 수 있습니다.
보안 원칙
OpenAI는 최소 권한, 명시적 사용자 동의, 심층 방어를 강조합니다[6]. 앱은 필요한 최소 권한만 요청해야 하며, 사용자는 데이터 공유를 명시적으로 승인해야 합니다. 모델 자체는 절대 자격 증명을 추측해서는 안 됩니다. 데이터 보존은 제한적입니다: 구조화된 콘텐츠는 사용자의 프롬프트가 활성 상태일 때만 유지되며, 로그는 개발자와 공유되기 전에 수정됩니다[6]. 앱 구성 요소에 대한 네트워크 접근은 콘텐츠 보안 정책에 의해 제한되며, iframe은 임의의 브라우저 API에 접근할 수 없고 모든 HTTP 요청은 클라이언트가 아닌 서버에서 시작되어야 합니다[7]. 이는 교차 사이트 스크립팅과 토큰 유출을 방지합니다.
앱 SDK: ChatGPT에서 실제 애플리케이션 구축하기

개발자 경험
Apps SDK는 MCP를 관용적인 클라이언트 라이브러리(현재 Python 및 TypeScript)와 스캐폴딩 도구로 감쌉니다. 앱을 만들 때 도구를 정의하고, UI 템플릿을 등록하며, 서버 로직을 구현합니다. 서버는 자체 인프라에서 실행될 수 있으며, 어떤 프레임워크(FastAPI, Express 등)도 사용할 수 있지만, MCP 엔드포인트를 구현해야 합니다. OpenAI는 개발 서버와 로컬에서 호출을 테스트할 수 있는 MCP Inspector를 제공합니다.
개발자는 로직과 사용자 인터페이스를 모두 설계합니다. UI는 일반적으로 React로 작성되어 정적 자원으로 컴파일됩니다. 이들은 ChatGPT의 샌드박스된 iframe 내에서 제공됩니다. 이 iframe 내에서 개발자는 호스트와 상호작용하기 위해 전역 window.openai 객체에 접근할 수 있습니다. 맞춤 UX 구축 가이드에 따르면, 이 API는 다음을 제공합니다:
- 전역 변수 – displayMode, maxHeight, theme 및 locale은 컴포넌트에 레이아웃 및 스타일에 대한 정보를 제공합니다[8].
- 툴 페이로드 – toolInput, toolOutput 및 widgetState는 렌더링 간에 인수, 결과 및 지속 상태를 읽을 수 있도록 합니다[8].
- 액션 – setWidgetState()는 메시지 간에 지속되는 상태를 저장합니다; callTool()은 서버 동작을 트리거합니다; sendFollowupTurn()은 모델에 후속 프롬프트를 보냅니다; requestDisplayMode()는 전체 화면 또는 PIP 모드로 전환을 요청합니다[8].
- 이벤트 – 컴포넌트는 호스트가 레이아웃이나 테마를 업데이트할 때 openai:set_globals에, 그리고 툴 호출이 해결될 때 openai:tool_response에 구독할 수 있습니다[8].
이 API를 통해 개발자는 모델의 추론과 동기화되는 풍부한 대화형 컴포넌트를 구축할 수 있습니다. 예를 들어, 사용자가 칸반 보드에서 작업을 새 열로 끌어오면, 컴포넌트는 서버 업데이트를 위해 callTool을 보내고, 새로운 상태를 지속시키며, 그런 다음 새로운 structuredContent를 반환할 수 있습니다. 이때 모델은 고수준의 보드 상태만을 보고, UI는 드래그 앤 드롭과 같은 세부사항을 처리합니다.
도구 및 템플릿 등록
In the server code you register a tool and its template. For instance, in a TypeScript server you might write:
import { Tool, StructuredToolResponse } from "@openai/apps";
// Register UI template
server.registerResource("ui://kanban-board/abc123", buildHtml());
// Define tool schema
const createBoard: Tool = {
name: "createKanbanBoard",
description: "Create a new kanban board with given tasks and columns",
inputSchema: z.object({
title: z.string(),
columns: z.array(z.object({ name: z.string() })),
tasks: z.array(z.object({ name: z.string(), columnIndex: z.number() }))
}),
async execute(input, ctx): Promise<StructuredToolResponse> {
// compute board state
const columns = input.columns.map((col, i) => ({
id: i,
title: col.name,
taskIds: input.tasks.filter(t => t.columnIndex === i).map((_t, idx) => idx)
}));
const tasksById = input.tasks.map((task, id) => ({ id, name: task.name }));
return {
content: `Created board '${input.title}'`,
structuredContent: { title: input.title, columns },
_meta: { tasksById, uiTemplate: "ui://kanban-board/abc123" }
};
}
};
The _meta field includes tasksById for hidden metadata and uiTemplate referencing the registered HTML. When ChatGPT receives this response, it will render the template with the structured content. The window.openai.toolOutput object in the component can then read the board data and display it.
버전 관리 및 캐싱
UI 템플릿 같은 리소스가 OpenAI의 서버에 캐싱되기 때문에 개발자는 ui:// 식별자에 고유한 해시나 버전을 포함해야 합니다. 문서에서는 경로를 업데이트하지 않고 새 버전을 배포하면 캐싱으로 인해 사용자가 이전 UI를 계속 볼 수 있다고 경고합니다[5]. 모범 사례로는 커밋 SHA나 빌드 ID를 URL에 삽입하는 것이 있습니다. 이렇게 하면 각 배포가 새로운 리소스를 가져오도록 보장합니다.
상태 유지 및 후속 조치
컴포넌트는 종종 상태를 유지해야 합니다. 예를 들어, 플레이리스트 앱은 사용자가 노래를 즐겨찾기에 추가할 수 있도록 할 수 있으며, 이러한 즐겨찾기는 사용자가 다른 질문을 할 때에도 유지되어야 합니다. setWidgetState() 메서드는 structuredContent 외부에 데이터를 저장하고 여러 턴에 걸쳐 지속됩니다[8]. 모델은 이 상태를 보지 않으므로 개인정보가 보호됩니다.
때때로 앱은 사용자에게 명확한 질문을 해야 할 필요가 있습니다. sendFollowupTurn() 메서드는 컴포넌트가 새로운 프롬프트를 ChatGPT로 다시 보낼 수 있게 하여 모델이 질문한 것처럼 대화 내용에 나타나게 합니다[8]. 이것은 다단계 워크플로우에 유용합니다. 예를 들어, 여행 예약 앱은 사용자가 호텔을 선택한 후 "몇 박을 머무르실 건가요?"라고 물을 수 있습니다.
Building Your First App: Step‑By‑Step Guide
In this section we will build a simple Task Tracker app that demonstrates the core concepts of the Apps SDK. The app will let a user create tasks and organise them into categories. We choose this example because it is generic, easy to extend and showcases structured content, metadata, custom UI and tool calls.
- Set up the MCP Server
First install the TypeScript SDK and scaffolding tool:
npm install -g @openai/apps-generator
apps init task-tracker
cd task-tracker
npm install
This command scaffolds a project with a server, a React frontend and build scripts. The server uses Express and the @openai/apps library. Run npm run dev to start the development server; the project includes an MCP Inspector that opens in your browser and simulates ChatGPT calling your app.
- Define the Tool
Open src/server.ts and define a tool called createTasks. The tool accepts an array of tasks and returns structured content grouping them by category. It also provides a summary in the content field.
import { Tool, StructuredToolResponse } from "@openai/apps";
export const createTasks: Tool = {
name: "createTasks",
description: "Create a list of tasks grouped by category",
inputSchema: z.object({ tasks: z.array(z.object({ name: z.string(), category: z.string() })) }),
async execute({ tasks }): Promise<StructuredToolResponse> {
const categories = Array.from(new Set(tasks.map(t => t.category)));
const grouped = categories.map(category => ({
name: category,
taskIds: tasks.filter(t => t.category === category).map((_, i) => i)
}));
const tasksById = tasks.map((task, id) => ({ id, name: task.name, category: task.category }));
return {
content: `Created ${tasks.length} tasks in ${categories.length} categories`,
structuredContent: { categories: grouped },
_meta: { tasksById, uiTemplate: "ui://task-tracker/1.0.0" }
};
}
};
Register the template before using it:
server.registerResource("ui://task-tracker/1.0.0", fs.readFileSync(path.join(__dirname, "../dist/index.html"), "utf8"));
server.registerTool(createTasks);
- Build the Custom UI
Next open src/frontend/App.tsx. This React component will read the structuredContent and display categories and tasks. It will also allow users to mark tasks as complete and persist that state using setWidgetState.
import { useEffect, useState } from "react";
declare global {
interface Window {
openai: any;
}
}
export default function App() {
const [complete, setComplete] = useState<{ [id: string]: boolean }>(() => window.openai.widgetState?.complete || {});
const output = window.openai.toolOutput;
const tasksById = output?._meta?.tasksById || [];
const categories = output?.structuredContent?.categories || [];
// persist completion state
useEffect(() => {
window.openai.setWidgetState({ complete });
}, [complete]);
return (
<div className="task-tracker">
{categories.map((cat: any, ci: number) => (
<div key={ci} className="category">
<h3>{cat.name}</h3>
<ul>
{cat.taskIds.map((tid: number) => (
<li key={tid}>
<label>
<input type="checkbox" checked={complete[tid]} onChange={() => setComplete(prev => ({ ...prev, [tid]: !prev[tid] }))} />
{tasksById[tid].name}
</label>
</li>
))}
</ul>
</div>
))}
</div>
);
}
This component uses window.openai.toolOutput to access the structuredContent and _meta fields. It stores completion state in widgetState so that checking a box persists even when the user continues the conversation. On subsequent tool calls, the component can fetch new tasks or update existing ones. This demonstrates how to combine model reasoning with client‑side interactions.
- Testing and Iterating
Run npm run dev again and open the MCP Inspector. In the prompt area, type:
@task‑tracker create a list of tasks: buy milk in shopping, finish report in work, call mom in personal
The inspector will show the structured content and render the task list UI. You can check tasks off; the state persists across turns. You can then ask ChatGPT: “Remind me of my tasks later.” Because the model retains context, it can call the tool again, display the UI and summarise your progress.
How Users Discover and Use Apps

Named Mention and In‑Conversation Discovery
ChatGPT surfaces apps when it believes they can assist the user. There are two primary discovery modes. Named mention occurs when the user explicitly mentions the app name at the beginning of a prompt; in this case, the app will be surfaced automatically[9]. For instance, “@Spotify create a workout playlist” immediately invokes the Spotify integration. The user must place the app name at the start; otherwise the assistant may treat it as part of the conversation.
In‑conversation discovery happens when the model infers that an app could help based on context. The documentation explains that the model evaluates the conversation context, prior tool results and the user’s linked apps to determine which app might be relevant[9]. For example, if you are discussing travel plans, ChatGPT might suggest the Expedia app to book flights. The algorithm uses metadata like tool descriptions and keywords to match the conversation with potential actions[10]. Developers can improve discoverability by writing action‑oriented descriptions and clear UI component names.
Directory and Launcher
OpenAI plans to release an app directory where users can browse and discover new apps[10]. Each listing will include the app name, description, supported prompts and any onboarding instructions. Users can also access the launcher via the “+” button in chat; this shows a menu of available apps based on context. These entry points will help less technical users find and enable apps without memorising names.
Onboarding and Consent
사용자가 앱을 처음 활성화할 때 ChatGPT는 온보딩 흐름을 시작합니다. 모델은 사용자가 계정을 연결하도록 요청(필요한 경우)하고 앱이 필요한 데이터를 설명합니다. 개발자 지침에서는 앱이 사용자의 프라이버시를 존중하고 예측 가능하게 행동하며 명확한 정책을 가져야 한다고 강조합니다[11]. 사용자는 명시적으로 권한을 부여하거나 거부해야 하며, 숨겨진 데이터 접근은 없습니다. 연결되면 앱은 이후 상호작용을 위해 연결된 상태를 유지할 수 있지만, 사용자는 언제든지 연결을 끊고 권한을 취소할 수 있습니다.
개인정보 보호, 보안 및 책임 있는 설계
신뢰할 수 있는 앱의 원칙
OpenAI의 앱 개발자 가이드라인은 생태계의 안전성과 신뢰성을 보장하기 위해 여러 원칙을 정의하고 있습니다. 앱은 합법적인 서비스를 제공하고, 명확한 개인정보 보호정책과 데이터 보존 방침을 가지고 있어야 하며, 사용 정책을 준수해야 합니다[11]. 데이터 수집을 최소화하고, 민감한 개인 정보를 저장하지 않으며, 사용자 동의 없이 데이터를 공유하지 않아야 합니다[12]. 앱은 예측 가능한 방식으로 작동해야 하며, 해롭거나 오해의 소지가 있는 콘텐츠를 생산하도록 모델을 조작해서는 안 됩니다.
데이터 경계와 최소화
지침에서는 앱이 기능에 필수적인 데이터만 수집해야 하며 건강 기록이나 정부 ID와 같은 민감한 데이터를 요청하거나 저장해서는 안 된다고 강조합니다[12]. 모델에 전송되는 구조화된 콘텐츠는 비밀 정보를 포함해서는 안 되며, 숨겨진 메타데이터는 사용자 토큰이나 개인 정보를 저장해서는 안 됩니다. 개발자는 OAuth 중에 획득한 모든 토큰에 대해 강력한 암호화 및 안전한 저장을 구현해야 합니다. 서버는 사용자 세션 간에 엄격한 경계를 유지해야 하며, 한 사용자의 데이터가 다른 사용자의 컨텍스트로 절대 유출되어서는 안 됩니다.
SDK의 보안 조치
플랫폼에 내장된 방어 메커니즘을 설명하는 보안 및 개인정보 보호 가이드는 최소 권한과 명시적 사용자 동의를 핵심 원칙으로 강조합니다[6]. 데이터 보유는 제한되며, 개발자가 접근할 수 있는 로그는 개인 식별 정보를 제거하기 위해 수정됩니다. 구조화된 콘텐츠는 프롬프트가 요구하는 동안에만 유지됩니다[6]. iframe 내에서의 네트워크 접근은 콘텐츠 보안 정책에 의해 제한되며, 외부 요청은 서버를 통해 이루어져야 하며, 이를 통해 무단 교차 출처 요청을 방지합니다[7]. 인증은 짧은 수명의 토큰을 사용하는 업계 표준 OAuth 흐름을 사용합니다. 개발자는 운영 준비 상태를 유지하기 위해 보안 검토, 버그 보고 채널 및 사고 모니터링을 구현해야 합니다[7].
공정성과 적절성
앱은 다양한 청중에게 적합해야 합니다. 가이드라인은 장문의 콘텐츠, 복잡한 자동화 또는 광고를 제공하는 앱을 금지합니다[13]. 예를 들어, 앱은 30분짜리 비디오를 제공하거나 ChatGPT 내에 전체 소셜 네트워크를 복제하려고 해서는 안 됩니다. 플랫폼은 대화의 흐름을 보완하는 간결한 상호작용을 권장합니다. 위반 시 거부 또는 제거될 수 있습니다.
기회와 고려사항
개발자를 위한 새로운 배포 채널
ChatGPT를 서드파티 앱에 개방함으로써 OpenAI는 사용자와 서비스 사이의 '의도 레이어'로 자리매김하고 있습니다. 개발자들은 이제 별도의 웹이나 모바일 앱을 구축하지 않고도 채팅 인터페이스를 통해 수백만 명의 사용자에게 도달할 수 있습니다. 앱은 마찰을 줄일 수 있는 잠재력을 가지고 있습니다: 앱을 다운로드하거나 웹사이트를 방문하는 대신, 사용자는 대화 중에 서비스를 언급하기만 하면 됩니다. 이는 도구에 대한 접근을 민주화하고 소규모 개발자에게 기회를 평등하게 제공할 수 있습니다.
초기 파트너십은 가능성을 보여줍니다: 사용자는 Coursera 강의를 시청하면서 ChatGPT에 질문을 할 수 있고, Canva에서 포스터를 디자인하거나, Expedia에서 여행 옵션을 찾아보거나 Zillow 부동산 목록을 탐색할 수 있습니다. Spotify 재생목록을 생성하거나 Figma로 아이디어를 다이어그램으로 표현할 수도 있습니다[14][13]. 앱이 채팅 내에서 실행되기 때문에 모델은 요약, 분석 및 추천을 생성하여 정적인 콘텐츠를 대화형 수업으로 전환할 수 있습니다. 앱은 또한 인라인 카드, 전체 화면 또는 화면 속 화면과 같은 다양한 표시 모드를 제공하여 다양한 작업에 대한 유연성을 제공합니다[15].
사용자 기대의 변화
맥락을 전환하지 않고 앱을 사용할 수 있는 능력은 사람들이 서비스와 상호작용하는 방식을 재구성할 수 있습니다. ChatGPT는 단순한 챗봇이 아닌 의도를 위한 범용 운영 체제가 됩니다. 케이시 뉴턴이 관찰한 바와 같이, 이는 개별 앱을 실행하는 것이 아니라 우리가 원하는 것을 간단히 말하는 것으로 옮겨갑니다[16]. 일부 분석가들은 이 변화를 앱 스토어나 브라우저 출시와 비교합니다: 기능과 경쟁을 집계하는 단일 플랫폼입니다.
그러나 이러한 변화는 통제와 권력에 대한 의문을 제기합니다. ChatGPT가 어떤 앱을 표시할지 결정한다면, 이는 게이트키퍼가 될 수 있습니다. 뉴턴은 사용자 선호도에 기반한 'AI 그래프'가 소셜 네트워크보다 심각한 개인정보 위험을 초래할 수 있다고 경고합니다[16]. 경제적 인센티브는 앱의 유료 배치 또는 순위 매김을 초래할 수 있습니다. 개발자들은 사용자와의 관계를 소유하는 대신 ChatGPT를 위해 설계해야 한다는 압박을 받을 수 있습니다. 플랫폼이 투명하고 공정하게 유지되어 신뢰를 유지하는 것이 중요합니다.
규제 및 윤리적 함의
앱이 개인 데이터에 접근할 수 있기 때문에—위치, 연락처, 결제 방법—규제 기관은 데이터가 ChatGPT를 통해 어떻게 흐르는지를 면밀히 조사할 수 있습니다. 개발자는 플랫폼이 아직 유럽 연합에서 사용 가능하지 않더라도 GDPR과 같은 개인정보 보호법을 준수해야 합니다[17]. OpenAI는 더 세분화된 개인정보 보호 제어 및 수익화 옵션을 약속했으며, 여기에는 채팅 내 즉시 결제가 가능한 에이전틱 상거래 프로토콜이 포함됩니다[18]. 이 생태계의 성공은 강력한 보안, 명확한 사용자 동의 및 공정한 경제 모델에 달려 있습니다.
향후 방향 및 연구
Apps SDK는 아직 미리 보기 상태에 있으며, 많은 기능이 완전히 구현되지 않았습니다. 개발자 로드맵에는 다음이 포함됩니다:
- 제출 및 검토 워크플로 – 현재 개발자들은 앱을 만들 수 있지만 공공적으로 목록에 올릴 수 없습니다. 공식적인 검토 과정이 지침 준수와 신뢰를 보장할 것입니다.
- 수익 공유 및 수익화 – OpenAI는 사용자가 채팅에서 직접 상품을 구매할 수 있는 에이전트 상거래 프로토콜을 암시했습니다[18]. 이는 전자상거래의 기회를 제공하지만 수수료, 순위, 경쟁에 대한 질문도 제기합니다.
- 개발자 도구 – 더 많은 언어와 프레임워크, 개선된 디버깅 도구, 더 쉬운 배포 파이프라인이 진입 장벽을 낮출 것입니다. MCP의 개방 표준 특성은 커뮤니티 주도 구현과 호스팅 제공업체로 이어질 수 있습니다.
- 상호 운용성 – MCP가 개방되어 있기 때문에 다른 플랫폼이나 모델들이 이를 채택할 수 있습니다. 이는 개발자가 한 번 작성하면 어디서나 실행할 수 있는 크로스 모델 앱 생태계를 가능하게 할 수 있습니다. 에이전트 프로토콜 및 컨텍스트 공유 표준화를 위한 연구가 중요할 것입니다.
- 안전 연구 – 프롬프트 주입, 악성 코드 또는 사용자 데이터 오용을 방지하는 방법을 평가하는 것은 주요 연구 분야로 남아 있습니다. LLM 통합 애플리케이션에 대한 적대적 공격에 관한 논문이 모범 사례 및 지침을 제공할 것입니다.
결론: 새로운 OS의 형성 중
ChatGPT에서 앱과 MCP 기반 앱 SDK의 도입은 소프트웨어와 상호작용하는 방식에 큰 변화를 가져왔습니다. OpenAI는 자연어, 추론 및 인터랙티브 UI를 결합한 새로운 플랫폼을 만들어 채팅 인터페이스에 서드파티 애플리케이션을 직접 도입했습니다. 모델 컨텍스트 프로토콜은 모델이 도구를 호출하고 구성 요소를 렌더링할 수 있는 개방적이고 표준화된 방법을 제공합니다. 앱 SDK는 서버 통신, UI 통합 및 상태 관리를 처리하여 개발을 간소화합니다. 작업 추적기와 같은 단계별 예제는 엄격한 데이터 경계와 프라이버시를 유지하면서 유용한 앱을 쉽게 구축할 수 있음을 보여줍니다.
그러나 이러한 혁신에는 책임이 따릅니다. 개발자는 사용자 프라이버시, 안전 및 공정성을 우선시하는 지침을 따라야 합니다[11][12]. 최소 권한 및 명시적 동의와 같은 보안 메커니즘은 사용자를 보호합니다[6]. 동시에, 업계 관찰자들은 이 플랫폼이 새로운 형태의 게이트키핑과 프라이버시 위험을 초래할 수 있다고 경고합니다[16]. 생태계가 성숙해짐에 따라 투명성, 개방형 표준 및 커뮤니티 참여가 ChatGPT의 앱 플랫폼이 일상 업무를 위한 혁신적이고 신뢰할 수 있는 계층으로 자리 잡을지 여부를 결정할 것입니다.
[1] AI 기술 경쟁 최신: ChatGPT, 이제 사용자들이 Spotify 및 Zillow와 채팅으로 연결할 수 있게 했습니다.
https://developers.openai.com/apps-sdk/build/mcp-server
https://developers.openai.com/apps-sdk/guides/security-privacy
[8] 맞춤형 UX 구축하기
https://developers.openai.com/apps-sdk/build/custom-ux
https://developers.openai.com/apps-sdk/concepts/user-interaction
https://developers.openai.com/apps-sdk/app-developer-guidelines/
[13] ChatGPT 앱이 출시되었습니다: 여기에서 시도해볼 수 있는 첫 번째 앱들 | The Verge
https://www.theverge.com/news/793081/chagpt-apps-sdk-spotify-zillow-openai
[14] OpenAI 개발자 데이 2025: ChatGPT가 앱, 개발자를 위한 AgentKit, 저렴한 GPT 모델을 받다
[15] OpenAI, ChatGPT가 Zillow, Canva, Spotify와 같은 타사 앱을 실행할 수 있도록 하는 앱 SDK 발표 | VentureBeat
https://venturebeat.com/ai/openai-announces-apps-sdk-allowing-chatgpt-to-launch-and-run-third-party
[16] 새로운 플랫폼, 익숙한 위험: Zillow와 Expedia, OpenAI의 ChatGPT 앱 출시를 믿다 – GeekWire
[17] 오픈AI DevDay: ChatGPT 앱, 에이전트킷, 그리고 Codex의 GA 출시 - SD 타임스
https://sdtimes.com/ai/openai-devday-chatgpt-apps-agentkit-and-ga-release-of-codex/
[18] 오픈AI는 ChatGPT를 범용 앱 프런트엔드로 만들고 싶어합니다 - Ars Technica
https://arstechnica.com/ai/2025/10/openai-wants-to-make-chatgpt-into-a-universal-app-frontend/










