generate_er_diagram
Create Mermaid ER diagrams of database schemas using SingleStore MCP Server, enabling clear visualization of table relationships and structures for better database understanding.
Instructions
Generate a Mermaid ER diagram of the database schema
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Input Schema (JSON Schema)
{
"properties": {},
"required": [],
"type": "object"
}
Implementation Reference
- src/index.ts:1385-1448 (handler)The handler function for 'generate_er_diagram' tool. It queries the database for tables and columns, fetches foreign key relationships (though not used), builds a Mermaid ER diagram with table schemas and adds some hardcoded relationships, then returns it as text content.case 'generate_er_diagram': { try { // Get all tables const [tables] = await conn.query( 'SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()' ) as [TableRowDataPacket[], mysql.FieldPacket[]]; // Get foreign key relationships const [relationships] = await conn.query( `SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL` ) as [mysql.RowDataPacket[], mysql.FieldPacket[]]; // Start building Mermaid diagram let mermaidDiagram = 'erDiagram\n'; // Add tables and their columns for (const table of tables) { const [columns] = await conn.query( 'DESCRIBE ??', [table.TABLE_NAME] ) as [ColumnRowDataPacket[], mysql.FieldPacket[]]; mermaidDiagram += `\n ${table.TABLE_NAME} {\n`; for (const column of columns) { const fieldType = column.Type.split('(')[0]; mermaidDiagram += ` ${fieldType} ${column.Field}${column.Key === 'PRI' ? ' PK' : ''}\n`; } mermaidDiagram += ' }\n'; } // Add relationships mermaidDiagram += ` Documents ||--o{ Document_Embeddings : "has embeddings" Documents ||--o{ Chunk_Metadata : "is chunked into" Documents ||--o{ ProcessingStatus : "has status" Document_Embeddings ||--o| Chunk_Metadata : "belongs to chunk" Entities ||--o{ Relationships : "has relationships" Entities ||--o{ Relationships : "is referenced by" Documents ||--o{ Relationships : "contains"`; return { content: [ { type: 'text', text: mermaidDiagram, }, ], }; } catch (error: unknown) { const err = error as Error; throw new McpError( ErrorCode.InternalError, `ER diagram generation error: ${err.message}` ); } }
- src/index.ts:1177-1184 (registration)Registration of the 'generate_er_diagram' tool in the MCP server's list_tools response, including its name, description, and input schema (no required parameters).{ name: 'generate_er_diagram', description: 'Generate a Mermaid ER diagram of the database schema', inputSchema: { type: 'object', properties: {}, required: [], },
- src/index.ts:1181-1184 (schema)Input schema definition for the generate_er_diagram tool (empty object, no parameters required).type: 'object', properties: {}, required: [], },
- src/index.ts:136-144 (registration)Secondary registration of the tool in the SSE HTTP server's cached tools list for list_tools requests.{ name: 'generate_er_diagram', description: 'Generate a Mermaid ER diagram of the database schema', inputSchema: { type: 'object', properties: {}, required: [], }, },