Un servidor MCP (Model Context Protocol) para PostgreSQL que permite a Cursor y otras herramientas interactuar con bases de datos PostgreSQL a través de HTTP.
- ✅ Protocolo MCP completo implementado
- ✅ Conexión a PostgreSQL
- ✅ Servidor HTTP con Express
- ✅ Endpoints REST para pruebas directas
- ✅ Herramientas MCP para consultas SQL
- ✅ Soporte para esquemas y metadatos
- ✅ Manejo de errores robusto
- Clona o descarga este proyecto.
- Instala las dependencias:
npm install
- Copia el archivo de configuración:
cp .env.example .env
- Configura las variables de entorno en
.env
:
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_NAME=tu_base_de_datos
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña
DB_SSL=false
# Modo desarrollo (con auto-reload)
npm run dev
# Modo producción
npm start
El servidor estará disponible en http://localhost:3000
GET /health
POST /mcp
Endpoint principal para comunicación MCP.
POST /query
Content-Type: application/json
{
"query": "SELECT * FROM users LIMIT 10",
"params": []
}
GET /tables
GET /tables/:tableName
Para usar este servidor MCP en Cursor, agrega la siguiente configuración:
Crea o edita el archivo de configuración de Cursor (ubicación depende del OS):
macOS: ~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/config.json
Windows: %APPDATA%\Cursor\User\globalStorage\cursor.mcp\config.json
Linux: ~/.config/Cursor/User/globalStorage/cursor.mcp/config.json
{
"mcpServers": {
"postgres": {
"url": "http://localhost:3000/mcp"
}
}
}
También se incluye un archivo cursor-mcp-config.json
en el proyecto como ejemplo de configuración.
Ejecuta consultas SQL en la base de datos.
{
"name": "postgres_query",
"arguments": {
"query": "SELECT * FROM users WHERE id = $1",
"params": ["123"]
}
}
Lista todas las tablas en la base de datos.
{
"name": "postgres_tables",
"arguments": {}
}
Obtiene información del esquema de la base de datos.
{
"name": "postgres_schema",
"arguments": {
"table_name": "users"
}
}
Describe la estructura de una tabla específica.
{
"name": "postgres_describe_table",
"arguments": {
"table_name": "users"
}
}
curl -X POST http://localhost:3000/query \
-H "Content-Type: application/json" \
-d '{"query": "SELECT version()"}'
curl -X POST http://localhost:3000/query \
-H "Content-Type: application/json" \
-d '{"query": "SELECT * FROM users WHERE age > $1", "params": ["25"]}'
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "postgres_tables",
"arguments": {}
}
}'
src/
├── server.js # Servidor HTTP principal
├── mcp-protocol.js # Implementación del protocolo MCP
└── database.js # Conexión y utilidades de PostgreSQL
test/
└── test.js # Tests básicos
.env.example # Ejemplo de variables de entorno
package.json # Dependencias y scripts
README.md # Este archivo
- Edita
src/mcp-protocol.js
- Registra la nueva herramienta en
initialize()
- Implementa el manejador en
handleToolCall()
- Node.js 18+
- PostgreSQL 12+
- npm o yarn
- Verifica que PostgreSQL esté ejecutándose
- Comprueba las credenciales en
.env
- Asegúrate de que la base de datos existe
- Cambia el puerto en
.env
conPORT=otro_puerto
- Verifica que el usuario de la base de datos tenga permisos de lectura/escritura
- Fork del proyecto
- Crea una rama para tu feature
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
MIT