Skip to Content
Burette Plugin & MCP

Burette Plugin and MCP

Burette has two complementary plugin surfaces:

  • A public hosted plugin that opens supported molecular results directly in the real Burette browser workspace.
  • A local Codex plugin that can open local files and control Burette desktop or Browser sessions.

Both implementations live in the main Burette repository . There is no separate plugin source repository.

Public hosted plugin

The production MCP endpoint is:

https://burette-plugin.vercel.app/mcp

It exposes five tools:

preview_molecular_file preview_pdb_structure render_molecular_scene open_ketcher control_ketcher

preview_molecular_file accepts one ChatGPT-authorized PDB, ENT, PDBQT, CIF, mmCIF, SDF, SD, XYZ, or extended XYZ attachment. preview_pdb_structure retrieves one public RCSB Protein Data Bank entry by its four-character PDB ID. render_molecular_scene applies up to eight bounded selection, focus, camera, or component-visibility actions to one of those sources. These three structure tools are read-only.

open_ketcher creates an isolated editor and can seed one bounded KET, MOL, RXN, or SMILES structure. control_ketcher applies revision-checked edit or export actions. Hosted Ketcher state is process-local and ephemeral; it does not write a local file or a shared public workspace.

The three structure tools return bounded composition data and open the real Burette viewer with its toolbar, sequence and selection controls, measurements, representations, camera controls, and molecular inspector. The Ketcher tools return a bounded editor snapshot and editor widget. The deployment root redirects back to this documentation; it is not a separate viewer product.

The public domain is only the HTTPS host for /mcp and the widget’s JavaScript and CSS. After the MCP server returns a tool result and UI template, ChatGPT renders the Burette component inside an isolated iframe on the user’s device, where WebGL and Mol* use that device’s CPU and GPU. State belongs to that chat widget; there is no shared protein or shared Burette workspace between users.

The hosted plugin is deployed for testing and prepared for review. Public one-click installation becomes available only after OpenAI approves the listing and the publisher releases it in the Plugins Directory.

Demo recordings

The desktop recording shows ChatGPT opening PDB 1CRN in the hosted Burette widget and interacting with the molecular camera and representation controls.

The physical iPhone recording shows the same public plugin opening PDB 1HTB and rendering the interactive molecular structure on mobile.

Hosted data boundary

Attachments are fetched from the temporary HTTPS URL authorized by the OpenAI host, processed in memory, and limited to 3 MiB. The service does not save them to Burette application storage. Raw molecular text is returned only to the sandboxed Burette workspace through result metadata; the model receives a bounded summary.

Do not send credentials, protected health information, export-controlled structures, or confidential molecular files unless your OpenAI workspace policy and organization explicitly permit that processing. See the Privacy Policy for recipients, retention, and user controls.

Local Codex workspace plugin

The local plugin connects Codex to the same molecular workspace used by the macOS app. It combines focused workflow skills with a typed local stdio MCP server.

This is the preferred path for local-first work on the same Mac: the plugin can open local files and control the installed Burette app without routing that workspace through the public hosted service.

What local Codex can do

  • Open molecular structures, SDF collections, trajectories, and result bundles.
  • Observe the active document, tabs, panels, viewer readiness, and Mol* scene state.
  • Run allowlisted viewer actions such as focusing ligands, hiding waters, changing representations, and resetting the camera.
  • Author, validate, and play multi-state MolViewSpec Stories through typed story tools (schema help, templates, create, validate, observe, and control).
  • Sketch and edit small molecules through the typed Ketcher facade.
  • Render bounded markdown, tables, charts, and molecular reports beside the workspace.
  • Keep local-file provenance explicit without exposing an arbitrary shell or unrestricted file-access tool.

The short MCP facade is:

burette.get_context burette.open_workspace burette.open_ketcher burette.observe_workspace burette.control_viewer burette.control_ketcher burette.get_mvs_authoring_reference burette.list_story_templates burette.create_story_from_template burette.create_story burette.validate_story burette.observe_story burette.control_story burette.render_panel

burette.open_workspace returns a stable workspaceSessionId. Follow-up calls use that handle instead of carrying raw URLs or session-directory details through the conversation.

Install the local plugin

Clone the main repository and run its plugin installer:

git clone https://github.com/SergeiNikolenko/Burette.git cd Burette bun run install:plugin

Restart Codex after installation, then mention @Burette or select Burette from Plugins. The installer stages the self-contained plugin in a dedicated local marketplace, registers that marketplace with Codex, and enables burette@burette through the Codex CLI. The MCP server is bundled, so the installed plugin does not depend on a separate node_modules directory.

Why the workspace bridge stays local

Desktop control needs user-selected local molecular files and local Browser or desktop sessions. A Codex-local plugin with a stdio MCP server matches that boundary, while the hosted plugin is intentionally limited to one authorized attachment or one public PDB entry.

The MCP layer exposes purpose-built molecular operations. It does not provide arbitrary JavaScript or shell execution. Local HTTP surfaces are token-gated, payloads are bounded, and destructive overwrites or remote-job submission remain outside the plugin contract.

Browser development, the desktop app, tokenized preview, native Quick Look, and the MCP process are separate runtime surfaces. Passing one does not prove the others.

Source and contracts

Last updated on