범용 메모리 프로토콜 – 에이전트 메모리 공유 형식

발행: (2026년 6월 7일 AM 05:39 GMT+9)
5 분 소요

출처: Hacker News

제3 상호운용성 레이어

“제3 상호운용성 레이어” 섹션

에이전트는 이미 도구(MCP)를 호출하고 서로(A2A) 대화할 수 있습니다. 하지만 세션, 에이전트, 공급업체를 넘어 메모리를 전달하는 것은 아직 불가능합니다. 모든 프레임워크가 메모리를 사적으로, 비이식적으로 새롭게 구현하고 있습니다. UMP가 이를 해결합니다.
쉽게 말해, 여러분은 이미 에이전트 파일, Claude/Codex 프로젝트 노트, Recall 내보내기, Obsidian 폴더, Postgres, Redis, SQLite, 벡터 데이터베이스 등에 유용한 메모리를 흩어져 가지고 있습니다. UMP는 이들을 하나의 이식 가능한 메모리 형태와 작은 연산 집합으로 통합해, 새로운 에이전트와 새로운 스토어가 처음부터 시작하지 않고 동일한 메모리를 확장할 수 있게 합니다.

도구 - MCP

Model Context Protocol은 에이전트가 함수 호출 및 리소스 읽기를 표준화했습니다.

조정 - A2A

Agent2Agent는 에이전트가 서로를 발견하고 호출하는 방식을 표준화했습니다.

메모리 - UMP

Universal Memory Protocol은 에이전트가 세션, 에이전트, 공급업체를 넘어 기억할 수 있도록, 이식 가능한 지식을 표준화합니다.

MCP 서버는 에이전트 메모리가 즉시 필요할 때 사용합니다. 메모리 인식 앱이나 에이전트 런타임을 구축할 때는 TypeScript SDK를 사용합니다. 클라이언트가 Python, Go, Swift, 브라우저 등 JSON을 전송할 수 있는 환경이면 HTTP를 사용합니다.

// MCP host config: Claude Code, Codex, Cursor, or any MCP client.

{
  "mcpServers": {
    "ump": {
      "command": "npx",
      "args": ["-y", "@universalmemoryprotocol/core", "ump-memory"]
    }
  }
}
import {
  JsonFileStore,
  UmpServer,
  generateKeyPair,
} from "@universalmemoryprotocol/core";

const key = generateKeyPair();

const store = await JsonFileStore.open(".ump/memory.ump.json");

const ump = new UmpServer({
  name: "my-agent",
  version: "1.0.0",
  conformance: "L2",
  store,
  key,
});

await ump.remember({
  kind: "procedural",
  body: { text: "Use pnpm for this repository." },
  scope: { owner: key.did, project: "github.com/acme/app", visibility: "private" },
  provenance: { actor: key.did, actor_kind: "user", method: "user_correction" },
});

const memories = await ump.recall({
  query: "package manager",
  scope: { owner: key.did, project: "github.com/acme/app" },
});
# Any language: expose JSON over HTTP.

UMP_HTTP=4000 npx -y @universalmemoryprotocol/core ump-memory
import requests

base = "http://localhost:4000"
owner = requests.get(f"{base}/.well-known/ump.json").json()["owner"]

requests.post(f"{base}/ump/remember", json={
    "kind": "semantic",
    "body": {"text": "User prefers concise release notes."},
    "scope": {"owner": owner, "project": "github.com/acme/app", "visibility": "private"},
    "provenance": {"actor": owner, "actor_kind": "user", "method": "user_correction"},
}).raise_for_status()

hits = requests.post(f"{base}/ump/recall", json={
    "query": "release note preference",
    "scope": {"owner": owner, "project": "github.com/acme/app"},
}).json()["results"]

왜 이렇게 설계되었는가

“왜 이렇게 설계되었는가” 섹션

UMP는 새로운 전송 프로토콜이 아닙니다. 기존 전송 방식을 활용하는 애플리케이션 레벨 메모리 프로토콜입니다. MCP의 교훈은 최소한의 기본 요소—기존 레일 + 훌륭한 SDK + 중립적인 거버넌스*—입니다.

MCP와 함께 사용

주요 바인딩은 MCP 프로필(ump.* 도구)입니다. Claude Code, Codex 등 어떤 MCP 호스트도 새로운 전송 없이 오늘 바로 UMP를 사용할 수 있습니다.

여섯 가지 연산

capabilities · recall · remember · revise · forget · get (+ 선택적 feedback/subscribe). 호환 클라이언트는 약 100줄 정도입니다.

하나의 이식 가능한 레코드

타입이 지정되고, 스코프가 정의되며, 양시점(bi‑temporal)이며, 서명된 JSON. W3C PROV + DID를 재사용해 새로운 어휘를 만들지 않습니다.

점진적 채택

네 단계의 호환성 레벨이 있습니다. 오늘은 *.ump.json 내보내기(L0)만 배포하고, 준비가 되면 전체 런타임(L3)을 연결합니다.

모든 스토어가 제공 가능

“모든 스토어가 제공 가능” 섹션

UMP는 프로토콜 표면일 뿐, 데이터베이스에 베팅하는 것이 아닙니다. @universalmemoryprotocol/core 는 로컬 파일, SQL

0 조회
Back to Blog

관련 글

더 보기 »

OpenAI, SEC에 S‑1 초안 제출

We recently submitted a confidential S-1. We expect it to leak so we’re just announcing it. We have not decided on timing yet; it may be a while because there a...