Database Metadata Module (db/)¶
Understanding the core database schema extraction functionality that powers the MCP server
Overview¶
The mcp_ohmy_sql/db/ module represents the foundational layer of this library - it contains the core logic for extracting database schema information and encoding it properly for AI consumption. This module is designed to be database-agnostic, supporting different database systems through specialized sub-modules.
The primary purpose of this module is to:
Pull comprehensive database schema information from various database systems
Extract table and column definition metadata
Transform raw database metadata into structured, AI-friendly formats
Provide a consistent interface across different database technologies
Core Design Philosophy¶
The db/ module follows a bottom-up, database-specific approach:
Database Independence: Each database system has its own sub-module with system-specific extraction logic
Consistent Interface: All sub-modules follow the same architectural pattern for predictable behavior
Schema-First Design: Focus on comprehensive metadata extraction rather than data querying
AI Optimization: Structure information in formats that work well with language models
Module Structure¶
mcp_ohmy_sql/db/
├── __init__.py # Package initialization
├── metadata.py # Common metadata utilities and base classes
├── relational/ # Generic relational database support
├── more_database_1/ # Database 1 specific implementation
├── more_database_2/ # Database 2 specific implementation
└── ...
Database-Specific Sub-modules¶
Each database system is implemented as a separate sub-module following a consistent three-layer pattern:
- Layer 1: Models (schema_1_model.py)
Data structures that represent database schema elements (databases, schemas, tables, columns, etc.)
- Layer 2: Encoders (schema_2_encoder.py)
Logic to transform raw database metadata into structured, AI-friendly formats
- Layer 3: Extractors (schema_3_extractor.py)
Implementation that connects to databases and pulls metadata using system-specific queries
mcp_ohmy_sql/db/relational/
├── __init__.py
├── api.py # Public API for relational databases
├── schema_1_model.py # Data models for schema representation
├── schema_2_encoder.py # Schema encoding logic
└── schema_3_extractor.py # Schema extraction implementation
Independence and Modularity¶
The db/ module is designed to be completely independent from other parts of the system:
No dependencies on configuration management
No dependencies on MCP server functionality
No dependencies on integration layers
Can be used standalone for database schema analysis
This independence makes the module:
Testable: Easy to unit test without complex setup
Reusable: Can be integrated into other projects
Maintainable: Changes don’t affect other system components
Extensible: New database systems can be added without modifying existing code
Next Steps¶
This module serves as the foundation for the entire MCP server. The extracted schema information flows upward through:
Adapter Layer: Coordinates database operations and manages connections
Integration Layer: Combines schema information with configuration and business logic
Tool Layer: Exposes schema information through MCP tools for AI consumption
Understanding this db/ module is essential for contributors who want to:
Add support for new database systems
Modify schema extraction logic
Optimize metadata encoding for AI consumption
Troubleshoot database connectivity issues