MCP Memory Server
# MCP Memory Server
A Model Context Protocol (MCP) server implementation that provides persistent memory capabilities for Large Language Models.
## Overview
This repository contains a reference implementation of the [Model Context Protocol](https://modelcontextprotocol.io/) Memory Server. The server implements a knowledge graph-based persistent memory system that enables LLMs to store, retrieve, and reason about information across conversations and sessions.
## Features
- **Knowledge Graph Storage**: Persistent graph-based information storage
- **Entity Management**: Create and manage entities and their relationships
- **Semantic Search**: Find relevant information using semantic similarity
- **Cross-session Memory**: Maintain context across different conversations
- **Memory Operations**: Full CRUD operations for memory management
## Installation
```bash
npm install
npm run build
```
## Usage
```bash
# Run the memory server
npx mcp-server-memory
```
## Development
```bash
npm run watch
```
This will start the server in development mode with automatic rebuilding on file changes.
## Running the Server
### Direct Execution
For development and testing, you can run the server directly:
```bash
# Build first (if not already built)
npm run build
# Run the server
node dist/index.js
```
### Using npm binary
After building, you can use the npm binary name:
```bash
npx mcp-server-memory
```
### Background Process
The server runs continuously and communicates via stdio (standard input/output), which is the standard for MCP servers.
## Testing with MCP Inspector
The [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) is an excellent tool for testing and debugging your memory server during development:
### Start the Inspector
```bash
npx @modelcontextprotocol/inspector node dist/index.js
```
This will:
1. Start a proxy server (typically on `127.0.0.1:6277`)
2. Launch the web-based inspector interface (typically at `http://127.0.0.1:6274`)
3. Provide a session token for authentication
### Using the Inspector
The Inspector provides several tabs for testing your server:
- **Resources tab**: View and test memory resources
- **Tools tab**: Test memory management tools (create, update, delete entities)
- **Prompts tab**: Test any prompt templates
- **Notifications pane**: Monitor server logs and messages
### Development Workflow
1. Make changes to `src/index.ts`
2. Run `npm run build` to rebuild
3. Start the Inspector: `npx @modelcontextprotocol/inspector node dist/index.js`
4. Test your changes in the web interface
5. Check the notifications pane for any errors
## Integration with MCP Clients
To use this server with MCP clients (like Claude Desktop), add it to your client configuration:
```json
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/your/mcp-memory-server/dist/index.js"]
}
}
}
```
Or if published to npm:
```json
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["@modelcontextprotocol/server-memory"]
}
}
}
```
## Model Context Protocol
The Model Context Protocol (MCP) is an open standard that enables seamless integration between AI applications and external data sources and tools. Learn more at [modelcontextprotocol.io](https://modelcontextprotocol.io/).
## License
MIT
TDQS
Scored across 9 tools
Most tools have distinct purposes focused on specific operations in the knowledge graph (e.g., create_entities vs. delete_entities, add_observations vs. delete_observations). However, 'open_nodes' and 'search_nodes' could potentially overlap in function—both involve accessing nodes, though 'open_nodes' seems to target specific nodes by name while 'search_nodes' uses queries, which might cause some confusion for an agent.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_observations, create_entities, delete_relations). The verbs are clear and descriptive, and there are no deviations in naming conventions across the set, making it predictable and easy to understand.
With 9 tools, this server is well-scoped for managing a knowledge graph, covering key operations like creation, deletion, reading, and searching. The count is appropriate for the domain, providing a comprehensive set without being overwhelming or too sparse.
The tool set offers strong coverage for knowledge graph management, including CRUD operations for entities, relations, and observations, plus utilities for reading and searching. A minor gap is the lack of update tools (e.g., update_entities or update_relations), which might require workarounds, but core workflows are well-supported.