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.
- 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
- Node.js 16+
- PostgreSQL
- Pour l'intégration avec Docker: Docker et Docker Compose
npm install -g postgresql-mcp
git clone https://github.com/votrecompte/postgresql-mcp.git
cd postgresql-mcp
npm install
npm run build
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.
postgresql-mcp
Le serveur MCP communique via stdin/stdout, ce qui le rend compatible avec les applications qui prennent en charge le protocole MCP.
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
}
}
}
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
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
docker build -t postgresql-mcp -f docker/Dockerfile .
cd docker
docker-compose up -d
Cela va démarrer:
- Un serveur PostgreSQL pour les tests
- Le serveur MCP PostgreSQL
Pour utiliser ce serveur MCP dans n8n dockerisé:
- Ajoutez le service
postgresql-mcp
au 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: true
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>
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
Les contributions sont les bienvenues! N'hésitez pas à ouvrir une issue ou une pull request.
MIT