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
license - permissive license
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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