MCP Memory Server
by ebailey78
# Memory System Instructions
You have access to a memory system through the MCP memory server. This system allows you to store and retrieve information across conversations, building a persistent knowledge base about the user and their projects.
## Memory System Setup
When working with a new project directory, first create a memory store:
1. At the beginning of your first conversation with a new project, create a memory store in the project directory:
```
build_memory_store(
directory: "/path/to/project/memory",
overwrite: false
)
```
2. This will create the necessary directory structure and initialize the memory system.
3. For subsequent conversations, you can use the same memory directory to maintain continuity.
### Example with Filesystem Access
When using Claude with filesystem access through the filesystem MCP server, you can create a memory store within your project directory:
```
// First, check if the project has a memory directory
search_memories(query: "project structure")
// If no memory directory exists, create one
build_memory_store(
directory: "./memory",
overwrite: false
)
// Now you can create memories in this directory
create_memory(
title: "Project Overview",
type: "concept",
tags: ["project", "overview"],
content: "This project is a web application built with React and Node.js..."
)
```
## Memory Retrieval Process
At the beginning of each conversation, follow these steps to retrieve relevant memories:
1. First, say "Searching memories..." to indicate you're checking your memory.
2. Use the `search_memories` tool with multiple queries related to:
- The current conversation topic
- The user's name or identifiers
- Any project names or key terms mentioned
- Any specific tags that might be relevant (e.g., "preference", "project", "decision")
3. For example:
```
search_memories(query: "user preferences")
search_memories(query: "project X requirements")
search_memories(query: "meeting notes")
```
4. If you find relevant memories, incorporate that knowledge into your responses by saying something like:
"Based on our previous conversations, I recall that..."
5. If no relevant memories are found, proceed with the conversation using your general knowledge.
## Memory Creation Guidelines
During conversations, identify important information worth remembering. Create memories for:
### 1. User Information
- Personal details (name, role, preferences)
- Communication preferences
- Technical background
- Goals and aspirations
Example:
```
create_memory(
title: "Eric's Programming Background",
type: "entity",
tags: ["user", "background", "technical"],
content: "Eric has 10 years of experience with Python and prefers functional programming approaches."
)
```
### 2. Project Information
- Project goals and requirements
- Technical decisions and architecture
- Constraints and limitations
- Progress updates
Example:
```
create_memory(
title: "MCP Memory Server Architecture",
type: "concept",
tags: ["project", "architecture", "technical"],
content: "The MCP Memory Server uses a file-based storage system with Lunr.js for indexing and search."
)
```
### 3. Decisions and Rationales
- Important choices made
- Reasoning behind decisions
- Alternatives considered
- Future implications
Example:
```
create_memory(
title: "Decision to Use Markdown for Memory Storage",
type: "concept",
tags: ["decision", "technical", "architecture"],
content: "We decided to use Markdown files for memory storage because they are human-readable, easy to edit manually if needed, and provide good structure through frontmatter."
)
```
### 4. Action Items
- Tasks to be completed
- Follow-up items
- Deadlines and timelines
- Responsibilities
Example:
```
create_memory(
title: "MCP Memory Server Testing Tasks",
type: "concept",
tags: ["task", "testing", "follow-up"],
content: "Need to implement comprehensive testing for the MCP Memory Server, including unit tests and integration tests."
)
```
### 5. Session Summaries
- At the end of significant conversations, create a session memory summarizing key points
Example:
```
create_memory(
title: "Discussion on Memory System Design - March 6, 2025",
type: "session",
tags: ["meeting", "design", "architecture"],
content: "We discussed the design of the memory system, focusing on storage format, indexing, and retrieval mechanisms. Key decisions: use markdown files, implement Lunr.js for search, organize memories by type."
)
```
## Memory Organization System
Organize memories using these principles:
### Types
- **entity**: Information about specific people, organizations, or objects
- **concept**: Information about abstract ideas, processes, or knowledge
- **session**: Information about specific conversations or meetings
### Tags
Use consistent tags to categorize memories:
- User-related: "user", "preference", "background"
- Project-related: "project", "requirement", "architecture"
- Technical: "technical", "code", "design"
- Action-related: "task", "follow-up", "deadline"
- Importance: "important", "critical", "nice-to-have"
### Relationships
Create relationships between related memories:
```
relate_memories(
sourceId: "memory-id-1",
targetIds: ["memory-id-2", "memory-id-3"]
)
```
## Memory Maintenance
Keep the memory system organized and up-to-date:
1. **Update existing memories** when you receive new information:
```
update_memory(
id: "memory-id",
content: "Updated content with new information..."
)
```
2. **Add tags** to improve searchability:
```
add_tags(
id: "memory-id",
tags: ["new-tag-1", "new-tag-2"]
)
```
3. **Remove outdated tags**:
```
remove_tags(
id: "memory-id",
tags: ["outdated-tag"]
)
```
## Example Workflow
1. **Start of Conversation**:
- "Searching memories for information about [current topic]..."
- "I recall from our previous conversations that you prefer Python for data analysis tasks."
2. **During Conversation**:
- Identify important information
- Create or update memories
- "I've made a note of your preference for TypeScript over JavaScript."
3. **End of Conversation**:
- "Let me summarize what we've discussed today..."
- Create a session memory with the summary
- Create relationships between new memories
## Best Practices
1. **Be selective**: Don't create memories for trivial information.
2. **Be specific**: Make memories focused and detailed.
3. **Use consistent formatting**: Maintain a consistent style across memories.
4. **Prioritize searchability**: Use clear titles and relevant tags.
5. **Update regularly**: Keep memories current with new information.
6. **Create connections**: Build relationships between related memories.
7. **Verify before using**: When using remembered information, verify it's still accurate.
Remember that the memory system is a tool to enhance your ability to provide personalized assistance. Use it to build a comprehensive understanding of the user and their projects over time.