postgres-mcp-tools
Version:
PostgreSQL-based memory system with vector search capabilities for AI applications, including MCP integration for Claude
181 lines (129 loc) • 5.47 kB
Markdown
# Model Context Protocol (MCP) Integration Guide
This guide explains how PostgreSQL MCP Tools integrates with Claude Desktop using the Model Context Protocol (MCP).
## What is MCP?
Model Context Protocol (MCP) is a lightweight communication standard developed by Anthropic to enable AI assistants like Claude to interact with external tools and data sources. It allows Claude to:
1. Access external resources and tools
2. Store and retrieve context across conversations
3. Extend its capabilities beyond the built-in knowledge
## How PostgreSQL MCP Tools Implements MCP
PostgreSQL MCP Tools implements the MCP protocol to provide:
1. **Memory Resource**: Stores and retrieves relevant conversation context
2. **Memory Management Tool**: Allows Claude to manage stored memories
### Memory Resource
The Memory Resource provides Claude with:
- **Context Storage**: Saves important information from conversations
- **Vector-Based Retrieval**: Finds relevant past memories using semantic search
- **Cross-Conversation Memory**: Maintains knowledge across multiple sessions
### Memory Management Tool
The Memory Management Tool enables Claude to:
- **List Memories**: View memories stored for the current conversation
- **Archive Memories**: Remove old memories based on age
- **Optimize Performance**: Run database optimization routines
## Configuring Claude Desktop
To integrate PostgreSQL MCP Tools with Claude Desktop:
1. Install the `postgres-memory-mcp` package globally:
```bash
npm install -g postgres-memory-mcp
```
2. Configure Claude Desktop with the MCP server information:
```json
{
"mcpServers": {
"postgres_memory": {
"command": "postgres-memory-mcp",
"args": [
"--config",
"{\"embeddingModel\":\"mock\",\"pgHost\":\"localhost\",\"pgPort\":5432,\"pgUser\":\"memory_user\",\"pgPassword\":\"memory_password\",\"pgDatabase\":\"memory_db\"}"
]
}
}
}
```
3. Restart Claude Desktop to load the configuration
## Using MCP with Claude
Once configured, Claude can:
1. **Access Previous Conversations**: Claude automatically searches for relevant past discussions
2. **Store New Information**: Important details are saved for future reference
3. **Manage Memory**: You can ask Claude to perform memory management operations
Example memory management prompts:
```
Use the memory_management tool to list the memories in our current conversation.
```
```
Use the memory_management tool to archive memories older than 30 days.
```
```
Use the memory_management tool to optimize the vector index.
```
## How Memory is Used
When you ask Claude a question, the following process happens:
1. Your question is processed and converted to a vector embedding
2. The database is searched for semantically similar memories
3. Relevant memories are included in Claude's context
4. Claude responds with knowledge of past interactions
This creates a continuous conversation experience across multiple sessions.
## Advanced MCP Features
### Conversation Metadata
You can provide additional metadata in the Claude Desktop configuration:
```json
{
"mcpServers": {
"postgres_memory": {
"command": "postgres-memory-mcp",
"args": [
"--config",
"{\"embeddingModel\":\"openai\",\"openaiApiKey\":\"your-api-key\",\"metadata\":{\"userId\":\"user-123\"}}"
]
}
}
}
```
This metadata can help segment and organize memories by user, project, or other dimensions.
### Environment Variables
If you're running the server directly (not via the Claude Desktop configuration), you can configure it using environment variables:
```bash
EMBEDDING_MODEL=openai \
OPENAI_API_KEY=your-api-key \
PG_HOST=localhost \
PG_PORT=5432 \
PG_USER=memory_user \
PG_PASSWORD=memory_password \
PG_DATABASE=memory_db \
postgres-memory-mcp
```
### Custom MCP Server Implementations
For advanced users, you can implement a custom MCP server that extends the base functionality:
```javascript
import { Server } from 'postgres-memory-mcp';
const customServer = new Server({
resources: [...customResources],
tools: [...customTools],
capabilities: {
resources: { subscribe: true },
tools: { listChanged: true }
}
});
customServer.listen(3000, 'localhost');
```
## Troubleshooting MCP Integration
### Common MCP Issues
1. **Claude doesn't recognize the MCP server**
- Check the configuration path is correct for your OS
- Verify the configuration JSON syntax is valid
- Make sure the `command` points to a valid executable
2. **Claude can't connect to the server**
- Ensure the server is properly installed: `npm list -g postgres-memory-mcp`
- Check if the port is accessible and not blocked by a firewall
- Look for error messages in the terminal when Claude starts
3. **Memory functionality not working**
- Verify the PostgreSQL connection settings
- Check if the pgvector extension is installed
- Make sure the embedding model configuration is correct
For more detailed troubleshooting, you can run the server manually with debug logging:
```bash
DEBUG=mcp:* postgres-memory-mcp
```
## References
- [Anthropic MCP Documentation](https://docs.anthropic.com/claude/docs/model-context-protocol)
- [Claude Desktop Documentation](https://support.anthropic.com/en/articles/8093465-claude-desktop-faqs-and-troubleshooting)
- [PostgreSQL pgvector Documentation](https://github.com/pgvector/pgvector)