How openai/mcp-extensions works
OpenAI MCP Extensions is a pair of TypeScript and Python SDKs that add ChatGPT-specific app, resource, mention, settings, and form capabilities to MCP servers; Bits & Bolts is the example CAD plugin exercising those capabilities. The user-facing flow starts in ChatGPT (sidebar, file, composer, or form), reaches an MCP app or server extension, and returns a rendered view, resource result, or validated submission. The graph retains the demo’s catalog, tool registration, model viewing, and preview generation. Edges are limited to README statements and source relationships visible in excerpts or the SOURCE INDEX; unsampled runtime wiring is omitted.
Main entry points: index.ts Server API exports · register.ts CAD tool registration · strings.ts String validation · extensions.py Python extensions API
Components 34
TypeScript SDK
- Server extensions
typescript/src/server/extensions.ts - Form schemas
typescript/src/server/forms/schema.ts - Form fields
typescript/src/server/forms/fields.ts - File picker
typescript/src/server/forms/file-picker.ts - Form elicitation
typescript/src/server/forms/elicitation.ts - Composer mentions
typescript/src/server/mentions.ts - Settings tools
typescript/src/server/settings.ts - Resource tools
typescript/src/server/resources.ts - UI metadata
typescript/src/server/ui.ts - Server API exports
typescript/src/server/index.ts - App API exports
typescript/src/app/index.ts - App extensions
typescript/src/app/extensions.ts - File handlers
typescript/src/app/files.ts - Sidebar entrypoints
typescript/src/app/deep-link.ts - App resources
typescript/src/app/resources.ts - MCP transport
typescript/src/app/transport.ts - Shared resource metadata
typescript/src/shared/resources.ts - File entrypoint contract
typescript/src/shared/file-entrypoint.ts - String validation
typescript/src/shared/strings.ts
Python SDK
- Python extensions API
python/src/openai_mcp_extensions/extensions.py - Settings
python/src/openai_mcp_extensions/settings.py - Mentions
python/src/openai_mcp_extensions/mentions.py - Resources
python/src/openai_mcp_extensions/resources.py - UI metadata
python/src/openai_mcp_extensions/ui.py - Form elicitation
python/src/openai_mcp_extensions/form/_elicitation.py - Form schemas
python/src/openai_mcp_extensions/form/_schema.py - Resource picker
python/src/openai_mcp_extensions/form/_resource_picker.py - Shared models
python/src/openai_mcp_extensions/_models.py - Form protocol
python/src/openai_mcp_form_protocol/__init__.py
Bits & Bolts Plugin
- CAD tool registration
plugins/bits-and-bolts/src/server/register.ts - Parts catalog
plugins/bits-and-bolts/src/server/catalog.ts - CAD forms
plugins/bits-and-bolts/src/server/forms.ts - Catalog storage
plugins/bits-and-bolts/src/server/store.ts
Other components
- ChatGPT user
Connections 46
- ChatGPT user → Sidebar entrypoints: opens sidebar app
README.md - ChatGPT user → File handlers: opens supported file
README.md - ChatGPT user → Composer mentions: searches resources
README.md - ChatGPT user → Form elicitation: submits form
README.md - Server API exports → Server extensions: exports
typescript/src/server/index.ts - Server extensions → Form elicitation: uses
typescript/src/server/extensions.ts - Server extensions → Composer mentions: uses
typescript/src/server/extensions.ts - Server extensions → Settings tools: uses
typescript/src/server/extensions.ts - Server API exports → Settings tools: exports
typescript/src/server/index.ts - Server API exports → Composer mentions: exports
typescript/src/server/index.ts - Server API exports → Form elicitation: exports
typescript/src/server/index.ts - Server API exports → Form schemas: exports
typescript/src/server/index.ts - Server API exports → Form fields: exports
typescript/src/server/index.ts - Server API exports → File picker: exports
typescript/src/server/index.ts - Server API exports → Resource tools: exports
typescript/src/server/index.ts - Server API exports → UI metadata: exports
typescript/src/server/index.ts - Form elicitation → Form schemas: uses schema
typescript/src/server/forms/elicitation.ts - Form schemas → Form fields: uses fields
typescript/src/server/forms/schema.ts - Form schemas → File picker: uses picker
typescript/src/server/forms/schema.ts - File picker → Form fields: uses field shapes
typescript/src/server/forms/file-picker.ts - Settings tools → String validation: validates names
typescript/src/server/settings.ts - Composer mentions → String validation: uses validation
typescript/src/server/mentions.ts - UI metadata → String validation: uses validation
typescript/src/server/ui.ts - File entrypoint contract → String validation: uses validation
typescript/src/shared/file-entrypoint.ts - App resources → Shared resource metadata: uses metadata
typescript/src/app/resources.ts - App resources → String validation: uses validation
typescript/src/app/resources.ts - App API exports → App extensions: exports
- App API exports → File handlers: exports
- App API exports → App resources: exports
- Python extensions API → Settings: exposes
python/src/openai_mcp_extensions/settings.py - Python extensions API → Mentions: exposes
python/src/openai_mcp_extensions/mentions.py - Python extensions API → Resources: exposes
- Python extensions API → UI metadata: exposes
python/src/openai_mcp_extensions/ui.py - Mentions → Shared models: uses models
python/src/openai_mcp_extensions/mentions.py - Settings → Shared models: uses models
python/src/openai_mcp_extensions/settings.py - UI metadata → Shared models: uses models
python/src/openai_mcp_extensions/ui.py - Form elicitation → Form schemas: uses schema
python/src/openai_mcp_extensions/form/_elicitation.py - Form elicitation → Form protocol: uses protocol
python/src/openai_mcp_extensions/form/_elicitation.py - Form schemas → Form protocol: uses protocol
python/src/openai_mcp_extensions/form/_schema.py - CAD tool registration → CAD forms: registers
plugins/bits-and-bolts/src/server/register.ts - CAD tool registration → Catalog storage: uses store
plugins/bits-and-bolts/src/server/register.ts - CAD tool registration → Parts catalog: loads catalog
- CAD tool registration → MCP transport: uses transport
- CAD tool registration → Parts catalog: serves part data
- Catalog storage → Parts catalog: stores catalog data
- CAD tool registration → CAD tool registration: registers CAD tools
plugins/bits-and-bolts/src/server/register.ts