プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Attestari

作者:attestariバージョン 0.0.8i★ –iパソコンで動く
レジストリ名io.github.attestari/attestari

インストール

概要

作者による説明(英語の原文)

Auditable memory for AI agents: provable deletion, tamper-evident audit, time-travel recall.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 検索・AIの記憶
  • 入力が必要なもの:ATTESTARI_KEK, ATTESTARI_DATABASE_URL, ANTHROPIC_API_KEY

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: ATTESTARI_KEK, ATTESTARI_DATABASE_URL, ATTESTARI_SQLITE_PATH, ATTESTARI_MCP_ALLOW_FORGET, ANTHROPIC_API_KEY

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "attestari": {
      "command": "uvx",
      "args": [
        "attestari"
      ],
      "env": {
        "ATTESTARI_KEK": "your-value",
        "ATTESTARI_DATABASE_URL": "your-value",
        "ATTESTARI_SQLITE_PATH": "your-value",
        "ATTESTARI_MCP_ALLOW_FORGET": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add attestari --env ATTESTARI_KEK=your-value --env ATTESTARI_DATABASE_URL=your-value --env ATTESTARI_SQLITE_PATH=your-value --env ATTESTARI_MCP_ALLOW_FORGET=your-value --env ANTHROPIC_API_KEY=your-value -- uvx attestari

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "attestari": {
      "command": "uvx",
      "args": [
        "attestari"
      ],
      "env": {
        "ATTESTARI_KEK": "your-value",
        "ATTESTARI_DATABASE_URL": "your-value",
        "ATTESTARI_SQLITE_PATH": "your-value",
        "ATTESTARI_MCP_ALLOW_FORGET": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "attestari": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "attestari"
      ],
      "env": {
        "ATTESTARI_KEK": "your-value",
        "ATTESTARI_DATABASE_URL": "your-value",
        "ATTESTARI_SQLITE_PATH": "your-value",
        "ATTESTARI_MCP_ALLOW_FORGET": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • ATTESTARI_KEK 秘密 env
    Base64 32-byte root key. Set it to enable encryption at rest and cryptographic erasure (forget() destroys the subject's key and signs the certificate). Without it, forget() is a logical delete and ce…
  • ATTESTARI_DATABASE_URL 秘密 env
    Postgres DSN. Set it to use Postgres + pgvector instead of the default local SQLite file (concurrent access, indexed hybrid search).
  • ATTESTARI_SQLITE_PATH env
    Where the default SQLite ledger lives.
  • ATTESTARI_MCP_ALLOW_FORGET env
    Set to 1 to offer the forget_subject tool (off by default, since erasure is irreversible and an agent can be steered by what it reads). When on, it is flagged destructive and takes two calls: a previ…
  • ANTHROPIC_API_KEY 秘密 env
    Enables Claude-powered fact extraction; falls back to the built-in regex extractor when unset.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント attestari で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

検索・AIの記憶のほかのサーバーとの比較i

  • このカテゴリのほかの7275件のうち0%よりスターが多い
  • このカテゴリのほかの7275件のうち57%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの7275件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Attestariは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:ATTESTARI_KEK, ATTESTARI_DATABASE_URL, ANTHROPIC_API_KEY

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.0.8)がレジストリに届いたのは28 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Context7, Codebase Memory, Exa

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Context7

作者:upstash

Up-to-date docs for AI agents

パソコンでもクラウドでも★ 64,224MIT昨日更新
インストール

Codebase Memory

作者:DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

パソコンで動く★ 48,148MIT21 日前更新
インストール

Exa

作者:exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

クラウドで動く★ 5,213MIT先月更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Attestari

The auditable memory layer for AI agents. Give your agent long-term memory — like any memory layer — except every fact carries a receipt (where it came from, when), it runs on plain Postgres, the audit trail is tamper-evident, and any user's data can be provably deleted with a signed certificate.

from attestari import Memory

mem = Memory() mem.add("Hi, I'm Alice. I live in Toronto and I work at Acme.", subject_id="alice", valid_from="2021-06-01") mem.add("Update: I moved to Berlin and I now work at Globex.", subject_id="alice", valid_from="2026-01-01") # supersedes Acme + Toronto

mem.answer("where does the user work", subject_id="alice") # -> "Globex" (latest) mem.answer("where did the user live", subject_id="alice", as_of="2022-01-01") # -> "Toronto" (time-travel)

cert = mem.forget("alice") # right-to-be-forgotten -> a signed deletion certificate

No database, no API key, no model download required to run that — the core engine has zero dependencies.


Contents

  • Why it's different
  • What you get
  • Quickstart (30 seconds)
  • The Python API
  • Run it for real — Postgres · server + console · MCP · TypeScript
  • REST API
  • Configuration
  • Provable deletion + tamper-evident audit, in one demo
  • Already using Mem0 or Zep? Wrap it
  • For auditors and DPOs
  • How it works — and the Atlas, the engine on one illustrated page
  • Project layout
  • Docs & contributing

Why it's different

Hosted memory is a black box: you can't see where a "memory" came from, you can't cleanly delete one user's data, and you can't *prove* the history wasn't altered. For a bank, hospital, or insurer — and under GDPR / the EU AI Act — that's a dealbreaker. Attestari is the neutral, self-hostable layer that fixes exactly that.

AttestariTypical memory layer
Runs on plain Postgres (no graph DB)✅✗ (needs Neo4j / a vector service)
Provenance on every fact✅partial
Bi-temporal ("what was true on date D?")✅✗
Provable deletion + certificate (GDPR)✅✗
Tamper-evident audit trail (hash chain)✅✗
Works across model vendors✅usually locked to one

The last two rows are the moat. Deletion you can prove: each user's data is encrypted with their own key; forget() destroys the key, so the content is unrecoverable — while an immutable log and a signed certificate remain as proof. A history you can verify: every event is hash-linked, so verify_audit() catches any edit, insert, or delete — and the proof survives deletion.

What you get

  • Provenance on every fact — each memory traces back to the exact source message, with a character span, confidence, and timestamps.
  • Bi-temporal time travel — query memory as_of any past instant; corrections supersede old facts without erasing them, so history is always reconstructable. as_of filters on valid time (when a fact was true). System time (when Attestari recorded it) is stored on every fact, but there's no query on it yet.
  • Provable deletion — forget(subject_id) crypto-shreds a user's data and returns a signed DeletionCertificate; content backups and replicas are covered (key storage needs its own backup policy — see the threat model).
  • Tamper-evident audit — a hash-linked event chain; verify_audit() detects any edit/insert/delete, and the proof survives crypto-shred.
  • Conflict resolution — single- vs multi-valued predicates; conflicts are surfaced via conflicts(), not silently dropped.
  • Entity resolution — merge "the same entity, many surface forms," reversibly. Merges are recorded, but reads don't follow them yet: search() and timeline() still see each surface form separately.
  • Hybrid retrieval — semantic (pgvector) ⊕ keyword (full-text), with the bi-temporal filter built in.
  • Runs anywhere — zero-dependency in-memory engine, or durable on one Postgres
  • pgvector container. No graph database. Works across model vendors.

Quickstart (30 seconds)

git clone https://github.com/attestari/attestari && cd attestari

python examples/spike.py # zero-dep end-to-end loop python examples/agent_with_memory.py # the "give an agent memory" pattern

You'll see facts change over time, a bi-temporal query answer differently "as of" different dates, a provenance trace back to the source, and a forget() that issues a certificate. No install, no API key, no database.

The Python API

One facade, Memory, covers the whole surface:

from attestari import Memory

mem = Memory() # zero-dep, in-memory (tests, demos)

mem = Memory.local() # durable in one local SQLite file — zero infrastructure

mem = Memory.postgres() # durable on Postgres + pgvector (production service)

--- write -------------------------------------------------------------

fact_ids = mem.add( "I moved to Berlin and I now work at Globex.", subject_id="alice", # whose memory this is valid_from="2026-01-01", # when it became true (defaults to now) source_ref="chat:msg-42", # where it came from (for provenance) )

--- read --------------------------------------------------------------

mem.search("where does the user work", subject_id="alice") # ranked SearchResults mem.answer("where does the user work", subject_id="alice") # -> "Globex" mem.answer("where did the user live", subject_id="alice", as_of="2022-01-01") # time travel: recall as-of a past date mem.timeline(subject_id="alice") # full bi-temporal history mem.get_provenance(fact_ids[0]) # source episode + span mem.conflicts(subject_id="alice") # surfaced conflicts

--- govern ------------------------------------------------------------

report = mem.verify_audit() # AuditReport — is the hash chain intact? cert = mem.forget("alice") # DeletionCertificate — provable erasure

MethodReturnsWhat it does
add(text, *, subject_id, valid_from=…, source_ref=…)list[str]Ingest a message; extract, dedup, and supersede facts.
search(query, *, subject_id, as_of=…, limit=5)list[SearchResult]Hybrid retrieval with an optional time filter.
answer(query, **kwargs)`str \None`The single top object for a query.
timeline(*, subject_id)list[Edge]Every fact for a subject, live and superseded.
get_provenance(fact_id)`Provenance \None`Trace a fact to its source episode + span.
conflicts(*, subject_id=None)list[dict]Conflicts resolved by predicate cardinality.
resolve_entities(names=None, *, auto=True)ResolutionResultMerge duplicate entities (reversible).
forget(subject_id)DeletionCertificateCrypto-shred a subject; return proof.
verify_audit(deep=False)AuditReportVerify the tamper-evident hash chain; deep=True also catches silent edits to event content.

Run it for real

Three storage tiers, one engine — every guarantee (audit chain, crypto-shred, deep verification, time travel) holds on all three:

TierStorageForSetup
Memory()in-memorytests, demos, determinismnone
Memory.local()one SQLite file (~/.attestari/attestari.db)a personal agent, MCP, prototypes — durable, single-processnone (stdlib)
Memory.postgres()Postgres + pgvectorproduction: concurrent access, indexed hybrid searchone container

Durable with zero infrastructure (survives restarts; nothing to install or run):

from attestari import Memory

mem = Memory.local() # or Memory.local("path/to/agent.db")

Durable, on Postgres + pgvector (one container, no graph DB):

ATTESTARI_PG_PORT=5433 docker compose up -d       # applies the schema on first boot

pip install -e ".[postgres,embeddings]" export ATTESTARI_DATABASE_URL=postgresql://attestari:attestari@localhost:5433/attestari

Already have a Postgres (managed or local)? The schema ships inside the pip package — no clone needed:

python -m attestari.initdb postgresql://user:pass@host:5432/db   # idempotent
from attestari import Memory

mem = Memory.postgres() # durable; materialized projections + pgvector + full-text search

As a REST API + visual console:

pip install -e ".[server]"

uvicorn attestari.server:app # API at /v1/*, the memory-graph console at /

As an MCP server (any agent — Claude, frameworks — can use it) — exposes add_memory / search_memory / get_provenance over stdio, plus forget_subject if you opt in (below). Register it in your MCP client's config (e.g. Claude Desktop's claude_desktop_config.json); the client launches the process for you:

{

"mcpServers": { "attestari": { "command": "attestari-mcp", "args": [], "env": { "ATTESTARI_SQLITE_PATH": "~/.attestari/attestari.db", "ANTHROPIC_API_KEY": "sk-ant-...", "ATTESTARI_KEK": "base64-kek-here" } } } }

Only `command`/`args` are required. Durable by default (memories go to the local

SQLite file, so they survive app restarts); the env block is where per-server config lives — add ATTESTARI_DATABASE_URL to use Postgres instead of SQLite, ANTHROPIC_API_KEY to upgrade extraction to Claude, ATTESTARI_KEK to enable crypto-shred. To run it standalone (e.g. to debug): attestari-mcp (or python -m attestari.mcp). Without a local install, MCP clients can spawn it straight from PyPI: uvx --from "attestari[server]" attestari-mcp.

Erasure over MCP is opt-in. An agent can be steered by text it reads, and erasure can't be undone, so forget_subject is only offered when the env block sets "ATTESTARI_MCP_ALLOW_FORGET": "1". It is then flagged destructive (clients that honour tool annotations ask before running it) and takes two calls: the first previews what would be erased and returns a manifest_hash; the second passes that hash back as confirm_manifest_hash, and erases only if the subject's records still match the preview. Leave it off unless the agent is meant to erase people; Memory.forget() and POST /v1/forget are unaffected.

From TypeScript — the TS client talks to the REST API, so start the server first (see above; it defaults to http://localhost:8000). Then see clients/ts (@attestari/client), a thin typed client mirroring the Memory surface.

With LangChain: see clients/langchain (attestari-langchain) — a AttestariRetriever (recall facts with provenance) and AttestariChatMessageHistory (drop-in memory for RunnableWithMessageHistory) for any chain or agent.

With real Claude extraction (instead of the zero-dep deterministic extractor):

pip install -e ".[anthropic]"

export ANTHROPIC_API_KEY=sk-ant-... python examples/spike.py --llm anthropic

Enable crypto-shred deletion (turn forget() from a logical delete into cr

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く