Skip to content

JoseAGM19/MCP_sql-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCP SQL Server

Servidor MCP para analizar, consultar, comparar y generar queries para SQL Server con controles de seguridad.

Caracteristicas

  • Maximo 2 conexiones activas, configurable con MCP_SQL_MAX_CONNECTIONS.
  • Autenticacion SQL Server con usuario y clave.
  • Cada conexion se crea de a una y requiere alias.
  • Modo por defecto read_only.
  • En read_only permite consultas, metadata, comparaciones y creacion de archivos .sql, pero no ejecuta cambios.
  • En write_enabled puede ejecutar cambios solo con confirmacion explicita: realiza los cambios, hazlo o ejecuta.
  • Bloquea comandos destructivos como DROP, TRUNCATE, ALTER DATABASE, BACKUP y RESTORE.
  • Bloquea UPDATE o DELETE sin WHERE.
  • Ejecuta mutaciones dentro de transaccion con COMMIT o ROLLBACK.
  • Genera archivos .sql en generated-queries/.

Instalacion

npm install
npm run build

Configuracion MCP

Ejemplo de configuracion para un cliente MCP que ejecute el servidor compilado:

{
  "mcpServers": {
    "sql-server": {
      "command": "node",
      "args": ["D:/MCP/mcp_sql_server/dist/index.js"],
      "env": {
        "MCP_SQL_MAX_CONNECTIONS": "2",
        "MCP_SQL_MAX_ROWS": "1000",
        "MCP_SQL_QUERY_TIMEOUT_SECONDS": "30",
        "MCP_SQL_GENERATED_QUERIES_DIR": "generated-queries"
      }
    }
  }
}

Herramientas

  • sql_connect: crea una conexion SQL Server.
  • sql_disconnect: cierra una conexion por alias.
  • sql_list_connections: lista conexiones activas sin secretos.
  • sql_list_tables: lista tablas y vistas.
  • sql_describe_database: describe tablas, vistas y columnas.
  • sql_describe_table: describe una tabla.
  • sql_query: ejecuta solo SELECT o WITH ... SELECT.
  • sql_compare_schema: compara esquemas entre dos conexiones.
  • sql_compare_query_results: compara resultados de una query de lectura en dos conexiones.
  • sql_suggest_query: genera una plantilla sugerida, no ejecuta.
  • sql_create_query_file: crea un archivo .sql.
  • sql_prepare_mutation: analiza una query de cambio, no ejecuta.
  • sql_execute_mutation: ejecuta cambios solo con modo write_enabled y confirmacion.

Ejemplos

Conexion de solo lectura:

{
  "alias": "dev",
  "server": "localhost",
  "user": "sa",
  "password": "clave",
  "database": "MiBase",
  "mode": "read_only",
  "environment": "dev",
  "trustServerCertificate": true
}

Consulta segura:

SELECT name, create_date
FROM sys.tables
ORDER BY name;

Si la query empieza con SELECT y no tiene TOP, el servidor aplica TOP (1000) por defecto.

Generacion de archivo .sql:

{
  "fileName": "actualizar_estado_clientes.sql",
  "description": "Query propuesta para revisar antes de ejecutar",
  "query": "UPDATE dbo.Clientes SET Estado = 'Activo' WHERE Estado IS NULL;"
}

Ejecucion de cambios:

{
  "alias": "dev-write",
  "query": "UPDATE dbo.Clientes SET Estado = 'Activo' WHERE Estado IS NULL;",
  "confirmation": "ejecuta"
}

Reglas De Seguridad

  • Una conexion read_only nunca ejecuta cambios.
  • sql_create_query_file puede crear archivos .sql aunque la conexion sea de solo lectura.
  • EXEC y EXECUTE estan bloqueados para lectura porque un procedimiento puede modificar datos.
  • Cambios en environment: "prod" requieren que la confirmacion incluya tambien prod.
  • Las claves no se guardan en disco; viven solo en memoria mientras el proceso esta activo.

Desarrollo

npm run dev
npm run build

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors