{"slug": "plugin-extensions", "title": "Plugin Extensions", "summary": "OpenAI released MCP Extensions, a set of plugin extensions that let developers hook their plugins into ChatGPT surfaces including the sidebar, composer, and file viewers, with TypeScript and Python SDKs and a formal protocol specification published on GitHub. Plugin extensions on the web are coming soon to ChatGPT Free and Go users, existing plugin functionality is unaffected, and composer mentions are available only in the ChatGPT desktop app. The extensions cover sidebar apps, conversation panels, plugin settings, file viewers and editors, display modes, deep links, Model-App Context, composer mentions, and rich forms.", "body_md": "OpenAI MCP Extensions enables developers to hook their plugins into key surfaces of the ChatGPT user experience, including the sidebar, composer, and file viewers.\n\nPlugin extensions on the web are coming soon to ChatGPT Free and Go users. Existing plugin functionality is unaffected. Composer mentions are available only in the ChatGPT desktop app.\n\n## Try it out\n\nGet a feel for extensions with [Bits & Bolts](https://github.com/openai/mcp-extensions/tree/main/plugins/bits-and-bolts), our kitchen sink plugin. We’ll keep it up to date as new extensions roll out.\n\n## Start building\n\nUse the GitHub repository for installation, SDK examples, and the full specification.\n\n    [TypeScript SDK](https://github.com/openai/mcp-extensions/blob/main/typescript/README.md)        \n\nAdd extensions to your MCP server and app UI.\n\n    [Python SDK](https://github.com/openai/mcp-extensions/blob/main/python/README.md)        \n\nAdd server-side extensions with the MCP Python SDK.\n\n    [Protocol specification](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md)        \n\nDefines the formal, language-agnostic API that extends the MCP and MCP Apps specifications.\n\nOnce your server is ready, [connect and test your\nplugin](https://developers.openai.com/plugins/deploy/connect-chatgpt), then [package it for\ndistribution](https://developers.openai.com/plugins/build/plugins).\n\n## Extension reference\n\nExtensions give users new ways to interact with your plugin across ChatGPT. Declaring support for an extension takes just a few lines of SDK code.\n\n|  | Extension | What users can do | \n|---|---|---|\n|  | [Sidebar apps](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#global-entrypoint) | Give users a place to open your app from the sidebar and work in it fullscreen. | \n|  | [Conversation panels](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#thread-entrypoint) | Let users open your app beside a conversation, keeping their work and chat together. | \n|  | [Plugin settings](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#structured-settings) | Let users configure your plugin’s product-specific settings from within ChatGPT. | \n|  | [File viewers and editors](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#file-extension-entrypoint) | Open supported files in your own interface, with reading, live updates, and saving changes handled together. | \n|  | [Display modes](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#display-modes) | Choose where and how your app appears in ChatGPT conversations. | \n|  | [Deep links](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#deep-links) | Take users directly to a specific page or item within your sidebar app. | \n|  | [Model-App Context](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#uiupdate-model-context-extensions) | Keep ChatGPT and your MCP App in sync with bidirectional context sharing. | \n|  | [Composer mentions](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#composer-at-mentions) | Let users find and select content from your plugin in the ChatGPT desktop composer. | \n|  | [Rich forms](https://github.com/openai/mcp-extensions/blob/main/docs/spec.md#openai-form-elicitation) | Ask users for structured input or let them choose from images, then return their response to your tool. | \n\n### Sidebar apps\n\nAdd an entry to the global sidebar that launches your MCP App fullscreen.\n\nPass this metadata as `_meta` when registering your MCP App tool. Replace\n`ui://parts/library` with your registered UI resource URI:\n\n``` python\nimport type { OpenAIUiToolMetadata } from \"@openai/mcp-extensions/server\";\n\nconst toolMetadata = {\n  ui: { resourceUri: \"ui://parts/library\" },\n  \"openai/ui\": {\n    entrypoints: [{ type: \"global\" }],\n  } satisfies OpenAIUiToolMetadata,\n};\n```\n\nUse `{ type: \"thread\" }` to add an entrypoint in a conversation’s side panel.\nSee the [entrypoint guide](https://github.com/openai/mcp-extensions/blob/main/typescript/README.md#ui-entrypoints)\nfor full registration examples.\n\n### File viewers and editors\n\nOpen your MCP App in the thread side panel when a user opens a file with a supported extension.\n\nUse a file entrypoint in your tool’s `_meta`, with the extensions your viewer\nsupports:\n\n``` python\nimport type { OpenAIUiToolMetadata } from \"@openai/mcp-extensions/server\";\n\nconst toolMetadata = {\n  ui: { resourceUri: \"ui://parts/viewer\" },\n  \"openai/ui\": {\n    entrypoints: [{ type: \"file\", extensions: [\"stl\"] }],\n  } satisfies OpenAIUiToolMetadata,\n};\n```\n\nReplace `ui://parts/viewer` with your registered UI resource. The app receives a\nresource URI for the opened file. Follow the [file handler\nguide](https://github.com/openai/mcp-extensions/blob/main/typescript/README.md#file-extension-handlers)\nto receive that input and read the resource with the app SDK.\n\n### Rich forms\n\nExtend standard MCP forms with richer components native to ChatGPT.\n\n``` python\nimport type {\n  OpenAIForm,\n  OpenAIFormOption,\n} from \"@openai/mcp-extensions/server\";\n\nfunction partSelectionSchema(parts: OpenAIFormOption[]): OpenAIForm {\n  return {\n    type: \"object\",\n    properties: {\n      part: {\n        type: \"string\",\n        title: \"Part\",\n        oneOf: parts,\n      },\n    },\n    required: [\"part\"],\n  };\n}\n```\n\nPass this schema as `requestedSchema` in your form request. Each option uses\n`const` and `title`, with an optional `x-openai-thumbnail` icon.\nOpenAI-registered MCP servers require\n[multi-round-trip requests (MRTR)](https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr).\nThe SDK’s [extended forms guide](https://github.com/openai/mcp-extensions/blob/main/typescript/README.md#form-elicitation)\nshows the legacy `elicitInput` helper for direct MCP connections.\n\n## Extensions in the wild\n\nSee how plugins you already know are building with extensions.\n\n### Canva\n\n**Sidebar Tabs** enable Canva users to create designs and preview them\nas a native sidebar feature of ChatGPT.\n\n[View plugin](https://chatgpt.com/plugins/plugin_connector_68df33b1a2d081918778431a9cfca8ba)\n\n### Figma\n\n**Composer Mentions** enable Figma users to search for and mention files\ndirectly in the ChatGPT desktop app.\n\n[View plugin](https://chatgpt.com/plugins/plugin_connector_68df038e0ba48191908c8434991bbac2)\n\n### Adobe\n\n**File Extension Handlers** enable Adobe users to edit files with\nAcrobat and Photoshop directly in ChatGPT.\n\n[View plugin](https://chatgpt.com/plugins/plugin_asdk_app_69312da8e4dc81919370cb86fd172b6c)", "url": "https://wpnews.pro/news/plugin-extensions", "canonical_source": "https://developers.openai.com/plugins/build/extensions", "published_at": "2026-09-29 18:32:24+00:00", "updated_at": "2026-09-29 18:47:47.998312+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "developer-tools", "ai-products", "ai-tools"], "entities": ["OpenAI", "ChatGPT", "MCP Extensions", "Model Context Protocol", "TypeScript SDK", "Python SDK", "Bits & Bolts"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/plugin-extensions", "markdown": "https://wpnews.pro/news/plugin-extensions.md", "text": "https://wpnews.pro/news/plugin-extensions.txt", "jsonld": "https://wpnews.pro/news/plugin-extensions.jsonld"}}