Skip to main content
Glama
madhukarkumar

SingleStore MCP Server

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

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • 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: [],
      },
  • 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: [],
      },
    },
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/madhukarkumar/singlestore-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server