---
title: Fundamentals
description: "Understanding Model Context Protocol (MCP), the MCP Apps portable baseline, and ChatGPT-specific extensions."
---

Skybridge enables you to build **ChatGPT Apps** and **MCP Apps** - interactive UI views that render inside AI conversations. Before diving into Skybridge's APIs, understand the underlying protocols and runtimes it builds upon.

## How views appear in MCP Apps Clients

In MCP Apps clients, the model triggers your tool, and the client then renders both the assistant response and your view from the tool result.

<img
  src="/images/fundamentals-chatgpt-apps.png"
  alt="MCP Apps Architecture"
  style={{ width: "100%", maxWidth: "800px", display: "block", margin: "0 auto" }}
/>

## MCP (Model Context Protocol)

[MCP](https://modelcontextprotocol.io) is an open standard that allows AI models to connect with external tools, resources, and services. Think of it as an API layer specifically designed for LLMs.

### What is an MCP Client?

An **MCP Client** is a frontend application that implements the MCP protocol, and that can consume MCP Servers. Major MCP Clients include:
- General-purpose AI apps: ChatGPT, Claude, Goose, etc
- IDEs: Cursor, VSCode, Amp, etc
- Coding agents: Claude Code, Codex CLI, Gemini CLI, etc
- Any other software that implements the MCP protocol

### What is an MCP Server?

An **MCP server** is a backend service that implements the MCP protocol. It exposes capabilities to MCP Clients through:

- **Tools**: Functions the model can call (e.g., `search_flights`, `get_weather`, `book_hotel`)
- **Resources**: Data the model can access (e.g., files, database records, UI components)

When you ask an AI assistant a question, it can invoke tools on your MCP server to fetch data or perform actions on your behalf. The server handles your business logic, database queries, API calls, and any other backend operations.

### MCP Apps and ChatGPT Apps: The Same Foundation

**MCP Apps** is the open UI extension for MCP. It defines the portable contract for interactive views in AI clients, including the `ui/*` bridge, `tools/call`, and `_meta.ui.resourceUri`.

**ChatGPT Apps** use that same MCP Apps contract in ChatGPT, and the OpenAI Apps SDK adds `window.openai` APIs for ChatGPT-specific capabilities.

To avoid repetition, we will now refer to both ChatGPT Apps and MCP Apps as **AI Apps.**

An **AI App** consists of two components working together:

1. **MCP Server**: Your backend that handles business logic and exposes tools via the MCP protocol
2. **UI Views**: HTML components that render in the AI Client's interface as interactive UIs

When a tool is called, it can return both:
- **Text content**: What the model sees and responds with
- **View content**: A visual UI that renders for the user

This creates a **dual-surface interaction model**: users interact with both the conversational interface (the AI) and your custom UI (the view).

<Note>
Read our [in-depth blog article](https://alpic.ai/blog/inside-openai-s-apps-sdk-how-to-build-interactive-chatgpt-apps-with-mcp) for a detailed technical breakdown of how AI Apps work under the hood.
</Note>

## Runtime Environments

Both ChatGPT Apps and MCP Apps use the same MCP server architecture and the same portable MCP Apps UI contract. The key practical difference is that ChatGPT additionally exposes `window.openai` extensions.

Think of it this way: your app logic and portable bridge stay the same, and ChatGPT can optionally provide extra capabilities.

Skybridge supports the two main runtime environments for rendering views:

<CardGroup cols={2}>
  <Card title="Apps SDK (ChatGPT)" icon="message" href="/fundamentals/apps-sdk">
    ChatGPT host runtime. Implements MCP Apps and adds optional `window.openai` APIs for ChatGPT-only features.
  </Card>
  <Card title="MCP Apps" icon="plug" href="/fundamentals/mcp-apps">
    Open MCP Apps specification. JSON-RPC postMessage bridge that works across multiple AI clients.
  </Card>
</CardGroup>


Skybridge abstracts away the differences between these runtime environments so you can write your views once and run them anywhere. Learn more in our <a href="/concepts/write-once-run-everywhere">Write Once, Run Everywhere</a> guide.


## Runtimes Comparison at a Glance

| Feature | Apps SDK (ChatGPT) | MCP Apps |
|---------|-------------------|----------|
| **Protocol** | MCP Apps bridge + optional `window.openai` extensions | Open MCP Apps (`ext-apps`) spec |
| **Client Support** | ChatGPT only | Goose, VSCode, Postman, ... |
| **Documentation** | [Apps SDK Docs](https://developers.openai.com/apps-sdk) and [MCP Apps compatibility in ChatGPT](https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt/) | [ext-apps specs](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx) |




## Next Steps

<CardGroup cols={2}>
  <Card title="Apps SDK Deep Dive" icon="message" href="/fundamentals/apps-sdk">
    ChatGPT-specific APIs, `window.openai`, and exclusive features
  </Card>
  <Card title="MCP Apps Deep Dive" icon="plug" href="/fundamentals/mcp-apps">
    The open specification, JSON-RPC bridge, and client support
  </Card>
  <Card title="Write Once, Run Everywhere" icon="shuffle" href="/concepts/write-once-run-everywhere">
    How Skybridge abstracts these differences for you
  </Card>
  <Card title="Quickstart" icon="rocket" href="/quickstart/create-new-app">
    Start building your first app
  </Card>
</CardGroup>
