UNPKG

postgres-mcp-tools

Version:

PostgreSQL-based memory system with vector search capabilities for AI applications, including MCP integration for Claude

269 lines (196 loc) 7.15 kB
# Claude Desktop Setup Guide for PostgreSQL MCP Tools This guide provides detailed instructions for setting up Claude Desktop to work with the PostgreSQL MCP Tools memory system. ## Prerequisites Before starting, ensure you have: 1. [Claude Desktop](https://claude.ai/downloads) installed on your computer 2. [Node.js](https://nodejs.org/) 18.0.0 or higher 3. [Docker Desktop](https://www.docker.com/products/docker-desktop/) for running PostgreSQL ## Important Note About Claude Desktop Integration **New in version 1.0.10**: PostgreSQL MCP Tools has been updated with a robust transport layer that handles mixed message formats gracefully, preventing JSON parsing errors. This update: - Ensures proper integration with Claude Desktop by directing all debug logs to stderr instead of stdout - Handles non-JSON messages gracefully, preventing server crashes - Provides comprehensive error handling for all message types - Maintains proper JSON-RPC protocol communication with the MCP framework For details on the robust transport implementation, see [ROBUST_TRANSPORT.md](docs/ROBUST_TRANSPORT.md). ## Installation Steps ### 1. Install PostgreSQL MCP Tools Install the package globally using npm: ```bash npm install -g postgres-mcp-tools ``` This will: - Install the required dependencies - Generate a secure random password for PostgreSQL - Create a `.env` file with configuration settings ### 2. Start PostgreSQL Database The easiest way to run PostgreSQL is using Docker: ```bash # Navigate to where postgres-mcp-tools is installed cd $(npm root -g)/postgres-mcp-tools # Start PostgreSQL with Docker Compose docker-compose up -d postgres ``` Verify that PostgreSQL is running: ```bash docker ps ``` You should see a container named `memory-postgres` in the list. ### 3. Configure Claude Desktop First, locate your Claude Desktop configuration directory: **macOS**: ```bash mkdir -p ~/Library/Application\ Support/Claude/ cd ~/Library/Application\ Support/Claude/ ``` **Windows**: ```bash mkdir -p %APPDATA%\Claude\ cd %APPDATA%\Claude\ ``` **Linux**: ```bash mkdir -p ~/.config/Claude/ cd ~/.config/Claude/ ``` Create or edit the configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` **Linux**: `~/.config/Claude/claude_desktop_config.json` Add the following content to the file: ```json { "mcpServers": { "postgres_memory": { "command": "postgres-mcp-server", "args": [ "--config", "{\"embeddingModel\":\"mock\",\"pgHost\":\"localhost\",\"pgPort\":5432,\"pgUser\":\"memory_user\",\"pgPassword\":\"YOUR_GENERATED_PASSWORD\",\"pgDatabase\":\"memory_db\",\"mcpPort\":3000}" ], "env": { "FORCE_STDERR_LOGGING": "true", "NODE_ENV": "production", "LOG_LEVEL": "info" } } } } ``` The configuration includes: - `FORCE_STDERR_LOGGING`: Ensures all logging output is directed to stderr, essential for proper MCP protocol communication - `NODE_ENV`: Sets the runtime environment ("production" recommended for stable operation) - `LOG_LEVEL`: Controls the verbosity of logging (options: debug, info, warn, error) - `mcpPort`: Explicitly defines the MCP server port (default: 3000) Replace `YOUR_GENERATED_PASSWORD` with the password from your `.env` file: ```bash # Get password from .env file cd $(npm root -g)/postgres-mcp-tools cat .env | grep POSTGRES_PASSWORD ``` ### 4. Start the MCP Server You can run the MCP server either through Docker or directly: **Option 1: Run with Docker (recommended for production)**: ```bash cd $(npm root -g)/postgres-mcp-tools docker-compose up -d ``` **Option 2: Run directly (better for development)**: ```bash cd $(npm root -g)/postgres-mcp-tools npm run start-server ``` ### 5. Restart Claude Desktop 1. Completely quit Claude Desktop (from system tray/menu bar) 2. Restart Claude Desktop 3. The MCP server should connect automatically ## Verification To verify that Claude is connected to the memory system, ask: ``` Can you check if the PostgreSQL memory system is connected and working properly? ``` Claude should respond with a confirmation that the memory system is active. ## Common Issues and Solutions ### Connection Issues If Claude reports that it cannot connect to the memory system: 1. **Verify PostgreSQL is running**: ```bash docker ps | grep memory-postgres ``` 2. **Check MCP server logs**: ```bash docker logs mcp-server # Or if running directly: cd $(npm root -g)/postgres-mcp-tools npm run start-server ``` 3. **Ensure password matches**: - The password in the Claude configuration must match what's in your `.env` file - Check for special characters that might need escaping in the JSON ### JSON Parsing Errors If you notice errors like "Unexpected token" or "Not valid JSON" in the logs: 1. **Ensure you're using version 1.0.10 or later**: ```bash npm list -g postgres-mcp-tools ``` 2. **Update to the latest version**: ```bash npm update -g postgres-mcp-tools ``` 3. **Verify robust transport configuration**: - The `FORCE_STDERR_LOGGING` environment variable should be set to `true` - Check logs for any remaining parsing errors 4. **Test the transport layer**: ```bash cd $(npm root -g)/postgres-mcp-tools npm run test:basic ``` ### Database Errors If there are database connection errors: 1. **Verify database initialization**: ```bash cd $(npm root -g)/postgres-mcp-tools npm run init-database ``` 2. **Check PostgreSQL logs**: ```bash docker logs memory-postgres ``` 3. **Try accessing PostgreSQL directly**: ```bash # Get password from .env PASSWORD=$(grep POSTGRES_PASSWORD .env | cut -d '=' -f2) # Connect to PostgreSQL docker exec -it memory-postgres psql -U memory_user -d memory_db -W # Enter password when prompted ``` ### Embedding Model Issues If you encounter issues with the embedding model: 1. **Use mock model for testing**: - Set `"embeddingModel":"mock"` in your Claude configuration 2. **For OpenAI embeddings**: - Ensure you have an OpenAI API key - Update your Claude configuration with: ``` "embeddingModel":"openai","openaiApiKey":"your-openai-api-key" ``` 3. **For Anthropic embeddings**: - Ensure you have an Anthropic API key - Update your Claude configuration with: ``` "embeddingModel":"anthropic","anthropicApiKey":"your-anthropic-api-key" ``` ## Advanced Configuration For advanced configuration options, see the full [README.md](README.md). ## Uninstalling To completely remove PostgreSQL MCP Tools: 1. Remove configuration from Claude Desktop 2. Stop and remove Docker containers: ```bash cd $(npm root -g)/postgres-mcp-tools docker-compose down -v ``` 3. Uninstall the package: ```bash npm uninstall -g postgres-mcp-tools ``` ## Troubleshooting If you continue to experience issues, please check the [troubleshooting section](README.md#troubleshooting) in the main README or submit an issue on our GitHub repository.