
MariaDB
STDIOOfficialMariaDB数据库管理与向量搜索服务器
MariaDB数据库管理与向量搜索服务器
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.
The MCP MariaDB Server exposes a set of tools for interacting with MariaDB databases and vector stores via a standardized protocol. It supports:
.env
files.list_databases
list_tables
database_name
(string, required)get_table_schema
database_name
(string, required), table_name
(string, required)execute_sql
SELECT
, SHOW
, DESCRIBE
).sql_query
(string, required), database_name
(string, optional), parameters
(list, optional)MCP_READ_ONLY
is enabled.create_database
database_name
(string, required)create_vector_store
database_name
, vector_store_name
, model_name
(optional), distance_function
(optional, default: cosine)delete_vector_store
database_name
, vector_store_name
list_vector_stores
database_name
insert_docs_vector_store
database_name
, vector_store_name
, documents
(list of strings), metadata
(optional list of dicts)search_vector_store
database_name
, vector_store_name
, user_query
(string), k
(optional, default: 7)EMBEDDING_PROVIDER
: Set to openai
(default option), can change it to required providersOPENAI_API_KEY
: Required if using OpenAI embeddingsDEFAULT_OPENAI_MODEL
, ALLOWED_OPENAI_MODELS
)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)All configuration is via environment variables (typically set in a .env
file):
Variable | Description | Required | Default |
---|---|---|---|
DB_HOST | MariaDB host address | Yes | localhost |
DB_PORT | MariaDB port | No | 3306 |
DB_USER | MariaDB username | Yes | |
DB_PASSWORD | MariaDB password | Yes | |
DB_NAME | Default database (optional; can be set per query) | No | |
MCP_READ_ONLY | Enforce read-only SQL mode (true /false ) | No | true |
MCP_MAX_POOL_SIZE | Max DB connection pool size | No | 10 |
EMBEDDING_PROVIDER | Embedding provider (openai /gemini /huggingface ) | No | openai |
OPENAI_API_KEY | API key for OpenAI embeddings | Yes (if using embeddings) | |
GEMINII_API_KEY | API key for Gemini embeddings | Yes (if using embeddings) | |
HF_MODEL | Open models from Huggingface | Yes (if using embeddings) |
.env
fileDB_HOST=localhost DB_USER=your_db_user DB_PASSWORD=your_db_password DB_PORT=3306 DB_NAME=your_default_database MCP_READ_ONLY=true MCP_MAX_POOL_SIZE=10 EMBEDDING_PROVIDER=openai OPENAI_API_KEY=sk-... GEMINI_API_KEY=AI... HF_MODEL="BAAI/bge-m3"
.python-version
)uv
(if not already):
pip install uv
uv pip sync
.env
in the project root (see Configuration)Adjust entry point if needed (e.g.,python server.py
main.py
){ "tool": "execute_sql", "parameters": { "database_name": "test_db", "sql_query": "SELECT * FROM users WHERE id = %s", "parameters": [123] } }
{ "tool": "create_vector_store", "parameters": { "database_name": "test_db", "vector_store_name": "my_vectors", "model_name": "text-embedding-3-small", "distance_function": "cosine" } }
{ "tool": "insert_docs_vector_store", "parameters": { "database_name": "test_db", "vector_store_name": "my_vectors", "documents": ["Sample text 1", "Sample text 2"], "metadata": [{"source": "doc1"}, {"source": "doc2"}] } }
{ "tool": "search_vector_store", "parameters": { "database_name": "test_db", "vector_store_name": "my_vectors", "user_query": "What is the capital of France?", "k": 5 } }
{ "mcpServers": { "MariaDB_Server": { "command": "uv", "args": [ "--directory", "path/to/mariadb-mcp-server/", "run", "server.py" ], "envFile": "path/to/mcp-server-mariadb-vector/.env" } } }
logs/mcp_server.log
by default.config.py
and logger setup).src/tests/
directory.src/tests/README.md
for an overview.