개발자는 OpenAI MCP Extensions를 사용해 사이드바, Composer, 파일 뷰어 등 ChatGPT의 주요 화면에 플러그인을 통합할 수 있습니다.
ChatGPT Free 및 ChatGPT Go 사용자도 곧 웹에서 플러그인 확장 프로그램을 사용할 수 있습니다. 기존 플러그인 기능은 그대로 사용할 수 있습니다. Composer 멘션은 ChatGPT 데스크톱 앱에서만 사용할 수 있습니다.
직접 사용해 보기
다양한 확장 프로그램 예제를 한데 모은 플러그인 Bits & Bolts로 각 기능을 직접 살펴보세요. 새로운 확장 프로그램이 출시될 때마다 예제도 업데이트합니다.
개발 시작하기
GitHub 리포지터리에서 설치 방법, SDK 예제, 전체 명세를 확인하세요.
MCP 서버와 앱 UI에 확장 프로그램을 추가하세요.
MCP Python SDK로 서버 측 확장 프로그램을 추가하세요.
MCP 및 MCP Apps 명세를 확장하는 API를 특정 프로그래밍 언어에 구애받지 않는 형태로 정의한 공식 명세입니다.
서버가 준비되면 플러그인을 연결하고 테스트한 다음 배포용으로 패키징하세요.
확장 프로그램 레퍼런스
확장 프로그램을 사용하면 사용자가 ChatGPT 곳곳에서 새로운 방식으로 플러그인을 사용할 수 있습니다. SDK 코드 몇 줄이면 플러그인이 지원하는 확장 프로그램을 선언할 수 있습니다.
| 확장 프로그램 | 사용자가 할 수 있는 일 | |
|---|---|---|
| 사이드바 앱 | 사이드바에서 앱을 열고 전체 화면으로 작업할 수 있습니다. | |
| 대화 패널 | 대화 옆에 앱을 열어 작업과 채팅을 한 화면에서 이어갈 수 있습니다. | |
| 플러그인 설정 | ChatGPT 안에서 플러그인 고유의 설정을 변경할 수 있습니다. | |
| 파일 뷰어 및 편집기 | 플러그인의 인터페이스에서 지원되는 파일을 열어 내용을 읽고, 실시간 업데이트를 확인하고, 변경 사항을 저장할 수 있습니다. | |
| 표시 모드 | ChatGPT 대화에서 앱을 표시할 위치와 방식을 선택할 수 있습니다. | |
| 딥 링크 | 사이드바 앱의 특정 페이지나 항목으로 바로 이동할 수 있습니다. | |
| 모델 컨텍스트 확장 | 주석을 제어하고 첨부된 컨텍스트가 Composer에 표시되는 방식을 지정할 수 있습니다. | |
| 메시지 전송 기능 확장 | 현재 대화에 메시지를 보낼 수 있습니다. 데스크톱 앱을 사용하거나 웹에서 Work를 사용할 때는 새 대화에도 메시지를 보낼 수 있습니다. | |
| Composer 멘션 | ChatGPT 데스크톱 앱의 Composer에서 플러그인의 콘텐츠를 찾아 선택할 수 있습니다. | |
| 확장 양식 | 사용자에게 구조화된 입력을 요청하거나 여러 이미지 중에서 선택하도록 한 뒤 응답을 도구로 반환할 수 있습니다. | |
| 플러그인 온보딩 | 새 대화나 기존 대화에서 안내에 따라 플러그인을 설정할 수 있습니다. |
사이드바 앱
전역 사이드바에 MCP App을 전체 화면으로 여는 항목을 추가하세요.
MCP App 도구를 등록할 때 다음 메타데이터를 _meta로 전달하세요. ui://parts/library는 등록한 UI 리소스의 URI로 바꾸세요.
import type { OpenAIUiToolMetadata } from "@openai/mcp-extensions/server";
const toolMetadata = {
ui: { resourceUri: "ui://parts/library" },
"openai/ui": {
entrypoints: [{ type: "global" }],
} satisfies OpenAIUiToolMetadata,
};
{ type: "thread" }를 사용하면 대화의 측면 패널에 진입점을 추가할 수 있습니다. 전체 등록 예제는 진입점 가이드를 참고하세요.
파일 뷰어 및 편집기
사용자가 지원되는 확장자의 파일을 열면 대화 스레드의 측면 패널에서 MCP App이 열리도록 설정하세요.
도구의 _meta에 파일 진입점을 추가하고 뷰어가 지원하는 파일 확장자를 지정하세요.
import type { OpenAIUiToolMetadata } from "@openai/mcp-extensions/server";
const toolMetadata = {
ui: { resourceUri: "ui://parts/viewer" },
"openai/ui": {
entrypoints: [{ type: "file", extensions: ["stl"] }],
} satisfies OpenAIUiToolMetadata,
};
ui://parts/viewer를 등록한 UI 리소스의 URI로 바꾸세요. 앱은 사용자가 연 파일의 리소스 URI를 받습니다. 이 URI를 입력으로 받아 앱 SDK로 리소스를 읽는 방법은 파일 핸들러 가이드를 참고하세요.
확장 양식
ChatGPT에서 기본으로 제공하는 컴포넌트로 표준 MCP 양식에 더 다양한 입력 기능을 추가하세요.
import type {
OpenAIForm,
OpenAIFormOption,
} from "@openai/mcp-extensions/server";
function partSelectionSchema(parts: OpenAIFormOption[]): OpenAIForm {
return {
type: "object",
properties: {
part: {
type: "string",
title: "Part",
oneOf: parts,
},
},
required: ["part"],
};
}양식 요청에서 이 스키마를 requestedSchema로 전달하세요. 각 옵션에는 const와 title을 사용하며, 필요하면 x-openai-thumbnail 아이콘을 추가할 수 있습니다. OpenAI에 등록된 MCP 서버에서는 다중 왕복 요청(MRTR)이 필요합니다.
확장 프로그램 활용 사례
익숙한 플러그인들이 확장 프로그램을 어떻게 활용하는지 살펴보세요.