postgresql-mcp-server
v1.0.0
Published
MCP server for PostgreSQL database access and interaction with LLMs
Maintainers
Readme
PostgreSQL MCP Server
Un serveur Model Context Protocol (MCP) permettant aux LLMs d'interagir avec des bases de données PostgreSQL. Ce serveur peut être utilisé avec Claude ou d'autres LLMs compatibles avec MCP pour inspecter des schémas de base de données et exécuter des requêtes SQL.
Fonctionnalités
- Connexion aux bases de données PostgreSQL
- Inspection du schéma de la base de données (tables, colonnes, contraintes, etc.)
- Exécution de requêtes SQL (SELECT, INSERT, UPDATE, DELETE)
- Opérations DDL (CREATE TABLE, ALTER TABLE)
- Validation et sécurisation des requêtes SQL
- Intégration avec n8n en environnement Docker
Prérequis
- Node.js 16+
- PostgreSQL
- Pour l'intégration avec Docker: Docker et Docker Compose
Installation
Installation depuis npm
npm install -g postgresql-mcpInstallation à partir des sources
git clone https://github.com/votrecompte/postgresql-mcp.git
cd postgresql-mcp
npm install
npm run buildConfiguration
Le serveur PostgreSQL MCP ne nécessite pas de fichier de configuration. Les informations de connexion à la base de données sont fournies via l'outil connect_database au moment de l'exécution.
Utilisation
Démarrage du serveur
postgresql-mcpLe serveur MCP communique via stdin/stdout, ce qui le rend compatible avec les applications qui prennent en charge le protocole MCP.
Intégration avec Claude
Pour utiliser ce serveur MCP avec Claude, vous devez l'ajouter aux paramètres MCP de votre application Claude. Par exemple, pour Claude Desktop:
{
"mcpServers": {
"postgresql": {
"command": "postgresql-mcp",
"env": {},
"disabled": false
}
}
}Outils disponibles
Le serveur MCP PostgreSQL fournit les outils suivants:
- connect_database: Se connecter à une base de données PostgreSQL
- disconnect_database: Se déconnecter de la base de données
- execute_query: Exécuter une requête SQL arbitraire
- get_schema: Récupérer le schéma complet de la base de données
- create_table: Créer une nouvelle table
- alter_table: Modifier une table existante
- insert_data: Insérer des données dans une table
- update_data: Mettre à jour des données dans une table
- delete_data: Supprimer des données d'une table
Ressources disponibles
Le serveur expose également des ressources pour explorer la base de données:
- postgresql://schema: Schéma complet de la base de données
- postgresql://{schema}/{table}: Données d'une table spécifique (limité à 100 lignes)
- postgresql://{schema}/{table}/columns: Colonnes d'une table spécifique
- postgresql://{schema}/{table}/constraints: Contraintes d'une table spécifique
- postgresql://{schema}/{table}/foreign-keys: Clés étrangères d'une table spécifique
Utilisation avec Docker et n8n
Construction de l'image Docker
docker build -t postgresql-mcp -f docker/Dockerfile .Démarrage avec Docker Compose
cd docker
docker-compose up -dCela va démarrer:
- Un serveur PostgreSQL pour les tests
- Le serveur MCP PostgreSQL
Configuration de n8n
Pour utiliser ce serveur MCP dans n8n dockerisé:
- Ajoutez le service
postgresql-mcpau fichier docker-compose.yml de n8n - Configurez n8n pour utiliser le serveur MCP en définissant les variables d'environnement appropriées
Exemple d'ajout au docker-compose.yml de n8n:
services:
# Autres services n8n...
postgresql-mcp:
image: votre-image/postgresql-mcp:latest
stdin_open: true
tty: trueExemple d'utilisation
Voici un exemple d'utilisation du serveur MCP PostgreSQL avec Claude:
Claude: Comment puis-je me connecter à une base de données PostgreSQL?
Vous: Vous pouvez utiliser l'outil connect_database pour vous connecter à votre base de données PostgreSQL.
Claude: Je vais vous aider à vous connecter à une base de données PostgreSQL.
<use_mcp_tool>
<server_name>postgresql</server_name>
<tool_name>connect_database</tool_name>
<arguments>
{
"host": "localhost",
"port": 5432,
"database": "mabase",
"user": "utilisateur",
"password": "motdepasse",
"ssl": false
}
</arguments>
</use_mcp_tool>Sécurité
Le serveur PostgreSQL MCP inclut plusieurs fonctionnalités de sécurité:
- Validation des requêtes SQL pour éviter les injections
- Possibilité de limiter les types d'opérations SQL autorisées
- Restriction des tables accessibles
- Prévention des opérations dangereuses comme DROP DATABASE
Contribution
Les contributions sont les bienvenues! N'hésitez pas à ouvrir une issue ou une pull request.
Licence
MIT
