Memory
Sistema de memória persistente baseado em grafo de conhecimento
Documentação
Servidor de Memória com Knowledge Graph
Uma implementação básica de memória persistente usando um knowledge graph local. Isso permite que o Claude lembre informações sobre o usuário entre conversas.
Publicado no npm como @modelcontextprotocol/server-memory.
Conceitos Principais
Entidades
Entidades são os nós primários no knowledge graph. Cada entidade possui:
- Um nome único (identificador)
- Um tipo de entidade (ex.: "pessoa", "organização", "evento")
- Uma lista de observações
Exemplo:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
Relações
Relações definem conexões direcionadas entre entidades. Elas são sempre armazenadas na voz ativa e descrevem como as entidades interagem ou se relacionam entre si.
Exemplo:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
Observações
Observações são informações discretas sobre uma entidade. Elas são:
- Armazenadas como strings
- Anexadas a entidades específicas
- Podem ser adicionadas ou removidas independentemente
- Devem ser atômicas (um fato por observação)
Exemplo:
{
"entityName": "John_Smith",
"observations": [
"Speaks fluent Spanish",
"Graduated in 2019",
"Prefers morning meetings"
]
}
API
Ferramentas
-
create_entities
- Cria múltiplas novas entidades no knowledge graph
- Entrada:
entities(array de objetos)- Cada objeto contém:
name(string): Identificador da entidadeentityType(string): Classificação de tipoobservations(string[]): Observações associadas
- Cada objeto contém:
- Ignora entidades com nomes existentes
-
create_relations
- Cria múltiplas novas relações entre entidades
- Entrada:
relations(array de objetos)- Cada objeto contém:
from(string): Nome da entidade de origemto(string): Nome da entidade de destinorelationType(string): Tipo de relacionamento na voz ativa
- Cada objeto contém:
- Ignora relações duplicadas
- Falha se a entidade de origem ou destino não existir
-
add_observations
- Adiciona novas observações a entidades existentes
- Entrada:
observations(array de objetos)- Cada objeto contém:
entityName(string): Entidade de destinocontents(string[]): Novas observações a adicionar
- Cada objeto contém:
- Retorna observações adicionadas por entidade
- Falha se a entidade não existir
-
delete_entities
- Remove entidades e suas relações
- Entrada:
entityNames(string[]) - Exclusão em cascata das relações associadas
- Nenhum erro se uma entidade não existir; a resposta informa quais nomes não foram encontrados
-
delete_observations
- Remove observações específicas de entidades
- Entrada:
deletions(array de objetos)- Cada objeto contém:
entityName(string): Entidade de destinoobservations(string[]): Observações a remover
- Cada objeto contém:
- Nenhum erro se uma observação não existir; a resposta informa quantas foram excluídas
-
delete_relations
- Remove relações específicas do grafo
- Entrada:
relations(array de objetos)- Cada objeto contém:
from(string): Nome da entidade de origemto(string): Nome da entidade de destinorelationType(string): Tipo de relacionamento
- Cada objeto contém:
- Nenhum erro se uma relação não existir; a resposta informa quantas foram excluídas
-
read_graph
- Lê todo o knowledge graph
- Nenhuma entrada necessária
- Retorna a estrutura completa do grafo com todas as entidades e relações
-
search_nodes
- Busca nós com base na consulta
- Entrada:
query(string) - Busca em:
- Nomes de entidades
- Tipos de entidades
- Conteúdo das observações
- Retorna entidades correspondentes e suas relações
-
open_nodes
- Recupera nós específicos por nome
- Entrada:
names(string[]) - Retorna:
- Entidades solicitadas
- Relações entre as entidades solicitadas
- Ignora silenciosamente nós inexistentes
Recursos
- knowledge-graph (
memory://knowledge-graph)- O knowledge graph completo como um Recurso MCP legível
- Tipo MIME:
application/json - Retorna a mesma estrutura de
read_graph(entidades e relações) - Ferramentas de mutação (
create_entities,create_relations,add_observations,delete_entities,delete_observations,delete_relations) emitemnotifications/resources/updatedpara este URI, para que clientes inscritos vejam mudanças em tempo real
Uso com Claude Desktop
Configuração
Adicione isto ao seu claude_desktop_config.json:
Docker
{
"mcpServers": {
"memory": {
"command": "docker",
"args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
}
}
}
NPX
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
No Windows, use cmd /c para iniciar npx:
{
"mcpServers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
NPX com configuração personalizada
O servidor pode ser configurado usando as seguintes variáveis de ambiente:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
}
}
}
}
No Windows, use:
{
"mcpServers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
}
}
}
}
MEMORY_FILE_PATH: Caminho para o arquivo JSONL de armazenamento de memória (padrão:memory.jsonlno diretório do servidor)
Instruções de Instalação no VS Code
Para instalação rápida, use um dos botões de instalação com um clique abaixo:
Para instalação manual, você pode configurar o servidor MCP usando um destes métodos:
Método 1: Configuração do Usuário (Recomendado)
Adicione a configuração ao seu arquivo de configuração MCP no nível do usuário. Abra a Paleta de Comandos (Ctrl + Shift + P) e execute MCP: Open User Configuration. Isso abrirá seu arquivo mcp.json de usuário onde você pode adicionar a configuração do servidor.
Método 2: Configuração do Workspace
Alternativamente, você pode adicionar a configuração a um arquivo chamado .vscode/mcp.json no seu workspace. Isso permitirá que você compartilhe a configuração com outras pessoas.
Para mais detalhes sobre a configuração do MCP no VS Code, consulte a documentação oficial do MCP do VS Code.
NPX
{
"servers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
No Windows, use:
{
"servers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
Docker
{
"servers": {
"memory": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"claude-memory:/app/dist",
"--rm",
"mcp/memory"
]
}
}
}
Prompt do Sistema
O prompt para utilizar a memória depende do caso de uso. Alterar o prompt ajudará o modelo a determinar a frequência e os tipos de memórias criadas.
Aqui está um exemplo de prompt para personalização de chat. Você pode usar este prompt no campo "Instruções Personalizadas" de um Projeto Claude.ai.
Follow these steps for each interaction:
1. User Identification:
- You should assume that you are interacting with default_user
- If you have not identified default_user, proactively try to do so.
2. Memory Retrieval:
- Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
- Always refer to your knowledge graph as your "memory"
3. Memory
- While conversing with the user, be attentive to any new information that falls into these categories:
a) Basic Identity (age, gender, location, job title, education level, etc.)
b) Behaviors (interests, habits, etc.)
c) Preferences (communication style, preferred language, etc.)
d) Goals (goals, targets, aspirations, etc.)
e) Relationships (personal and professional relationships up to 3 degrees of separation)
4. Memory Update:
- If any new information was gathered during the interaction, update your memory as follows:
a) Create entities for recurring organizations, people, and significant events
b) Connect them to the current entities using relations
c) Store facts about them as observations
Compilação
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
Para Conscientização: um volume mcp/memory anterior contém um arquivo index.js que pode ser sobrescrito pelo novo contêiner. Se você estiver usando um volume docker para armazenamento, exclua o arquivo index.js do volume docker antigo antes de iniciar o novo contêiner.
Licença
Este servidor MCP é licenciado sob a Licença MIT. Isso significa que você é livre para usar, modificar e distribuir o software, sujeito aos termos e condições da Licença MIT. Para mais detalhes, consulte o arquivo LICENSE no repositório do projeto.