링크된 문서
Memory MCP 서버
Knowledge Graph Memory 서버
Knowledge Graph Memory 서버는 로컬 지식 그래프를 사용하여 영속적인 메모리를 구현한 기본 서버입니다. 이 서버를 통해 Claude가 채팅 세션 간에 사용자에 관한 정보를 기억할 수 있습니다.
핵심 개념
엔터티(Entities)
엔터티는 지식 그래프의 주요 노드입니다. 각 엔터티는 다음과 같은 속성을 가집니다: - 고유한 이름(식별자) - 엔터티 유형(예: "person", "organization", "event") - 관찰 목록
예시:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
관계(Relations)
관계는 엔터티 간의 방향이 있는 연결을 정의합니다. 항상 능동태로 저장되며 엔터티 간의 상호 작용이나 관계를 설명합니다.
예시:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
관찰(Observations)
관찰은 엔터티에 관한 개별 정보 조각입니다. 관찰은: - 문자열로 저장됨 - 특정 엔터티에 연결됨 - 독립적으로 추가하거나 제거할 수 있음 - 원자적이어야 함(관찰당 하나의 사실)
예시:
{
"entityName": "John_Smith",
"observations": [
"Speaks fluent Spanish",
"Graduated in 2019",
"Prefers morning meetings"
]
}
API 도구
create_entities
지식 그래프에 여러 새 엔터티를 생성합니다.
입력 매개변수:
- entities (개체 배열)
- 각 개체는 다음을 포함:
- name (string): 엔터티 식별자
- entityType (string): 유형 분류
- observations (string[]): 관련 관찰
기존 이름이 있는 엔터티는 무시합니다.
create_relations
엔터티 간의 여러 새 관계를 생성합니다.
입력 매개변수:
- relations (개체 배열)
- 각 개체는 다음을 포함:
- from (string): 소스 엔터티 이름
- to (string): 대상 엔터티 이름
- relationType (string): 능동태의 관계 유형
중복 관계는 건너뜁니다.
add_observations
기존 엔터티에 새 관찰을 추가합니다.
입력 매개변수:
- observations (개체 배열)
- 각 개체는 다음을 포함:
- entityName (string): 대상 엔터티
- contents (string[]): 추가할 새 관찰
엔터티별로 추가된 관찰을 반환합니다. 엔터티가 존재하지 않으면 실패합니다.
delete_entities
엔터티와 해당 관계를 제거합니다.
입력 매개변수:
- entityNames (string[])
관련 관계의 연쇄 삭제를 수행합니다. 엔터티가 존재하지 않으면 조용히 작동합니다.
delete_observations
엔터티에서 특정 관찰을 제거합니다.
입력 매개변수:
- deletions (개체 배열)
- 각 개체는 다음을 포함:
- entityName (string): 대상 엔터티
- observations (string[]): 제거할 관찰
관찰이 존재하지 않으면 조용히 작동합니다.
delete_relations
그래프에서 특정 관계를 제거합니다.
입력 매개변수:
- relations (개체 배열)
- 각 개체는 다음을 포함:
- from (string): 소스 엔터티 이름
- to (string): 대상 엔터티 이름
- relationType (string): 관계 유형
관계가 존재하지 않으면 조용히 작동합니다.
read_graph
전체 지식 그래프를 읽습니다.
입력 매개변수: 필요 없음
모든 엔터티와 관계가 포함된 완전한 그래프 구조를 반환합니다.
search_nodes
쿼리를 기반으로 노드를 검색합니다.
입력 매개변수:
- query (string)
다음에서 검색합니다: - 엔터티 이름 - 엔터티 유형 - 관찰 내용
일치하는 엔터티와 그 관계를 반환합니다.
open_nodes
이름으로 특정 노드를 검색합니다.
입력 매개변수:
- names (string[])
다음을 반환합니다: - 요청된 엔터티 - 요청된 엔터티 간의 관계
존재하지 않는 노드는 조용히 건너뜁니다.
구성 방법
Claude Desktop에서 사용하기
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"
]
}
}
}
사용자 정의 설정의 NPX
서버는 다음 환경 변수를 사용하여 구성할 수 있습니다:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.json"
}
}
}
}
MEMORY_FILE_PATH: 메모리 저장 JSON 파일 경로 (기본값: 서버 디렉토리의memory.json)
VS Code에서 사용하기
VS Code의 사용자 설정(JSON) 파일에 다음을 추가합니다:
NPX 사용
{
"mcp": {
"servers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
}
Docker 사용
{
"mcp": {
"servers": {
"memory": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"claude-memory:/app/dist",
"--rm",
"mcp/memory"
]
}
}
}
}
시스템 프롬프트
메모리를 활용하기 위한 프롬프트는 사용 사례에 따라 달라집니다. 프롬프트를 변경하면 모델이 생성하는 메모리의 빈도와 유형을 결정하는 데 도움이 됩니다.
다음은 채팅 개인화를 위한 예시 프롬프트입니다. Claude.ai 프로젝트의 "사용자 지정 지침" 필드에서 이 프롬프트를 사용할 수 있습니다.
각 상호 작용에 대해 다음 단계를 따르세요:
1. 사용자 식별:
- default_user와 상호 작용하고 있다고 가정해야 합니다.
- default_user를 아직 식별하지 않았다면 적극적으로 식별하려고 시도하세요.
2. 메모리 검색:
- 항상 "Remembering..."이라고만 말하면서 채팅을 시작하고 지식 그래프에서 모든 관련 정보를 검색하세요.
- 항상 지식 그래프를 "memory"라고 지칭하세요.
3. 메모리
- 사용자와 대화하는 동안 다음 카테고리에 속하는 새로운 정보에 주의를 기울이세요:
a) 기본 신원(나이, 성별, 위치, 직함, 교육 수준 등)
b) 행동(관심사, 습관 등)
c) 선호도(커뮤니케이션 스타일, 선호하는 언어 등)
d) 목표(목표, 타겟, 포부 등)
e) 관계(최대 3단계 분리까지의 개인 및 전문적 관계)
4. 메모리 업데이트:
- 상호 작용 중에 새로운 정보를 수집한 경우 다음과 같이 메모리를 업데이트하세요:
a) 반복되는 조직, 사람 및 중요한 이벤트에 대한 엔터티 생성
b) 관계를 사용하여 현재 엔터티에 연결
c) 관찰로 그들에 관한 사실 저장
사용 사례
- 개인화된 상호작용: 사용자의 선호도, 관심사, 과거 상호작용을 기억하여 더 맞춤화된 경험 제공
- 맥락 유지: 여러 대화 세션에 걸쳐 중요한 정보와 맥락 유지
- 관계 추적: 사용자가 언급한 사람, 조직, 이벤트 간의 관계 추적 및 시각화
- 지식 관리: 사용자의 지식 베이스 구축 및 점진적 확장
- 학습 진행 상황 추적: 학습 목표, 완료된 과제, 획득한 지식 추적
빌드 방법
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
라이센스
이 MCP 서버는 MIT 라이센스에 따라 라이센스가 부여됩니다. 이는 MIT 라이센스의 이용 약관에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있음을 의미합니다.