Skip to main content
Glama
Maxim2324

MCP PostgreSQL Server

by Maxim2324

Servidor PostgreSQL MCP

Un servidor Modelo-Controlador-Proveedor (MCP) que:

  • Se conecta a una base de datos PostgreSQL

  • Expone esquemas de tablas como recursos

  • Proporciona herramientas para ejecutar consultas SQL de solo lectura

  • Incluye indicaciones para tareas comunes de análisis de datos.

Características

  • Exploración de esquemas : explore esquemas, tablas y columnas de bases de datos

  • Ejecución de consultas de solo lectura : ejecute consultas SQL de forma segura en su base de datos

  • Indicaciones de análisis de datos : Plantillas SQL prediseñadas para tareas de análisis comunes

  • Visualización de datos : generar datos para visualización

  • Exploración de relaciones : visualice relaciones de tablas y claves externas

  • Documentación de API : Especificación OpenAPI generada automáticamente

Related MCP server: PostgreSQL MCP Server

Arquitectura

Esta aplicación sigue el patrón Modelo-Controlador-Proveedor (MCP):

  • Capa de modelo : interacción directa con la base de datos

  • Capa de proveedor : lógica empresarial y procesamiento de datos

  • Capa de controlador : puntos finales de API y manejo de solicitudes

Características de seguridad

  • Validación de consultas de solo lectura

  • Protección contra inyección SQL

  • Limitación de velocidad

  • Consultas parametrizadas

  • Soporte de autenticación

  • Configuración de CORS

Instalación

  1. Clonar el repositorio:

    git clone <repository-url>
    cd mcp-postgres-server
  2. Instalar dependencias:

    npm install
  3. Cree un archivo .env basado en .env.template :

    cp .env.template .env
  4. Actualice el archivo .env con las credenciales de su base de datos PostgreSQL.

  5. Iniciar el servidor:

    npm start

Configuración

Toda la configuración se gestiona a través de variables de entorno:

  • Servidor : Puerto, entorno, configuración CORS

  • Base de datos : Detalles de conexión, configuración del grupo

  • Seguridad : configuración de JWT, limitación de velocidad

  • Consulta : Límites de ejecución, límites de tamaño de resultados

Puntos finales de API

Puntos finales del esquema

  • GET /api/schemas - Listar todos los esquemas

  • GET /api/schemas/:schema/tables - Listar tablas en un esquema

  • GET /api/schemas/:schema/tables/:table - Obtener detalles del esquema de la tabla

  • GET /api/schemas/:schema/relationships - Obtener relaciones de tablas

  • GET /api/structure - Obtener la estructura completa de la base de datos

  • GET /api/search?q=term - Buscar en tablas y columnas

Puntos finales de consulta

  • POST /api/query - Ejecutar una consulta SQL

  • POST /api/query/explain - Obtener el plan de ejecución de la consulta

  • GET /api/schemas/:schema/tables/:table/sample - Obtener datos de muestra

  • GET /api/schemas/:schema/tables/:table/stats - Obtener estadísticas de la tabla

Puntos finales del mensaje de análisis

  • GET /api/prompts - Plantillas de indicaciones para el análisis de listas

  • GET /api/prompts/:templateId - Obtener detalles de la plantilla de solicitud

  • POST /api/prompts/:templateId/generate - Generar SQL a partir de la plantilla

  • GET /api/schemas/:schema/tables/:table/analysis/suggest - Obtener sugerencias de análisis

Consultas de ejemplo

Consulta de tabla básica

// API request
fetch('/api/query', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    sql: 'SELECT * FROM users LIMIT 10'
  })
})
.then(response => response.json())
.then(data => console.log(data));

Uso de indicaciones de análisis

// Get suggested analysis for a table
fetch('/api/schemas/public/tables/orders/analysis/suggest')
.then(response => response.json())
.then(suggestions => {
  // Use a suggestion
  const suggestionId = suggestions.data[0].templateId;
  const params = suggestions.data[0].params;
  
  // Generate SQL from the template
  return fetch(`/api/prompts/${suggestionId}/generate`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ params })
  });
})
.then(response => response.json())
.then(data => {
  // Execute the generated SQL
  return fetch('/api/query', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ sql: data.data.sql })
  });
})
.then(response => response.json())
.then(results => console.log(results));

Desarrollo

  • Ejecutar en modo de desarrollo: npm run dev

  • Ejecutar pruebas: npm test

  • Código de pelusa: npm run lint

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Maxim2324/mcp-server-test'

If you have feedback or need assistance with the MCP directory API, please join our Discord server