Enhanced PostgreSQL MCP Server

by GarethCott
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

  • Supports running the PostgreSQL MCP server in a Docker container, with configuration options for connecting to PostgreSQL databases.

  • Provides both read and write access to PostgreSQL databases, allowing for data querying, data modification (insert, update, delete), and schema management (creating tables, functions, triggers, indexes).

Servidor MCP de PostgreSQL (mejorado)

Un servidor de Protocolo de Contexto de Modelo que proporciona acceso de lectura y escritura a bases de datos PostgreSQL. Este servidor permite a los LLM inspeccionar esquemas de bases de datos, ejecutar consultas, modificar datos y crear o modificar objetos de esquemas de bases de datos.

Nota: Esta es una versión mejorada del servidor PostgreSQL MCP original de Anthropic. El servidor original proporciona acceso de solo lectura, mientras que esta versión mejorada añade capacidades de escritura y gestión de esquemas.

Componentes

Herramientas

Consulta de datos

  • consulta
    • Ejecutar consultas SQL de solo lectura contra la base de datos conectada
    • Entrada: sql (cadena): La consulta SQL a ejecutar
    • Todas las consultas se ejecutan dentro de una transacción de SOLO LECTURA

Modificación de datos

  • ejecutar
    • Ejecutar una sentencia SQL que modifica datos (INSERTAR, ACTUALIZAR, ELIMINAR)
    • Entrada: sql (cadena): La declaración SQL a ejecutar
    • Ejecutado dentro de una transacción con manejo adecuado de COMMIT/ROLLBACK
  • insertar
    • Insertar un nuevo registro en una tabla
    • Aporte:
      • table (cadena): el nombre de la tabla
      • data (objeto): pares clave-valor donde las claves son los nombres de las columnas y los valores son los datos a insertar
  • actualizar
    • Actualizar registros en una tabla
    • Aporte:
      • table (cadena): el nombre de la tabla
      • data (objeto): pares clave-valor para los campos a actualizar
      • where (cadena): La condición WHERE para identificar los registros a actualizar
  • borrar
    • Eliminar registros de una tabla
    • Aporte:
      • table (cadena): el nombre de la tabla
      • where (cadena): La condición WHERE para identificar los registros a eliminar

Gestión de esquemas

  • crearTabla
    • Crear una nueva tabla con columnas y restricciones específicas
    • Aporte:
      • tableName (cadena): El nombre de la tabla
      • columns (matriz): Matriz de definiciones de columnas con nombre, tipo y restricciones opcionales
      • constraints (matriz): matriz opcional de restricciones a nivel de tabla
  • crearFunción
    • Crear una función/procedimiento de PostgreSQL
    • Aporte:
      • name (cadena): Nombre de la función
      • parameters (cadena): parámetros de función
      • returnType (cadena): Tipo de retorno
      • language (cadena): Idioma (plpgsql, sql, etc.)
      • body (cadena): Cuerpo de la función
      • options (cadena): Opciones de función adicionales opcionales
  • crearDisparador
    • Crear un disparador en una tabla
    • Aporte:
      • name (cadena): nombre del disparador
      • tableName (cadena): Tabla a la que aplicar el disparador
      • functionName (cadena): Función a llamar
      • when (cadena): ANTES, DESPUÉS o EN LUGAR DE
      • events (matriz): Matriz de eventos (INSERTAR, ACTUALIZAR, ELIMINAR)
      • forEach (cadena): FILA o DECLARACIÓN
      • condition (cadena): condición WHEN opcional
  • crearÍndice
    • Crear un índice en una tabla
    • Aporte:
      • tableName (cadena): nombre de la tabla
      • indexName (cadena): nombre del índice
      • columns (matriz): columnas para indexar
      • unique (booleano): si el índice es único
      • type (cadena): tipo de índice opcional (BTREE, HASH, GIN, GIST, etc.)
      • where (cadena): condición opcional
  • alterarTabla
    • Modificar la estructura de una tabla
    • Aporte:
      • tableName (cadena): nombre de la tabla
      • operation (cadena): Operación (AGREGAR COLUMNA, ELIMINAR COLUMNA, etc.)
      • details (cadena): Detalles de la operación

Recursos

El servidor proporciona información de esquema para cada tabla de la base de datos:

  • Esquemas de tabla ( postgres://<host>/<table>/schema )
    • Información del esquema JSON para cada tabla
    • Incluye nombres de columnas y tipos de datos.
    • Descubierto automáticamente a partir de metadatos de la base de datos

Uso con Claude Desktop

Para usar este servidor con la aplicación Claude Desktop, agregue la siguiente configuración a la sección "mcpServers" de su claude_desktop_config.json :

Estibador

  • Al ejecutar Docker en macOS, use host.docker.internal si el servidor se ejecuta en la red del host (por ejemplo, localhost).
  • El nombre de usuario y la contraseña se pueden agregar a la URL de postgresql con postgresql://user:password@host:port/db-name
  • Agregue ?sslmode=no-verify si necesita omitir la verificación del certificado SSL
{ "mcpServers": { "postgres": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp/postgres", "postgresql://host.docker.internal:5432/mydb"] } } }

NPX

{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb" ] } } }

Reemplace /mydb con el nombre de su base de datos.

Ejemplo de uso

Consultar datos

/query SELECT * FROM users LIMIT 5

Insertar datos

/insert table="users", data={"name": "John Doe", "email": "john@example.com"}

Actualizar datos

/update table="users", data={"status": "inactive"}, where="id='123'"

Crear una tabla

/createTable tableName="tasks", columns=[ {"name": "id", "type": "SERIAL", "constraints": "PRIMARY KEY"}, {"name": "title", "type": "VARCHAR(100)", "constraints": "NOT NULL"}, {"name": "created_at", "type": "TIMESTAMP", "constraints": "DEFAULT CURRENT_TIMESTAMP"} ]

Crear una función y un disparador

/createFunction name="update_timestamp", parameters="", returnType="TRIGGER", language="plpgsql", body="BEGIN NEW.updated_at = NOW(); RETURN NEW; END;" /createTrigger name="set_timestamp", tableName="tasks", functionName="update_timestamp", when="BEFORE", events=["UPDATE"], forEach="ROW"

Edificio

Estibador:

docker build -t mcp/postgres -f Dockerfile .

Consideraciones de seguridad

  1. Todas las operaciones de modificación de datos utilizan transacciones con el manejo adecuado de COMMIT/ROLLBACK
  2. Cada operación devuelve el SQL que se ejecutó para la transparencia.
  3. El servidor utiliza consultas parametrizadas para operaciones de inserción/actualización para evitar la inyección de SQL

Licencia

Este servidor MCP cuenta con la licencia MIT. Esto significa que puede usar, modificar y distribuir el software libremente, sujeto a los términos y condiciones de la licencia MIT. Para más detalles, consulte el archivo de LICENCIA en el repositorio del proyecto.

-
security - not tested
F
license - not found
-
quality - not tested

Un servidor de protocolo de contexto de modelo que proporciona acceso de lectura y escritura a bases de datos PostgreSQL, lo que permite a los LLM consultar datos, modificar registros y administrar esquemas de bases de datos.

  1. Components
    1. Tools
    2. Resources
  2. Usage with Claude Desktop
    1. Docker
    2. NPX
  3. Example Usage
    1. Query Data
    2. Insert Data
    3. Update Data
    4. Create a Table
    5. Create a Function and Trigger
  4. Building
    1. Security Considerations
      1. License
        ID: up7bcmit1h