OpenAI MCP Extensions allows you to create custom file viewers within ChatGPT desktop, alongside the conversation.
Announced at DevDay on September 29, 2026, these extensions also include sidebar entrypoints and other ways to open a plugin interface. A good starting point is small: open a supported file type, display its content, and keep the original intact. DevDay Announcement.
Think of a product that already interprets CAD files. Integrating it into ChatGPT lets you inspect the geometry while discussing a change. The plugin provides the viewer and the conversation accompanies the work.
What are ChatGPT Plugin Extensions?
OpenAI MCP Extensions adds ChatGPT-specific capabilities on top of MCP and MCP Apps to integrate plugins into its interface.
The difference matters when deciding what to build. MCP Apps provides the shared foundation for associating a tool with an interface and communicating with the client running it. OpenAI’s extensions add integration points within ChatGPT.
It’s worth keeping tools useful even without an interface: your service should return understandable results when a client can’t display the viewer. OpenAI recommends this separation in their guide for adding interfaces to an MCP server.
To understand where the protocol is heading, you can check our coverage of the MCP roadmap and its operational challenges.
Do file viewers work on ChatGPT web and mobile?
As of October 2, 2026, the compatibility table for the release supports file entrypoints on desktop, but not on web, iOS, or Android.
That is the compatibility limit of the viewer described in this note. Sidebar entrypoints have broader compatibility. Additionally, the specification clarifies that its web column refers to the Work browser and excludes classic ChatGPT. Platform Compatibility.
There is another restriction related to plans: as of that same date, the documentation indicates that web extensions for Free and Go will arrive soon. Mentions in the composer also require desktop. For this reason, the “for all plans” availability in the announcement does not imply that each feature exists on all clients. Plugin Extensions Documentation.
How do you test ChatGPT extensions with an example?
OpenAI offers Bits & Bolts Remote as an installable demonstration, along with a repository under Apache-2.0 license and SDK for TypeScript and Python.
The repository includes the installation link and explains how to open Parts Library from the sidebar. You can use that experience as a reference before building your own integration. Demo Instructions.
The code example is quite broader than a minimal viewer: it includes CAD inspection, settings, file updates, and shared context. For a first implementation, limit scope to opening and displaying a file. Bits & Bolts Example.
How do you create a file viewer in ChatGPT?
You need to register an MCP App UI resource, associate it with a tool, and declare an entrypoint for the extensions your viewer can interpret.
The documented installation command for the TypeScript SDK is:
pnpm add @openai/mcp-extensions
The server links the tool with its interface via _meta.ui.resourceUri. The entrypoint declaration for files is placed within _meta["openai/ui"]. For an STL viewer, that metadata snippet is:
{
"entrypoints": [
{
"type": "file",
"extensions": [".stl"]
}
]
}
This snippet declares the entry point; you still need to implement the rendering and register the complete server. The specification requires the extension’s starting point. These handlers are called file extension handlers. Specification of entry points for files.
In the interface, the SDK example follows this sequence:
- Register the tool entry handler before connecting the application.
- Validate the arguments received with
OpenAIFileEntrypointInputSchema. - Check that the client exposes the resource extension.
- Read the
file.resourceUrireceived viaopenaiExtensions.resources.read. - Deliver the returned content to the component that represents it.
Registering the handler before connection avoids losing the initial input. The SDK also warns that an unsupported capability may remain unavailable after initializing the application. TypeScript SDK Installation and Examples.
What access does a read-only viewer need?
The first version should be limited to reading the opened resource and displaying it.
The resource URI is opaque: it’s not a file system path you need to reconstruct. Your application must also process the representation of the returned content and display a clear error when it receives a malformed or incompatible file. Resource Handling.
If you add tools to the server, validate their inputs and apply authorization controls there. Having a visible interface does not replace those controls. OpenAI’s guide also requires confirmation for write actions with relevant consequences. Guide for Building an MCP Server.
For this first viewer, adding editing increases the work without helping to verify the main interaction. First, solve opening, displaying, and error handling.
How do you verify that the viewer works before publishing it?
Test the complete interaction in your target desktop client, with real files in the format you want to support.
Verify that a compatible file opens your interface, that the initial content appears, that a malformed input generates a useful error, and that the display doesn’t modify the original. Also check what happens if the client doesn’t offer the required capability.
The first worthwhile result to achieve is concrete: someone opens a file your product understands and can inspect it alongside the conversation. That’s enough to evaluate whether deeper integration with ChatGPT improves their workflow.
What about you? What type of file from your daily work would you like to inspect alongside a conversation with ChatGPT?
- A read-only file viewer
- An application with access from the sidebar
- I prefer another option (tell us which)
Comment below or, if this article reached you by email, reply directly to the email: your response will be published here.