Skip to main content
Glama

Memento MCP: LLM을 위한 지식 그래프 메모리 시스템

메멘토 MCP 로고

의미 검색, 맥락적 회상, 시간 인식 기능을 갖춘 확장 가능하고 고성능의 지식 그래프 메모리 시스템입니다. 모델 맥락 프로토콜(예: Claude Desktop, Cursor, Github Copilot)을 지원하는 모든 LLM 클라이언트에 복원력, 적응성, 지속성을 갖춘 장기 온톨로지 메모리를 제공합니다.

메멘토 MCP 테스트 대장간 배지

핵심 개념

엔티티

엔티티는 지식 그래프의 주요 노드입니다. 각 엔티티는 다음을 갖습니다.

  • 고유한 이름(식별자)

  • 엔터티 유형(예: "사람", "조직", "이벤트")

  • 관찰 목록

  • 벡터 임베딩(의미 검색용)

  • 전체 버전 기록

예:

지엑스피1

처지

관계는 향상된 속성을 가진 엔터티 간의 방향성 연결을 정의합니다.

  • 강도 지표(0.0-1.0)

  • 신뢰 수준(0.0-1.0)

  • 풍부한 메타데이터(소스, 타임스탬프, 태그)

  • 버전 기록을 통한 시간 인식

  • 시간 기반 신뢰도 감소

예:

{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at",
  "strength": 0.9,
  "confidence": 0.95,
  "metadata": {
    "source": "linkedin_profile",
    "last_verified": "2025-03-21"
  }
}

Related MCP server: Graph Memory MCP

스토리지 백엔드

Memento MCP는 Neo4j를 스토리지 백엔드로 사용하여 그래프 스토리지와 벡터 검색 기능을 위한 통합 솔루션을 제공합니다.

왜 Neo4j인가?

  • 통합 스토리지 : 그래프와 벡터 스토리지를 단일 데이터베이스로 통합합니다.

  • 네이티브 그래프 작업 : 그래프 탐색 및 쿼리를 위해 특별히 구축됨

  • 통합 벡터 검색 : Neo4j에 직접 내장된 임베딩에 대한 벡터 유사성 검색

  • 확장성 : 대규모 지식 그래프로 더 나은 성능 제공

  • 단순화된 아키텍처 : 모든 작업을 위한 단일 데이터베이스를 갖춘 깔끔한 디자인

필수 조건

  • Neo4j 5.13+(벡터 검색 기능에 필요)

Neo4j 데스크톱 설정(권장)

Neo4j를 시작하는 가장 쉬운 방법은 Neo4j Desktop을 사용하는 것입니다.

  1. https://neo4j.com/download/ 에서 Neo4j Desktop을 다운로드하고 설치하세요.

  2. 새 프로젝트를 만듭니다

  3. 새로운 데이터베이스 추가

  4. 비밀번호를 memento_password (또는 원하는 비밀번호)로 설정하세요.

  5. 데이터베이스 시작

Neo4j 데이터베이스는 다음 위치에서 사용할 수 있습니다.

  • Bolt URI : bolt://127.0.0.1:7687 (드라이버 연결용)

  • HTTP : http://127.0.0.1:7474 (Neo4j 브라우저 UI용)

  • 기본 자격 증명 : 사용자 이름: neo4j , 비밀번호: memento_password (또는 사용자가 구성한 것)

Docker를 사용한 Neo4j 설정(대안)

또는 Docker Compose를 사용하여 Neo4j를 실행할 수 있습니다.

# Start Neo4j container
docker-compose up -d neo4j

# Stop Neo4j container
docker-compose stop neo4j

# Remove Neo4j container (preserves data)
docker-compose rm neo4j

Docker를 사용하면 Neo4j 데이터베이스를 다음 위치에서 사용할 수 있습니다.

  • Bolt URI : bolt://127.0.0.1:7687 (드라이버 연결용)

  • HTTP : http://127.0.0.1:7474 (Neo4j 브라우저 UI용)

  • 기본 자격 증명 : 사용자 이름: neo4j , 비밀번호: memento_password

데이터 지속성 및 관리

docker-compose.yml 파일의 Docker 볼륨 구성으로 인해 컨테이너를 다시 시작하거나 버전을 업그레이드해도 Neo4j 데이터는 그대로 유지됩니다.

volumes:
  - ./neo4j-data:/data
  - ./neo4j-logs:/logs
  - ./neo4j-import:/import

이러한 매핑은 다음을 보장합니다.

  • /data 디렉토리(모든 데이터베이스 파일 포함)는 호스트의 ./neo4j-data 에 저장됩니다.

  • /logs 디렉토리는 호스트의 ./neo4j-logs 에 저장됩니다.

  • /import 디렉토리(데이터 파일을 가져오기 위한)는 ./neo4j-import 에 저장됩니다.

필요한 경우 docker-compose.yml 파일에서 이러한 경로를 수정하여 다른 위치에 데이터를 저장할 수 있습니다.

Neo4j 버전 업그레이드

데이터 손실 없이 Neo4j 에디션과 버전을 변경할 수 있습니다.

  1. docker-compose.yml 에서 Neo4j 이미지 버전을 업데이트합니다.

  2. docker-compose down && docker-compose up -d neo4j 로 컨테이너를 다시 시작합니다.

  3. npm run neo4j:init 사용하여 스키마를 다시 초기화합니다.

볼륨 매핑이 동일하게 유지되는 한 이 프로세스에도 데이터가 유지됩니다.

데이터베이스 재설정 완료

Neo4j 데이터베이스를 완전히 재설정해야 하는 경우:

# Stop the container
docker-compose stop neo4j

# Remove the container
docker-compose rm -f neo4j

# Delete the data directory contents
rm -rf ./neo4j-data/*

# Restart the container
docker-compose up -d neo4j

# Reinitialize the schema
npm run neo4j:init
데이터 백업

Neo4j 데이터를 백업하려면 데이터 디렉토리를 복사하기만 하면 됩니다.

# Make a backup of the Neo4j data
cp -r ./neo4j-data ./neo4j-data-backup-$(date +%Y%m%d)

Neo4j CLI 유틸리티

Memento MCP에는 Neo4j 작업을 관리하기 위한 명령줄 유틸리티가 포함되어 있습니다.

연결 테스트

Neo4j 데이터베이스에 대한 연결을 테스트하세요.

# Test with default settings
npm run neo4j:test

# Test with custom settings
npm run neo4j:test -- --uri bolt://127.0.0.1:7687 --username myuser --password mypass --database neo4j

스키마 초기화

일반적인 작동의 경우, Memento MCP가 데이터베이스에 연결될 때 Neo4j 스키마 초기화가 자동으로 수행됩니다. 일반적인 사용 시에는 수동 명령을 실행할 필요가 없습니다.

다음 명령은 개발, 테스트 또는 고급 사용자 지정 시나리오에만 필요합니다.

# Initialize with default settings (only needed for development or troubleshooting)
npm run neo4j:init

# Initialize with custom vector dimensions
npm run neo4j:init -- --dimensions 768 --similarity euclidean

# Force recreation of all constraints and indexes
npm run neo4j:init -- --recreate

# Combine multiple options
npm run neo4j:init -- --vector-index custom_index --dimensions 384 --recreate

고급 기능

의미 검색

키워드만이 아닌 의미를 기반으로 의미적으로 관련된 엔터티를 찾으세요.

  • 벡터 임베딩 : 엔터티는 OpenAI의 임베딩 모델을 사용하여 고차원 벡터 공간에 자동으로 인코딩됩니다.

  • 코사인 유사성 : 용어가 다르더라도 관련 개념을 찾습니다.

  • 구성 가능한 임계값 : 결과 관련성을 제어하기 위한 최소 유사도 점수 설정

  • 크로스 모달 검색 : 설명 방식에 관계없이 관련 엔터티를 찾기 위해 텍스트가 포함된 쿼리

  • 다중 모델 지원 : 여러 임베딩 모델과 호환(OpenAI text-embedding-3-small/large)

  • 문맥적 검색 : 정확한 키워드 일치보다는 의미적 의미에 따라 정보를 검색합니다.

  • 최적화된 기본값 : 정밀도와 재현율 간의 균형을 위해 조정된 매개변수(0.6 유사도 임계값, 하이브리드 검색 활성화)

  • 하이브리드 검색 : 의미 검색과 키워드 검색을 결합하여 더욱 포괄적인 결과를 제공합니다.

  • 적응형 검색 : 시스템은 쿼리 특성과 사용 가능한 데이터를 기반으로 벡터 전용, 키워드 전용 또는 하이브리드 검색 중에서 지능적으로 선택합니다.

  • 성능 최적화 : 복원력을 위한 대체 메커니즘을 유지하면서 의미적 이해를 위한 벡터 검색을 우선시합니다.

  • 쿼리 인식 처리 : 쿼리 복잡성 및 사용 가능한 엔터티 임베딩을 기반으로 검색 전략을 조정합니다.

시간 인식

특정 시점의 그래프 검색을 통해 엔터티 및 관계의 전체 기록을 추적합니다.

  • 전체 버전 기록 : 엔터티 또는 관계에 대한 모든 변경 사항은 타임스탬프와 함께 보존됩니다.

  • 특정 시점 쿼리 : 과거 어느 시점의 지식 그래프의 정확한 상태를 검색합니다.

  • 변경 추적 : createdAt, updatedAt, validFrom 및 validTo 타임스탬프를 자동으로 기록합니다.

  • 시간적 일관성 : 지식이 어떻게 진화했는지에 대한 역사적으로 정확한 관점을 유지합니다.

  • 비파괴적 업데이트 : 업데이트는 기존 데이터를 덮어쓰는 대신 새 버전을 생성합니다.

  • 시간 기반 필터링 : 시간 기준에 따라 그래프 요소 필터링

  • 역사 탐구 : 시간이 지남에 따라 특정 정보가 어떻게 변했는지 조사합니다.

자신감 저하

관계는 구성 가능한 반감기에 따라 시간이 지남에 따라 자동으로 신뢰도가 감소합니다.

  • 시간 기반 감소 : 관계에 대한 신뢰는 강화되지 않으면 시간이 지남에 따라 자연스럽게 감소합니다.

  • 구성 가능한 반감기 : 정보가 얼마나 빨리 불확실해지는지 정의합니다(기본값: 30일)

  • 최소 신뢰 수준 : 중요 정보의 과도한 붕괴를 방지하기 위한 임계값 설정

  • 붕괴 메타데이터 : 각 관계에는 자세한 붕괴 계산 정보가 포함되어 있습니다.

  • 비파괴적 : 원래 신뢰 값은 감소된 값과 함께 보존됩니다.

  • 강화 학습 : 새로운 관찰을 통해 강화되면 관계가 자신감을 회복합니다.

  • 참조 시간 유연성 : 과거 분석을 위해 임의의 참조 시간을 기반으로 감소를 계산합니다.

고급 메타데이터

사용자 정의 필드가 있는 엔터티와 관계 모두에 대한 풍부한 메타데이터 지원:

  • 소스 추적 : 정보가 어디에서 유래되었는지 기록합니다(사용자 입력, 분석, 외부 소스)

  • 신뢰 수준 : 확실성에 따라 관계에 신뢰 점수(0.0-1.0)를 할당합니다.

  • 관계 강도 : 관계의 중요성 또는 강도를 나타냅니다(0.0-1.0)

  • 시간 메타데이터 : 정보가 추가, 수정 또는 검증된 시점을 추적합니다.

  • 사용자 정의 태그 : 분류 및 필터링을 위한 임의의 태그 추가

  • 구조화된 데이터 : 메타데이터 필드 내에 복잡한 구조화된 데이터를 저장합니다.

  • 쿼리 지원 : 메타데이터 속성을 기반으로 검색 및 필터링

  • 확장 가능한 스키마 : 핵심 데이터 모델을 수정하지 않고 필요에 따라 사용자 정의 필드를 추가합니다.

MCP API 도구

다음 도구는 모델 컨텍스트 프로토콜을 통해 LLM 클라이언트 호스트에서 사용할 수 있습니다.

엔티티 관리

  • 엔티티 생성

    • 지식 그래프에 여러 개의 새 엔터티 만들기

    • 입력: entities (객체 배열)

      • 각 객체에는 다음이 포함됩니다.

        • name (문자열): 엔터티 식별자

        • entityType (문자열): 유형 분류

        • observations (문자열[]): 연관된 관찰

  • 관찰 추가

    • 기존 엔터티에 새로운 관찰 추가

    • 입력: observations (객체 배열)

      • 각 객체에는 다음이 포함됩니다.

        • entityName (문자열): 대상 엔티티

        • contents (문자열[]): 추가할 새로운 관찰

  • 엔티티 삭제

    • 엔터티와 해당 관계 제거

    • 입력: entityNames (string[])

  • 관찰 삭제

    • 엔터티에서 특정 관찰을 제거합니다.

    • 입력: deletions (객체 배열)

      • 각 객체에는 다음이 포함됩니다.

        • entityName (문자열): 대상 엔티티

        • observations (string[]): 제거할 관찰

관계 관리

  • 관계 생성

    • 향상된 속성을 사용하여 엔터티 간에 여러 개의 새로운 관계를 생성합니다.

    • 입력: relations (객체 배열)

      • 각 객체에는 다음이 포함됩니다.

        • from (문자열): 소스 엔터티 이름

        • to (문자열): 대상 엔터티 이름

        • relationType (문자열): 관계 유형

        • strength (숫자, 선택 사항): 관계 강도(0.0-1.0)

        • confidence (숫자, 선택 사항): 신뢰 수준(0.0-1.0)

        • metadata (객체, 선택 사항): 사용자 정의 메타데이터 필드

  • get_relation

    • 향상된 속성을 통해 특정 관계를 얻으세요

    • 입력:

      • from (문자열): 소스 엔터티 이름

      • to (문자열): 대상 엔터티 이름

      • relationType (문자열): 관계 유형

  • 업데이트_관계

    • 향상된 속성으로 기존 관계 업데이트

    • 입력: relation (객체):

      • 포함 내용:

        • from (문자열): 소스 엔터티 이름

        • to (문자열): 대상 엔터티 이름

        • relationType (문자열): 관계 유형

        • strength (숫자, 선택 사항): 관계 강도(0.0-1.0)

        • confidence (숫자, 선택 사항): 신뢰 수준(0.0-1.0)

        • metadata (객체, 선택 사항): 사용자 정의 메타데이터 필드

  • 관계 삭제

    • 그래프에서 특정 관계 제거

    • 입력: relations (객체 배열)

      • 각 객체에는 다음이 포함됩니다.

        • from (문자열): 소스 엔터티 이름

        • to (문자열): 대상 엔터티 이름

        • relationType (문자열): 관계 유형

그래프 연산

  • 읽기_그래프

    • 지식 그래프 전체를 읽어보세요

    • 입력이 필요하지 않습니다

  • 검색_노드

    • 쿼리 기반 노드 검색

    • 입력: query (문자열)

  • 오픈 노드

    • 이름으로 특정 노드 검색

    • 입력: names (string[])

의미 검색

  • 의미론적 검색

    • 벡터 임베딩과 유사성을 사용하여 의미적으로 엔터티 검색

    • 입력:

      • query (문자열): 의미적으로 검색할 텍스트 쿼리

      • limit (숫자, 선택 사항): 반환할 최대 결과 수(기본값: 10)

      • min_similarity (숫자, 선택 사항): 최소 유사도 임계값(0.0-1.0, 기본값: 0.6)

      • entity_types (string[], 선택 사항): 엔티티 유형별로 결과 필터링

      • hybrid_search (부울, 선택 사항): 키워드 검색과 의미 검색을 결합합니다(기본값: true)

      • semantic_weight (숫자, 선택 사항): 하이브리드 검색에서 의미적 결과의 가중치(0.0-1.0, 기본값: 0.6)

    • 특징:

      • 쿼리 컨텍스트에 따라 최적의 검색 방법(벡터, 키워드 또는 하이브리드)을 지능적으로 선택합니다.

      • 의미적 일치가 없는 쿼리를 대체 메커니즘을 통해 우아하게 처리합니다.

      • 자동 최적화 결정으로 높은 성능 유지

  • 엔티티 임베딩 가져오기

    • 특정 엔터티에 대한 벡터 임베딩 가져오기

    • 입력:

      • entity_name (문자열): 임베딩을 가져올 엔티티의 이름

시간적 특징

  • 엔티티 히스토리 가져오기

    • 엔터티의 전체 버전 기록 가져오기

    • 입력: entityName (문자열)

  • get_relation_history

    • 관계의 전체 버전 기록 가져오기

    • 입력:

      • from (문자열): 소스 엔터티 이름

      • to (문자열): 대상 엔터티 이름

      • relationType (문자열): 관계 유형

  • 시간에 그래프 가져오기

    • 특정 타임스탬프에서 그래프 상태를 가져옵니다.

    • 입력: timestamp (숫자): Unix 타임스탬프(시대 이후 밀리초)

  • 부패된 그래프 얻기

    • 시간 감소 신뢰도 값을 사용하여 그래프 가져오기

    • 입력: options (객체, 선택 사항):

      • reference_time (숫자): 감쇠 계산을 위한 참조 타임스탬프(epoch 이후 밀리초)

      • decay_factor (숫자): 선택적 붕괴 인자 재정의

구성

환경 변수

다음 환경 변수를 사용하여 Memento MCP를 구성하세요.

# Neo4j Connection Settings
NEO4J_URI=bolt://127.0.0.1:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=memento_password
NEO4J_DATABASE=neo4j

# Vector Search Configuration
NEO4J_VECTOR_INDEX=entity_embeddings
NEO4J_VECTOR_DIMENSIONS=1536
NEO4J_SIMILARITY_FUNCTION=cosine

# Embedding Service Configuration
MEMORY_STORAGE_TYPE=neo4j
OPENAI_API_KEY=your-openai-api-key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small

# Debug Settings
DEBUG=true

명령줄 옵션

Neo4j CLI 도구는 다음 옵션을 지원합니다.

--uri <uri>              Neo4j server URI (default: bolt://127.0.0.1:7687)
--username <username>    Neo4j username (default: neo4j)
--password <password>    Neo4j password (default: memento_password)
--database <n>           Neo4j database name (default: neo4j)
--vector-index <n>       Vector index name (default: entity_embeddings)
--dimensions <number>    Vector dimensions (default: 1536)
--similarity <function>  Similarity function (cosine|euclidean) (default: cosine)
--recreate               Force recreation of constraints and indexes
--no-debug               Disable detailed output (debug is ON by default)

임베딩 모델

사용 가능한 OpenAI 임베딩 모델:

  • text-embedding-3-small : 효율적이고 비용 효율적(1536차원)

  • text-embedding-3-large : 정확도는 더 높고, 비용은 더 비쌈(3072차원)

  • text-embedding-ada-002 : 레거시 모델(1536차원)

OpenAI API 구성

의미 검색을 사용하려면 OpenAI API 자격 증명을 구성해야 합니다.

  1. OpenAI 에서 API 키 받기

  2. 다음을 사용하여 환경을 구성하세요.

# OpenAI API Key for embeddings
OPENAI_API_KEY=your-openai-api-key
# Default embedding model
OPENAI_EMBEDDING_MODEL=text-embedding-3-small

참고 : 테스트 환경에서 API 키가 제공되지 않으면 시스템은 임베딩 생성을 모의합니다. 하지만 통합 테스트에는 실제 임베딩을 사용하는 것이 좋습니다.

Claude Desktop과 통합

구성

claude_desktop_config.json 에 다음을 추가하세요:

{
  "mcpServers": {
    "memento": {
      "command": "npx",
      "args": ["-y", "@gannonh/memento-mcp"],
      "env": {
        "MEMORY_STORAGE_TYPE": "neo4j",
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "memento_password",
        "NEO4J_DATABASE": "neo4j",
        "NEO4J_VECTOR_INDEX": "entity_embeddings",
        "NEO4J_VECTOR_DIMENSIONS": "1536",
        "NEO4J_SIMILARITY_FUNCTION": "cosine",
        "OPENAI_API_KEY": "your-openai-api-key",
        "OPENAI_EMBEDDING_MODEL": "text-embedding-3-small",
        "DEBUG": "true"
      }
    }
  }
}

또는 로컬 개발을 위해 다음을 사용할 수 있습니다.

{
  "mcpServers": {
    "memento": {
      "command": "/path/to/node",
      "args": ["/path/to/memento-mcp/dist/index.js"],
      "env": {
        "MEMORY_STORAGE_TYPE": "neo4j",
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "memento_password",
        "NEO4J_DATABASE": "neo4j",
        "NEO4J_VECTOR_INDEX": "entity_embeddings",
        "NEO4J_VECTOR_DIMENSIONS": "1536",
        "NEO4J_SIMILARITY_FUNCTION": "cosine",
        "OPENAI_API_KEY": "your-openai-api-key",
        "OPENAI_EMBEDDING_MODEL": "text-embedding-3-small",
        "DEBUG": "true"
      }
    }
  }
}

중요 : 일관된 동작을 보장하려면 Claude Desktop 구성에서 항상 내장 모델을 명시적으로 지정하세요.

권장 시스템 프롬프트

Claude와 최적의 통합을 위해 시스템 프롬프트에 다음 명령문을 추가하세요.

You have access to the Memento MCP knowledge graph memory system, which provides you with persistent memory capabilities.
Your memory tools are provided by Memento MCP, a sophisticated knowledge graph implementation.
When asked about past conversations or user information, always check the Memento MCP knowledge graph first.
You should use semantic_search to find relevant information in your memory when answering questions.

의미 검색 테스트

구성이 완료되면 Claude는 자연어를 통해 의미 검색 기능에 액세스할 수 있습니다.

  1. 의미적 임베딩을 사용하여 엔터티를 생성하려면:

    User: "Remember that Python is a high-level programming language known for its readability and JavaScript is primarily used for web development."
  2. 의미적으로 검색하려면:

    User: "What programming languages do you know about that are good for web development?"
  3. 특정 정보를 검색하려면:

    User: "Tell me everything you know about Python."

이 접근 방식의 장점은 사용자가 자연스럽게 상호 작용할 수 있고, LLM이 적절한 메모리 도구를 선택하고 사용하는 데 따르는 복잡성을 처리한다는 것입니다.

실제 세계 응용 프로그램

Memento의 적응형 검색 기능은 다음과 같은 실질적인 이점을 제공합니다.

  1. 다양한 쿼리 유형 : 사용자는 질문을 어떻게 표현해야 할지 걱정할 필요가 없습니다. 시스템은 다양한 쿼리 유형에 자동으로 적응합니다.

  2. 실패 회복력 : 의미적 일치가 사용 가능하지 않더라도 시스템은 사용자 개입 없이 대체 방법으로 대체될 수 있습니다.

  3. 성능 효율성 : 최적의 검색 방법을 지능적으로 선택함으로써 시스템은 각 쿼리에 대한 성능과 관련성의 균형을 맞춥니다.

  4. 향상된 컨텍스트 검색 : LLM 대화는 시스템이 복잡한 지식 그래프에서 관련 정보를 찾을 수 있으므로 더 나은 컨텍스트 검색의 이점을 얻습니다.

예를 들어, 사용자가 "머신러닝에 대해 무엇을 알고 계십니까?"라고 질문하면 시스템은 "머신러닝"을 명시적으로 언급하지 않더라도 개념적으로 관련된 항목(예: 신경망, 데이터 과학 또는 특정 알고리즘 관련 항목)을 검색할 수 있습니다. 하지만 의미 검색에서 충분한 결과가 나오지 않으면 시스템은 자동으로 접근 방식을 조정하여 유용한 정보가 계속 반환되도록 합니다.

문제 해결

벡터 검색 진단

Memento MCP에는 벡터 검색 문제를 해결하는 데 도움이 되는 내장 진단 기능이 포함되어 있습니다.

  • 임베딩 검증 : 시스템은 엔터티에 유효한 임베딩이 있는지 확인하고 누락된 경우 자동으로 생성합니다.

  • 벡터 인덱스 상태 : 벡터 인덱스가 존재하고 온라인 상태인지 확인합니다.

  • 대체 검색 : 벡터 검색이 실패하면 시스템은 텍스트 기반 검색으로 대체됩니다.

  • 상세 로깅 : 문제 해결을 위한 벡터 검색 작업의 포괄적인 로깅

디버그 도구(DEBUG=true인 경우)

디버그 모드가 활성화되면 추가 진단 도구를 사용할 수 있습니다.

  • diagnose_vector_search : Neo4j 벡터 인덱스, 임베딩 카운트 및 검색 기능에 대한 정보

  • force_generate_embedding : 특정 엔터티에 대한 임베딩을 강제로 생성합니다.

  • debug_embedding_config : 현재 임베딩 서비스 구성에 대한 정보

개발자 재설정

개발 중에 Neo4j 데이터베이스를 완전히 재설정하려면:

# Stop the container (if using Docker)
docker-compose stop neo4j

# Remove the container (if using Docker)
docker-compose rm -f neo4j

# Delete the data directory (if using Docker)
rm -rf ./neo4j-data/*

# For Neo4j Desktop, right-click your database and select "Drop database"

# Restart the database
# For Docker:
docker-compose up -d neo4j

# For Neo4j Desktop:
# Click the "Start" button for your database

# Reinitialize the schema
npm run neo4j:init

건물 및 개발

# Clone the repository
git clone https://github.com/gannonh/memento-mcp.git
cd memento-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run tests
npm test

# Check test coverage
npm run test:coverage

설치

Smithery를 통해 설치

Smithery를 통해 Claude Desktop용 memento-mcp를 자동으로 설치하려면:

npx -y @smithery/cli install @gannonh/memento-mcp --client claude

npx를 사용한 글로벌 설치

npx를 사용하여 전역적으로 설치하지 않고도 Memento MCP를 직접 실행할 수 있습니다.

npx -y @gannonh/memento-mcp

이 방법은 Claude Desktop 및 기타 MCP 호환 클라이언트와 함께 사용하는 것이 좋습니다.

로컬 설치

프로젝트 개발 또는 참여를 위해:

# Install locally
npm install @gannonh/memento-mcp

# Or clone the repository
git clone https://github.com/gannonh/memento-mcp.git
cd memento-mcp
npm install

특허

MIT

Available Tools

17 tools
add_observationsB

Add new observations to existing entities in your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
observationsYes
strengthNoDefault strength value (0.0 to 1.0) for all observations
confidenceNoDefault confidence level (0.0 to 1.0) for all observations
metadataNoDefault metadata for all observations

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, but it only restates the core action. It does not disclose behavior around non-existent entities, overwriting, errors, or side effects, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant content. It communicates the essential purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a moderately rich schema, the tool has no annotations or output schema, and the description is too terse. It omits behavioral context (e.g., what happens if an entity doesn't exist, whether defaults apply) and return semantics, making it incomplete for a nested mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, and the schema already documents parameters like entityName, contents, metadata, strength, and confidence. The description adds no extra parameter-level nuance, but the schema provides enough meaning to warrant a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Add') and resource ('observations to existing entities'), clearly distinguishing it from sibling tools like create_entities or delete_observations. It also scopes the operation to existing entities, which is helpful.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to existing entities' implies this is for attaching observations to already-created entities, but it does not explicitly mention alternatives or when not to use it. No exclusions or alternative tool names are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_entitiesB

Create multiple new entities in your Memento MCP knowledge graph memory system

ParametersJSON Schema
NameRequiredDescriptionDefault
entitiesYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the action without disclosing behavior such as idempotency, validation, limits, or side effects. For a mutation tool, this is insufficient; an agent cannot anticipate what happens on failure or whether existing entities are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, concise and front-loaded. It avoids unnecessary words. However, it is so brief that it omits essential information, making it too minimal for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a nested entity array with many optional fields, but the description offers no guidance on the input structure or return behavior. There is no output schema, so the description carries full responsibility for explaining the tool's behavior, which it fails to do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description says nothing about the parameters; schema description coverage is 0%. While the schema itself contains detailed property descriptions, the tool description does not add any meaning beyond what is structured, failing to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create), the resource (multiple new entities), and the context (Memento MCP knowledge graph). This distinguishes it from sibling tools like create_relations or add_observations which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this when you need to add new entities. However, it provides no explicit guidance on when to choose this over alternatives, nor any prerequisites or exclusions. For a create operation, the intent is straightforward, but the lack of any alternative comparison leaves room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_relationsB

Create multiple new relations between entities in your Memento MCP knowledge graph memory. Relations should be in active voice

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavior disclosure. It only states that relations are created, but does not mention idempotency, overwrite semantics, validation of entity existence, transactional behavior, or what happens on partial failure. The mutation effect is implied but no further behavioral context is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundancy. It front-loads the core action and purpose, then adds a concise stylistic guideline. Every word earns its place, making it highly efficient for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex tool with a nested array of 13 fields, no annotations, and no output schema, yet the description offers only a high-level purpose. It lacks crucial context such as whether entities must already exist, how failures are handled, whether the operation is atomic, and what the tool returns. The sparse description is inadequate for an agent to use the tool safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the top-level parameter, yet the description does not explain the array structure of 'relations' or the required fields. It adds the active voice requirement for relationType, which is helpful, but this only partially compensates. The nested schema descriptions exist but are not referenced or clarified by the tool description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create multiple new relations) and the resource (between entities in the Memento MCP knowledge graph). It distinguishes from siblings like update_relation and delete_relations by focusing on creation, and the 'multiple' wording distinguishes it from any single-relation tool. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for batch-creating relations ("multiple new relations"), but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives or exclusions, though sibling tool names like update_relation suggest the contrast. The 'active voice' note is a formatting guideline, not a usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_entitiesA

Delete multiple entities and their associated relations from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNamesYesAn array of entity names to delete

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose a key side effect: associated relations are also deleted. However, it does not mention what happens to observations attached to the entities, whether deletion is permanent, or any other side effects. This is a partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and scope. Every word contributes meaning, with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple one-parameter interface, the description covers the core operation, but it leaves ambiguity about the fate of observations and whether deletion is reversible. With no output schema and no annotations, these omissions prevent a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes entityNames as 'An array of entity names to delete' (100% schema coverage). The description adds no additional meaning for the parameter, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') and identifies the resource ('multiple entities and their associated relations') within the Memento MCP knowledge graph. It clearly distinguishes this tool from siblings like delete_relations by noting the cascading deletion of associated relations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool should be used when both entities and their relations need to be deleted, versus using delete_relations separately. However, it does not explicitly state when to prefer this tool over alternatives, list exclusions, or mention prerequisites. The usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_observationsB

Delete specific observations from entities in your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
deletionsYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states the action and does not disclose irreversibility, required permissions, partial failure behavior, or return format. The description adds no behavioral insight beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no superfluous words. It efficiently communicates the core function without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive mutation tool with no annotations and no output schema. The description fails to mention side effects, irreversibility, prerequisites, or the exact parameter structure. The description is too minimal to fully support confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter 'deletions' with 0% top-level description coverage. The tool description hints at entities and observations, but it does not explain the array-of-objects structure or the required fields entityName and observations. The description provides minimal compensatory value for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the target ('specific observations from entities'), making it distinct from sibling tools like delete_entities and delete_relations. It precisely identifies the resource and operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as add_observations or delete_entities. It lacks context about prerequisites, exclusions, or conditions where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_relationsB

Delete multiple relations from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYesAn array of relations to delete

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without clarifying whether deletion is permanent, whether it is idempotent, or what response is returned. The word 'delete' implies mutation but lacks important safety and side-effect context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and resource with no redundant or unnecessary information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and lacks behavioral context for a destructive operation. It does not mention permanence, error handling, side effects, or return value expectations. With no output schema and no annotations, the description alone is insufficient for an agent to fully anticipate the operation's effects, especially given it is a delete action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the single 'relations' parameter, including the nested fields from, to, and relationType, achieving 100% schema description coverage. The description adds no additional semantic meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete' and the resource 'multiple relations' within the Memento knowledge graph, making the tool's function immediately obvious. It also distinguishes itself from sibling tools like delete_entities, which targets entities, and delete_observations, which targets observations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention scenarios where this tool is preferred over delete_entities or when to avoid it, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_decayed_graphA

Get your Memento MCP knowledge graph memory with confidence values decayed based on time

ParametersJSON Schema
NameRequiredDescriptionDefault
reference_timeNoOptional reference timestamp (in milliseconds since epoch) for decay calculation
decay_factorNoOptional decay factor override (normally calculated from half-life)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It clearly states the core behavior—returning the knowledge graph with confidence values decayed by time—and the use of 'Get' implies a read-only operation. However, it does not elaborate on return format, potential side effects, or edge cases, though none are strongly suggested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the essential purpose without any unnecessary words. Every phrase contributes to understanding the tool's function, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description adequately conveys the main behavior and the optional override parameters. It is sufficient for a simple retrieval tool, though it could mention the default half-life calculation or the graph's composition (e.g., entities and relations).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both decay_factor and reference_time already described in the schema. The description adds only the context that decay is time-based but does not provide additional meaning beyond the parameter descriptions themselves, so it meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' with a clear resource 'Memento MCP knowledge graph memory' and specifies the unique aspect 'with confidence values decayed based on time'. This distinguishes it from sibling tools like get_graph_at_time, which focuses on temporal snapshots rather than confidence decay.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when time-decayed confidence values are needed, but it does not explicitly state when to use this tool versus alternatives like read_graph or get_graph_at_time. No exclusions or alternative recommendations are provided, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_entity_embeddingA

Get the vector embedding for a specific entity from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_nameYesThe name of the entity to get the embedding for

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states only that the tool 'gets' an embedding, implying a read operation, but does not disclose return format, error behavior, or any side effects. This is minimal beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the key action and resource. Every word contributes to clarity without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter, the description provides adequate purpose but lacks completeness because no output schema exists, so return format is not described, and no usage guidelines or error behavior are mentioned. It is minimally viable but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the sole parameter (entity_name) at 100% coverage. The description adds no additional meaning beyond the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('the vector embedding for a specific entity') clearly distinguishing it from siblings like read_graph or get_entity_history. It precisely defines what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (retrieve an embedding when needed) but does not explicitly mention when to use this tool over alternatives like semantic_search. No exclusions or alternatives are named, leaving usage guidance implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_entity_historyA

Get the version history of an entity from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNameYesThe name of the entity to retrieve history for

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action ('Get') without describing read-only nature, response format, pagination, or any limits. This is a minimal disclosure that does not inform the agent about what to expect beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no wasted words. It is appropriately concise and front-loaded with the key verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description is minimally viable, but it lacks information about the return value (no output schema) and does not provide context on what 'version history' entails. Given the presence of siblings like get_relation_history, it could benefit from more contextual detail to guide the agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the only parameter entityName is fully described in the schema). The description adds no extra meaning beyond the schema, matching the baseline of 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('version history of an entity'), distinguishing it from sibling tools like get_relation_history which target relations. The context 'from your Memento MCP knowledge graph memory' further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving an entity's version history but provides no explicit guidance on when to use this tool versus alternatives like get_relation_history or get_graph_at_time. There is no mention of when not to use it or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_graph_at_timeA

Get your Memento MCP knowledge graph memory as it existed at a specific point in time

ParametersJSON Schema
NameRequiredDescriptionDefault
timestampYesThe timestamp (in milliseconds since epoch) to query the graph at

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only rephrases the tool name without adding operational details such as return format, potential side effects, timestamp validation, or performance implications. For a read operation, it is safe to assume non-destructiveness, but the description does not explicitly confirm or elaborate on behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant words. It earns its place by clearly stating the tool's purpose without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter, and the description covers its core function. However, there is no output schema, and the description does not explain what the response contains (e.g., full graph snapshot, node/relation lists). This leaves minor ambiguity but is still adequate for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the timestamp parameter (100% coverage), so the description does not need to elaborate. It adds no parameter-specific semantics, but none are necessary given the schema's clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('knowledge graph memory') with a clear temporal qualifier ('as it existed at a specific point in time'). This distinguishes it from sibling tools like read_graph (current state) and get_decayed_graph (decay-based retrieval).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for historical queries but does not explicitly contrast with alternatives such as read_graph or get_entity_history. The 'as it existed at a specific point in time' hints at the use case but leaves it to the agent to infer when to use this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_relationB

Get a specific relation with its enhanced properties from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesThe name of the entity where the relation starts
toYesThe name of the entity where the relation ends
relationTypeYesThe type of the relation

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It only says 'get,' which implies a read-only operation, but it doesn't explicitly confirm safety, side effects, or prerequisites. The vague phrase 'enhanced properties' doesn't clarify behavior, leaving the agent to infer from the name alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that communicates the tool's purpose without unnecessary words. It is front-loaded with the key action and resource, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description should explain what is returned, especially the vague 'enhanced properties.' It doesn't specify the response format, what 'enhanced' means, or whether any filtering or sorting applies. This is a significant gap for an agent needing to understand the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters (from, to, relationType) with descriptions, and schema_description_coverage is 100%. The description adds no meaning beyond 'specific relation,' so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving a specific relation with enhanced properties from the Memento knowledge graph. It uses a specific verb ('get') and names the resource ('specific relation'), making it distinct from mutation or history tools like create_relations or get_relation_history, though it does not explicitly compare to alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this tool is for retrieving a specific relation. It doesn't explicitly state when not to use it or mention alternatives, but the purpose is obvious enough for basic selection among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_relation_historyB

Get the version history of a relation from your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesThe name of the entity where the relation starts
toYesThe name of the entity where the relation ends
relationTypeYesThe type of the relation

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Get the version history', which implies a read operation but offers no details about return format, side effects, required permissions, or limitations. This is a significant gap for a tool without annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence of 15 words, front-loaded with the action 'Get the version history'. It wastes no words and is easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description captures the core purpose but omits details about the returned history structure or how it differs from entity history. With no output schema and no annotations, an agent may lack sufficient context to fully understand the tool's behavior, but the tool is a simple getter and the schema helps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters (from, to, relationType) with descriptions, achieving 100% coverage. The description adds no additional parameter meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the version history of a relation' with a specific verb and resource, and explicitly mentions 'history' to distinguish from the sibling tool get_relation which likely returns the current state. It also provides context that this is from the Memento MCP knowledge graph memory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of get_relation, get_entity_history, or other siblings. No alternatives or exclusions are mentioned. The description merely defines the action without contextual usage hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_nodesB

Open specific nodes in your Memento MCP knowledge graph memory by their names

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesAn array of entity names to retrieve

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It implies a read-like operation ('open') but does not explicitly state that it is non-destructive, what happens if names are not found, or whether it returns full node structures. This is a significant gap for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the action and target. It contains no fluff or redundant information, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema and no output schema, the description is minimally viable, but it lacks context about how this tool relates to siblings like read_graph or search_nodes. An agent may not know whether to use open_nodes for a full-graph read or for retrieving specific entities, leaving ambiguity in a larger tool ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the only parameter 'names' fully with a description ('An array of entity names to retrieve'), and the tool description reiterates this by saying 'by their names.' With 100% schema coverage, the baseline is 3, and the description adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Open specific nodes' in the knowledge graph by name. The verb 'open' and resource 'nodes' are specific, and 'by their names' indicates a lookup operation. However, it does not explicitly distinguish from sibling tools like read_graph or search_nodes, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or context such as 'use search_nodes when you don't know exact names.' This leaves the agent without clear direction on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_graphA

Read the entire Memento MCP knowledge graph memory system

ParametersJSON Schema
NameRequiredDescriptionDefault
random_stringNoDummy parameter for no-parameter tools

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. 'Read' communicates a non-destructive operation and 'entire' indicates broad scope, but it does not disclose potential performance costs, response size, or exact return format, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that is front-loaded with the action and resource. Every word contributes to the meaning, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, no-required-parameter graph read operation, the description adequately states scope and intent. The lack of an output schema is acceptable given the straightforward 'read entire graph' semantics, though a note on return format would make it slightly more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes the lone dummy parameter with 100% coverage, and the description adds no parameter-specific information. A baseline of 3 is appropriate because the schema already handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Read' and identifies the resource as the 'entire Memento MCP knowledge graph memory system', making the tool's scope explicit. It clearly distinguishes this from sibling tools like search_nodes and get_graph_at_time, which imply filtered or temporal subsets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. It does not mention that search_nodes or get_graph_at_time could be better for specific queries, nor does it state exclusions such as 'use only when you need the full graph'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_nodesB

Search for nodes in your Memento MCP knowledge graph memory based on a query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query to match against entity names, types, and observation content

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the search is read-only, what it returns, or any limitations (e.g., pagination, scope). It only says 'search for nodes' without clarifying behavior beyond that obvious action, leaving the agent without safety or side-effect information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It communicates the essential purpose efficiently, earning its place without any waste. This is an ideal level of conciseness for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter and no output schema, so complexity is low. However, the lack of annotations and absence of any usage guidance or behavioral context makes the description only minimally complete. It covers the basic purpose but omits important context like safety (read vs. write) and relationship to the sibling 'semantic_search' tool, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The input schema already provides a clear description of the 'query' parameter ('match against entity names, types, and observation content'). The tool description adds no additional parameter semantics beyond what the schema already states, so it does not exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search for nodes in your Memento MCP knowledge graph memory based on a query.' It specifies a verb ('search'), a resource ('nodes'), and a mechanism ('based on a query'). However, it does not distinguish itself from the sibling tool 'semantic_search', which likely performs a similar function, so it misses the opportunity to differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for query-based search of nodes, but it does not provide explicit guidance on when to use this tool versus alternatives like 'semantic_search' or 'open_nodes'. There are no stated exclusions or alternative tool references, so the guidance is only implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_relationB

Update an existing relation with enhanced properties in your Memento MCP knowledge graph memory

ParametersJSON Schema
NameRequiredDescriptionDefault
relationYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations to declare safety or mutation, so the description carries full responsibility. It does not disclose what happens if the relation doesn't exist, whether the update is partial or full replacement, how versioning is handled, or if there are any validation constraints. The vague 'enhanced properties' adds no concrete behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, grammatically correct sentence that is easy to parse. It is appropriately concise and front-loaded with the verb and object. It could be slightly more informative, but it contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the nested 'relation' object with numerous optional fields, the lack of output schema, and no annotations, this description is too minimal. It fails to clarify critical update semantics such as which fields are required for identification, whether the operation is a partial merge or full replacement, and the meaning of 'enhanced properties'. The description alone is insufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no parameter-level detail. 'Enhanced properties' gives a hint that the nested 'relation' object contains updates, but it does not explain which fields identify the relation versus which ones are updated. With low schema_description_coverage (0%), the description fails to compensate, despite the schema having well-documented fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and the resource ('existing relation'), and specifies the context ('Memento MCP knowledge graph memory'). It distinguishes itself from sibling tools like create_relations and delete_relations by intentionally targeting existing relations, and the 'enhanced properties' hints at additional attribute updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'existing' implies the relation must already be present, suggesting this is not for creation, but there is no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like delete and recreate, nor any prerequisites for updating a relation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updates
    • First observedadd_observations
    • First observedcreate_entities
    • First observedcreate_relations
    • First observeddelete_entities
    • First observeddelete_observations
    • First observeddelete_relations
    • First observedget_decayed_graph
    • First observedget_entity_embedding
    • First observedget_entity_history
    • First observedget_graph_at_time
    • First observedget_relation
    • First observedget_relation_history
    • First observedopen_nodes
    • First observedread_graph
    • First observedsearch_nodes
    • First observedsemantic_search
    • First observedupdate_relation

TDQS

B3.4/5.0

Scored across 17 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: CRUD operations for entities, relations, and observations are separated, and specialized tools for history, embeddings, and time-specific queries do not overlap. No ambiguity between tool functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_entities, delete_observations, get_entity_history). The naming is uniform and predictable, aiding agent selection.

Tool Count4/5

With 17 tools, the count is slightly above the ideal 3-15 range but still well-scoped for a knowledge graph system. Each tool addresses a specific need, though a few could potentially be consolidated.

Completeness3/5

The tool surface covers most CRUD operations but lacks an update_entity tool and a dedicated get_entity (though open_nodes and read_graph partially fill this). Missing update for observations. These gaps may cause some workflow interruptions.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides AI agents with persistent memory and knowledge management through a comprehensive knowledge graph platform. Enables storing, searching, and managing entities, relationships, and observations with advanced features like trending analysis and smart ranking.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to build and query a persistent knowledge graph with entities, relationships, and observations. Features a core index system that ensures critical information is always accessible across all memory operations.
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to build and query temporally-aware knowledge graphs from conversations and data, maintaining persistent memory of entities, relationships, and facts across interactions.
    -