Manage and query MariaDB databases with SQL and vector search capabilities.
MCP MariaDB Server
The MCP MariaDB Server provides a Model Context Protocol (MCP) interface for managing and querying MariaDB databases, supporting both standard SQL operations and advanced vector/embedding-based search. Designed for use with AI assistants, it enables seamless integration of AI-driven data workflows with relational and vector databases.
Overview
The MCP MariaDB Server exposes a set of tools for interacting with MariaDB databases and vector stores via a standardized protocol. It supports:
- Listing databases and tables
- Retrieving table schemas
- Executing safe, read-only SQL queries
- Creating and managing vector stores for embedding-based search
- Integrating with embedding providers (currently OpenAI, Gemini, and HuggingFace) (optional)
Core Components
- server.py: Main MCP server logic and tool definitions.
- config.py: Loads configuration from environment and
.envfiles. - embeddings.py: Handles embedding service integration (OpenAI).
- tests/: Manual and automated test documentation and scripts.
Available Tools
Standard Database Tools
list_databases
- Lists all accessible databases.
- Parameters: None
list_tables
- Lists all tables in a specified database.
- Parameters:
database_name(string, required)
get_table_schema
- Retrieves schema for a table (columns, types, keys, etc.).
- Parameters:
database_name(string, required),table_name(string, required)
get_table_schema_with_relations
- Retrieves schema with foreign key relations for a table.
- Parameters:
database_name(string, required),table_name(string, required)
execute_sql
- Executes a read-only SQL query (
SELECT,SHOW,DESCRIBE). - Parameters:
sql_query(string, required),database_name(string, optional),parameters(list, optional) - Note: Enforces read-only mode if
MCP_READ_ONLYis enabled.
- Executes a read-only SQL query (
create_database
- Creates a new database if it doesn't exist.
- Parameters:
database_name(string, required)
Vector Store & Embedding Tools (optional)
Note: These tools are only available when EMBEDDING_PROVIDER is configured. If no embedding provider is set, these tools will be disabled.
create_vector_store
- Creates a new vector store (table) for embeddings.
- Parameters:
database_name,vector_store_name,model_name(optional),distance_function(optional, default: cosine)
delete_vector_store
- Deletes a vector store (table).
- Parameters:
database_name,vector_store_name
list_vector_stores
- Lists all vector stores in a database.
- Parameters:
database_name
insert_docs_vector_store
- Batch inserts documents (and optional metadata) into a vector store.
- Parameters:
database_name,vector_store_name,documents(list of strings),metadata(optional list of dicts)
search_vector_store
- Performs semantic search for similar documents using embeddings.
- Parameters:
database_name,vector_store_name,user_query(string),k(optional, default: 7)
Embeddings & Vector Store
Overview
The MCP MariaDB Server provides optional embedding and vector store capabilities. These features can be enabled by configuring an embedding provider, or completely disabled if you only need standard database operations.
Supported Providers
- OpenAI
- Gemini
- Open models from Huggingface
Configuration
EMBEDDING_PROVIDER: Set toopenai,gemini,huggingface, or leave unset to disableOPENAI_API_KEY: Required if using OpenAI embeddingsGEMINI_API_KEY: Required if using Gemini embeddingsHF_MODEL: Required if using HuggingFace embeddings (e.g., "intfloat/multilingual-e5-large-instruct" or "BAAI/bge-m3")
Model Selection
- Default and allowed models are configurable in code (
DEFAULT_OPENAI_MODEL,ALLOWED_OPENAI_MODELS) - Model can be selected per request or defaults to the configured model
Vector Store Schema
A vector store table has the following columns:
id: Auto-increment primary keydocument: Text of the documentembedding: VECTOR type (indexed for similarity search)metadata: JSON (optional metadata)
Configuration & Environment Variables
All configuration is via environment variables (typically set in a .env file):
| Variable | Description
Tools (11)
list_databasesLists all accessible databases.list_tablesLists all tables in a specified database.get_table_schemaRetrieves schema for a table including columns, types, and keys.get_table_schema_with_relationsRetrieves schema with foreign key relations for a table.execute_sqlExecutes a read-only SQL query.create_databaseCreates a new database if it does not exist.create_vector_storeCreates a new vector store table for embeddings.delete_vector_storeDeletes a vector store table.list_vector_storesLists all vector stores in a database.insert_docs_vector_storeBatch inserts documents and metadata into a vector store.search_vector_storePerforms semantic search for similar documents using embeddings.Environment Variables
EMBEDDING_PROVIDERProvider for embeddings (openai, gemini, or huggingface)OPENAI_API_KEYAPI key for OpenAI embeddingsGEMINI_API_KEYAPI key for Gemini embeddingsHF_MODELModel name for HuggingFace embeddingsMCP_READ_ONLYEnforces read-only mode for SQL queriesConfiguration
{"mcpServers": {"mariadb": {"command": "python", "args": ["path/to/server.py"], "env": {"DB_HOST": "localhost", "DB_USER": "root", "DB_PASSWORD": "password", "DB_NAME": "my_database"}}}}