Screenshots plus the DOM tree plus the error console mean a broken panel can be diagnosed without you narrating it, and executing JavaScript in Zotero's own context turns "what does this API return" into a call rather than a guess. Two instances at once is a supported setup — give each profile its own bridge port — which is how you compare behaviour across Zotero versions.
A development server for Zotero 7 and later. A small bridge plugin opens Zotero's remote debugging port, and these tools drive the running application through it.
- JavaScript executed inside Zotero's privileged context, with full access to the Zotero APIs, plus object inspection to discover what an API actually exposes
- UI inspection: screenshots of the window or one element by CSS selector, a simplified DOM tree, element details, and computed styles
- UI interaction that is shadow-DOM aware — click a toolbar button, menu item or list row, and type into an input or contenteditable
- Debug output and the error console read back with stack traces and source locations, cleared on demand, or watched so new messages are collected while you work
- Preferences read, set and searched, so you can find the key before changing it, and the preferences window opened at a specific pane
- Build integration with zotero-plugin-scaffold: build, run the dev server with hot reload, lint, and typecheck the plugin project
- Plugin management — list what is installed with versions and status, install from a local XPI, and reload the one you are working on
- Read-only SQL against zotero.sqlite for debugging, with schema and statistics alongside it
- Window listing, so tools can be aimed at a specific Zotero window
Zotero 7 or later running locally, with the MCP Bridge plugin installed to open the remote debugging port — 6100 by default, set on both sides through the extensions.mcp-rdp.port preference if you change it, and note that Zotero's Config Editor defaults to Boolean when creating it, which silently produces a pipe instead of a TCP port. Node.js 20+ and npm; installed from npm as @introfini/mcp-server-zotero-dev, and install-mcp wires it into most clients. zotero-plugin-scaffold is needed for the build tools. Setting extensions.mcp-rdp.enabled to false closes the bridge without uninstalling anything.
One command — npx -y @introfini/mcp-server-zotero-dev@1.1.1
