MCP PostgreSQL Server

by Maxim2324
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Manages configuration through environment variables using .env files for storing database credentials, server settings, and security parameters.

  • Supports repository cloning for installation and source code management during development.

  • Provides example code for API interaction, allowing clients to execute queries and interact with analysis templates.

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

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)

You must be authenticated.

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

Un servidor que se conecta a bases de datos PostgreSQL y proporciona herramientas para explorar esquemas de forma segura, ejecutar consultas SQL de solo lectura y realizar análisis de datos con plantillas prediseñadas.

  1. Current Implementations
    1. 1. MCP PostgreSQL Server (mcp-psql/)
    2. 2. MCP Figma Server (mcp-figma/)
  2. Purpose
    1. Getting Started
      1. Contributing
        1. License
          ID: vaztx3bu73