SchemapExplore any MySQL database as an interactive entity-relationship diagram — right inside VS Code. Purpose-built for large, real-world schemas. Instead of dumping hundreds of tables onto a canvas, Schemap lets you search for what matters and grow the diagram outward through foreign-key relationships. OverviewSchemap connects to a MySQL server, reads its structure, and renders it as a clean, navigable ERD. It is designed for schemas that are too big to view all at once (800+ tables): you start from a single table and expand into its neighbors on demand, so the diagram always reflects the slice you actually care about. Schemap is strictly read-only. It queries
FeaturesExplore
Understand
Connect securely
Diagram persistence & export
Requirements
Getting startedInstall from a package (
|
| Field | Value |
|---|---|
| Host | 127.0.0.1 |
| Port | 3307 |
| User / Password | your MySQL credentials on the remote server |
| TLS/SSL | Off — SSH already encrypts the traffic |
| Environment | Production |
The database credentials are the MySQL user's, which is typically different from your SSH login.
Security model
Schemap is built to be safe to point at sensitive databases:
- Read-only by design. Only
information_schemaandSHOW CREATE TABLEare ever queried. The "Copy SELECT" action places text on your clipboard; it is never executed. - No SQL injection surface. Schema and table filters are passed as bound parameters; the one place identifiers are interpolated (
SHOW CREATE TABLE) is safely backtick-escaped. - Secrets in SecretStorage. Passwords live in the OS credential store via VS Code, never in profile data.
- Short-lived connections. Each operation opens a connection and closes it in a
finallyblock — no lingering idle sockets. - Production guardrails. Connecting to a profile marked production requires explicit confirmation and surfaces a warning banner in the diagram.
For defense in depth, connect with a MySQL user that only has read privileges. The server-enforced permissions are the ultimate guarantee.
Command reference
| Command | Description |
|---|---|
Schemap: Open Diagram |
Open the diagram panel. |
Add Connection |
Create a new connection via the form. |
Connect to Local MySQL (XAMPP/phpMyAdmin) |
Add a connection pre-filled with local defaults. |
Open Diagram (connection) |
Open the diagram for a saved connection. |
Edit Connection |
Edit a saved connection in the form. |
Delete Connection |
Remove a saved connection. |
Manage Connections |
Edit or delete a connection from a picker. |
Refresh |
Refresh the Connections view. |
Building & packaging
npm run compile # one-off development build
npm run build # production build (minified)
npm run typecheck # type-check without emitting
npm run package # produce a shareable .vsix
Architecture
Schemap compiles into two independent bundles that communicate only through a typed message protocol:
- Extension host (
src/) — connection management, MySQL introspection viainformation_schema, and the webview panel lifecycle. Bundled todist/extension.js(Node, CommonJS). - Webview (
webview/) — a React application built on React Flow for rendering and ELK for layout. Bundled tomedia/webview.js(browser, IIFE). - Messaging (
src/messages.ts) — the typedpostMessagecontract shared by both sides. - Schema model (
src/db/schemaTypes.ts) — a framework-free description of tables, columns, and relationships, imported by both the host and the webview.
The webview runs under a strict Content-Security-Policy with a per-load script nonce and no network egress, so bundled third-party code cannot exfiltrate schema data.
Roadmap
- Native SSH-tunnel support configured directly in the connection form.
- Multi-database (cross-schema) relationship views.
- Additional engines (PostgreSQL, SQL Server) — the introspection layer and schema model are kept engine-agnostic to make this possible.
Notes
- Schemap never modifies your database.
- Connection profiles are stored without passwords, so the same profile or
.vsixis safe to share; each user enters their own credentials.
