Skip to main content
Glama

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)

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