Gnosem

Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.

사용해야 할까요

품질 및 안전성

A
설명 품질
93%
스키마 완전성
96%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,538토큰 (도구 정의)
~1.9 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.20%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

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

{
  "mcpServers": {
    "gnosem": {
      "url": "https://gnosem.dev/mcp"
    }
  }
}

원격 엔드포인트

https://gnosem.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (6)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟡memory_write(content, tags, written_by, session_id, no_optimize, ...)

Save a fact, preference, decision, or note to the user's cross-model memory. Any MCP client can read this back later. Include written_by (e.g. 'claude-code', 'gpt-5', 'kimi-k2') for provenance and session_id to group related writes. Long content (>400 chars) is automatically compressed on write to a structured-facts form optimized for LLM reading — the raw text is preserved. Pass no_optimize:true to skip. Writes are deduped by default: (1) SHA-256 of trim(content) short-circuits byte-identical writes with { id, exact_duplicate:true } for free (no embed call); (2) failing that, semantic dedup returns { id, deduped:true, matched_score } when cosine ≥ 0.85. Pass force:true to bypass both, or use memory_supersede to explicitly correct a prior memory.

입력 스키마

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The fact or note to remember. Plain text, max 8000 characters."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional short labels for filtering (e.g. ['preference','stack'])."
    },
    "written_by": {
      "type": "string",
      "description": "Identifier of the model / client writing this (e.g. 'claude-code', 'gpt-5', 'kimi-k2', 'manual')."
    },
    "session_id": {
      "type": "string",
      "description": "Opaque identifier grouping related writes from the same conversation."
    },
    "no_optimize": {
      "type": "boolean",
      "description": "Skip AI compression of long content. Default false."
    },
    "force": {
      "type": "boolean",
      "description": "Bypass semantic dedup and write anyway. Default false."
    }
  },
  "required": [
    "content"
  ]
}
🟢memory_search(query, k, mode, raw, tags, ...)

Search the user's memories. Default mode is 'hybrid': blends semantic (cosine over Vectorize) and keyword (BM25 over SQLite FTS5) hits via Reciprocal Rank Fusion (k=60). Semantic catches paraphrases; keyword catches exact-string hits (IDs, dates, code snippets). Pass mode:'semantic' or mode:'keyword' to run just one. Content defaults to the LLM-optimized (compressed) form when available (raw:true to invert). Excludes forgotten + superseded. Optional filters narrow after retrieval: tags (AND), written_by, session_id, and/or since/until (ms epoch).

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query. Interpreted as natural language for semantic mode and as FTS5-safe text for keyword mode."
    },
    "k": {
      "type": "integer",
      "description": "Max results (1–50). Default 10."
    },
    "mode": {
      "type": "string",
      "enum": [
        "semantic",
        "keyword",
        "hybrid"
      ],
      "description": "Retrieval mode. Default 'hybrid'."
    },
    "raw": {
      "type": "boolean",
      "description": "Return original prose instead of the compressed form. Default false."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Only return memories containing ALL of these tags (AND semantics)."
    },
    "written_by": {
      "type": "string",
      "description": "Only return memories with an exact written_by match (e.g. 'claude-code')."
    },
    "session_id": {
      "type": "string",
      "description": "Only return memories with an exact session_id match."
    },
    "since": {
      "type": "integer",
      "description": "Only return memories created at or after this ms-epoch timestamp."
    },
    "until": {
      "type": "integer",
      "description": "Only return memories created strictly before this ms-epoch timestamp."
    }
  },
  "required": [
    "query"
  ]
}
🟢memory_list(limit, cursor, raw, tags, written_by, ...)

List the user's most recent memories in reverse chronological order. Use for browsing or catching up on what the user's other model sessions have written recently. Same content/content_raw shape as memory_search. Optional filters (tags, written_by, session_id, since, until) narrow the listing at the SQL level.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Max rows to return (1–200). Default 50."
    },
    "cursor": {
      "type": "integer",
      "description": "Pagination cursor from a previous call's `cursor` field (ms epoch); returns rows older than this timestamp."
    },
    "raw": {
      "type": "boolean",
      "description": "Return original prose instead of the compressed form. Default false."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Only return memories containing ALL of these tags (AND semantics)."
    },
    "written_by": {
      "type": "string",
      "description": "Only return memories with an exact written_by match."
    },
    "session_id": {
      "type": "string",
      "description": "Only return memories with an exact session_id match."
    },
    "since": {
      "type": "integer",
      "description": "Only return memories created at or after this ms-epoch timestamp."
    },
    "until": {
      "type": "integer",
      "description": "Only return memories created strictly before this ms-epoch timestamp."
    }
  }
}
🔴memory_forget(id)

Soft-delete a memory by id. The row is retained for audit but excluded from search/list and removed from the vector index.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "UUID of the memory to forget."
    }
  },
  "required": [
    "id"
  ]
}
⚪memory_supersede(old_id, new_content, tags, written_by, session_id)

Replace a stale memory with a corrected one. The old row is marked superseded and excluded from future reads; the new row becomes the current version. Use for corrections; use memory_forget for pure deletions.

입력 스키마

{
  "type": "object",
  "properties": {
    "old_id": {
      "type": "string",
      "description": "UUID of the memory to replace."
    },
    "new_content": {
      "type": "string",
      "description": "New content that supersedes the old memory."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "written_by": {
      "type": "string"
    },
    "session_id": {
      "type": "string"
    }
  },
  "required": [
    "old_id",
    "new_content"
  ]
}
🟡memory_write_bulk(memories)

Write up to 50 memories in a single call. Each entry runs the same path as memory_write (semantic dedup by default; pass force:true per-entry to skip). Embeddings + optimizations run in parallel; D1 inserts are batched. Returns { results: [...] } with one entry per input in the same order — each is { id, created_at, optimized? } on success, { id, created_at, deduped, matched_score } on dedup, or { error } on failure. Free-tier limits apply to the sum: if adding N would exceed 200, the first (200 - existing) succeed and the rest return an error.

입력 스키마

{
  "type": "object",
  "properties": {
    "memories": {
      "type": "array",
      "description": "Array of memory-write entries (1–50).",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The fact or note to remember. Plain text, max 8000 characters."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "written_by": {
            "type": "string"
          },
          "session_id": {
            "type": "string"
          },
          "no_optimize": {
            "type": "boolean",
            "description": "Skip AI compression of long content. Default false."
          },
          "force": {
            "type": "boolean",
            "description": "Bypass semantic dedup for this entry. Default false."
          }
        },
        "required": [
          "content"
        ]
      }
    }
  },
  "required": [
    "memories"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 6개
검증됨버전이 기록되지 않음도구 6개