Database Mcp
About
Database Mcp is an MCP (Model Context Protocol) service that provides database capabilities through GORM, supporting multiple database types including MySQL, PostgreSQL, SQLite, SQL Server, and ClickHouse. It is intended for developers who want to integrate database operations…
Details
- Author
- xavieryang007
- Downloads
- 308
- Categories
- Database, Developer Tools
Jump to
- Supports MySQL, PostgreSQL, SQLite, SQL Server, and ClickHouse databases.
- Configuration via YAML file, command line arguments, or environment variables.
- Provides three MCP tools: get_tables, get_table_detail, and execute_sql.
- Uses GORM ORM for database interactions.
- Exposes an SSE endpoint on port 8080 for MCP client integration.
Clone the repository, run go mod tidy to install dependencies, then start the service with ./database-mcp. Configure the database connection via a YAML config file, command line arguments, or environment variables. Connect your MCP client to the SSE endpoint at http://127.0.0.1:8080/sse to use the provided tools.
conn_create
Crea una nueva conexion a base de datos (PostgreSQL, MySQL o SQLite). SIEMPRE pregunta al usuario a que grupo pertenece.
conn_list
Lista todas las conexiones disponibles e indica cual esta activa.
conn_get
Obtiene los detalles de una conexion. El password se muestra enmascarado.
conn_set
Actualiza un campo de una conexion existente.
conn_switch
Cambia la conexion activa (de sesion). Para cambiar el default permanente usa conn_set_default.
conn_rename
Renombra una conexion existente.
conn_delete
Elimina una conexion. IMPORTANTE: pide confirmacion al usuario antes de llamar esta tool con confirm=true.
conn_duplicate
Duplica una conexion existente con un nuevo nombre.
conn_test
Prueba la conexion a una base de datos. Ejecuta SELECT 1 y mide la latencia.
conn_project_list
Lista todos los proyectos con conexiones especificas asignadas.
conn_project_clear
Elimina la asociacion de conexion especifica de un proyecto.
conn_export
Exporta conexiones a JSON. Por defecto enmascara passwords — usa include_secrets=true para incluirlos.
conn_import
Importa conexiones desde un JSON exportado. Omite conexiones que ya existen (usa overwrite=true para reemplazar).
conn_group_create
Crea un nuevo grupo de conexiones. Luego añade scopes (directorios) con conn_group_add_scope.
conn_group_list
Lista todos los grupos con sus scopes, default y conexiones.
conn_group_delete
Elimina un grupo. Las conexiones del grupo NO se eliminan pero quedaran huerfanas.
conn_group_add_scope
Añade un directorio (scope) a un grupo. Las conexiones del grupo seran accesibles desde ese directorio.
conn_group_remove_scope
Quita un directorio (scope) de un grupo.
conn_set_default
Marca una conexion como el default de su grupo. El default se activa automaticamente al entrar al proyecto.
conn_set_group
Asigna o cambia el grupo de una conexion existente.
search_schema
Busca tablas/vistas en el schema de la base de datos. Soporta 3 niveles de detalle: names (solo nombres), summary (nombres + columnas), full (todo + FK + indices).
execute_query
Ejecuta una consulta de lectura (SELECT, SHOW, etc.). Inyecta LIMIT automaticamente. El result se comprime por defecto (verbosity=normal, celdas truncadas a 500 bytes) para ahorrar tokens; usa inspect_last_query con el call_id para recuperar el result completo sin re-ejecutar.
execute_mutation
Ejecuta una mutacion (INSERT, UPDATE, DELETE, DDL). Pide confirmacion y crea snapshot para rollback. El result se comprime por defecto — para mutations usa verbosity=minimal si solo te interesa affectedRows.
explain_query
Muestra el plan de ejecucion de una consulta (EXPLAIN). Sin ANALYZE por defecto.
rollback_list
Lista los rollback snapshots disponibles. Muestra las mutaciones recientes que se pueden revertir.
rollback_apply
Revierte una mutacion usando un rollback snapshot. IMPORTANTE: confirma con el usuario antes de ejecutar con confirm=true.
history_list
Lista el historial de consultas ejecutadas. Filtrable por tipo, conexion y estado.
history_clear
Limpia el historial de consultas. Opcionalmente solo las anteriores a una fecha.
config_get
Muestra la configuracion actual del servidor (limites de rollback e historial).
config_set
Modifica la configuracion del servidor. Los cambios se guardan permanentemente.
db_dump
Exporta la base de datos a un archivo SQL. Flujo conversacional: primero pregunta si exportar todas las tablas o personalizar, luego que contenido incluir (estructura, datos o todo).
db_restore
Restaura un dump SQL en la base de datos activa. IMPORTANTE: esta operacion es destructiva (DROP TABLE + CREATE TABLE). Pide confirmacion al usuario antes de ejecutar con confirm=true.
db_dump_list
Lista los dumps disponibles en el proyecto actual.
inspect_last_query
Recupera el result completo (sin celdas truncadas, sin row cap) de un execute_query / execute_mutation / explain_query previo. Usa el call_id que aparece en la response comprimida. Sin call_id devuelve el más reciente. NO re-ejecuta el SQL.
Database MCP Service
A MCP (Metoro Control Protocol) service with database capabilities, supporting multiple database types through GORM.
Features
- Support for multiple database types:
- MySQL
- PostgreSQL
- SQLite
- SQL Server
- ClickHouse
- Configuration through:
- Configuration file (YAML)
- Command line arguments
- Environment variables
- MCP protocol integration
- GORM ORM support
Installation
1. Clone the repository
2. Install dependencies:
go mod tidy
Configuration
Configuration File (config.yaml)
Create a config.yaml file with the following structure:
database:
type: "mysql" # mysql, postgres, sqlite, sqlserver, clickhouse
host: "localhost"
port: 3306
username: "root"
password: "password"
database: "mydb"
ssl_mode: "disable" # for postgres
file: "database.db" # for sqlite
Command Line Arguments
You can override configuration file settings using command line arguments:
./database-mcp --config=config.yaml \
--db-type=mysql \
--db-host=localhost \
--db-port=3306 \
--db-user=root \
--db-pass=password \
--db-name=mydb \
--db-ssl-mode=disable \
--db-file=database.db
Available command line arguments:
- --config: Path to config file (default: "config.yaml")
- --db-type: Database type (mysql, postgres, sqlite, sqlserver, clickhouse)
- --db-host: Database host
- --db-port: Database port
- --db-user: Database username
- --db-pass: Database password
- --db-name: Database name
- --db-ssl-mode: SSL mode (for PostgreSQL)
- --db-file: Database file (for SQLite)
Usage
1. Start the service:
./database-mcp
2. The service will:
- Load configuration from file and/or command line
- Initialize database connection
- Start MCP server
- Register available tools and resources
MCP Configuration
To use the MCP service, configure the MCP endpoint in your MCP client:
http://127.0.0.1:8080/sse
This will connect your MCP client to the local service running on port 8080.
MCP Tools
The service provides the following MCP tools:
1. get_tables: Get all tables in the database
- Returns a list of tables with their names and comments
2. get_table_detail: Get detailed information about a specific table
- Arguments:
- table_name: The name of the table to get details for
- Returns table information including:
- Table name and comment
- Column information (name, type, comment, nullable, default value)
3. execute_sql: Execute a SQL query
- Arguments:
- query: The SQL query to execute
- Returns:
- For SELECT queries: An array of results
- For other queries: The number of rows affected
License
MIT License
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





