Database Mcp

by xavieryang007

308 downloads
Not rated
GitHub

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

- 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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.