Mmcp.market

amu-pgvector MCP server

by sangaraju1988·io.github.sangaraju1988/amu-pgvector·v0.1.3

Lineage-gated agent memory tools on Postgres + pgvector, enforced by row-level security.

B80/100grade B
What users say
No reviews yet
Be the first
Safety scan
B80/100

full report

Adoption
Growing

0 stars2.6k downloads/wk

Reviews

Write one

Nobody has reviewed amu-pgvector yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

amu-pgvector tools (3)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • amu_check_conflict
  • amu_record
  • amu_search

Public scan report

scanner v0.1.10 · 2026-10-01 · same rubric, same numbers if you re-run it

no findings
  • Code scan6 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityregistry namespace matches repository owner6/10
Overall 80/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

Install amu-pgvector in Claude Code, Cursor or VS Code

claude mcp add amu-pgvector -- uvx amu-pgvector
Add to Cursor

What the publisher says

From the amu-pgvector repository's README, as published. We do not edit it. Read it on GitHub

amu-pgvector

Reference implementation of Lineage-Aware Memory Governance (Sangaraju & Vissa, IEEE Access, 10.1109/ACCESS.2026.3730363) on PostgreSQL + pgvector.

The problem

Say Finance computes avg(income) for a customer segment and caches the result so the next agent that asks the same question doesn't have to recompute it. Later, a Marketing agent asks a semantically similar question -- "what's the average customer income by segment?" -- and a naive shared memory, gated only on the metric's name or content tags, serves back Finance's cached result. Marketing was never permitted to see income. The result itself doesn't look like income -- it's a number -- but it was derived from a column Marketing isn't permitted to touch, and nothing about matching on metric name or content catches that. That's the leak this project closes: gating reuse on how a result was derived, not on what it looks like.

60-second quickstart

git clone https://github.com/sangaraju1988/amu-pgvector.git
cd amu-pgvector
docker compose up -d
psql -h localhost -p 5433 -U amu_owner -d amu_dev -f sql/amu_pgvector.sql
# password: amu_owner_password
uv sync --all-packages --all-extras   # or: pip install amu-pgvector
from amu_pgvector import AMUStore
from amu_pgvector.embeddings import fake_embedder

DSN = "postgresql://amu_owner:amu_owner_password@localhost:5433/amu_dev"
embed = fake_embedder(dim=1536)  # swap for a real embedding model in production

admin = AMUStore(DSN)
admin.register_sensitive_column("income")
admin.grant_department_permission("Finance", "income")
admin.create_agent_role("finance_agent", "Finance", "finance_pw")
admin.create_agent_role("marketing_agent", "Marketing", "marketing_pw")

admin.record(
    "SELECT avg(income) FROM customers",
    {"avg": 82000},
    metric_name="avg_income",
    description="average customer income",
    owner_department="Finance",
    embed_fn=embed,
)

finance_dsn = "postgresql://finance_agent:finance_pw@localhost:5433/amu_dev"
marketing_dsn = "postgresql://marketing_agent:marketing_pw@localhost:5433/amu_dev"

AMUStore(finance_dsn).search("average customer income", k=5, embed_fn=embed)
# -> [SearchResult(metric_name='avg_income', ...)]

AMUStore(marketing_dsn).search("average customer income", k=5, embed_fn=embed)
# -> [] -- Marketing was never granted `income`, so Postgres itself
#          never returns the row, regardless of how the query 

Every line above was run against this exact repo before being written here (see docs/design.md for what a from-scratch install actually looks like). amuowner/amuowner_password is the docker-compose default -- change it for anything beyond local development.

How the gate works

amu.memoryunits is a normal Postgres table with FORCE ROW LEVEL SECURITY enabled. Every write goes through a trigger that extracts the lineage of the SQL that actually produced the cached result (via amu-governance's sqllineage module -- not self-reported by the agent), closes it over any registered materialized-view/derived-table edges, and computes S(a): the set of sensitive columns that lineage actually touches. A SELECT policy enforces S(a) ⊆ P(d) -- the row is visible only if every column in S(a) is in the requesting role's permitted set P(d) -- for every query against the table, from every client: raw SQL, amu.search(), the Python client, the LangChain integration, and the MCP server all go through the same policy, because it's the table's policy, not any one client's filter.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

amu-pgvector: common questions

Is amu-pgvector MCP server safe?
Mostly: it is graded B (80/100). Read the amu-pgvector safety report
How do I install amu-pgvector?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does amu-pgvector need an API key?
Yes. The registry entry asks for AMU_PGVECTOR_DSN.
Is amu-pgvector maintained?
The last commit was 13 days ago (2026-09-30). The latest release is v0.1.3.
What can I use instead of amu-pgvector?
Servers from other publishers that do the same job: Memory Vault MCP server, hmem — Humanlike Memory for AI Agents MCP server and Memtether MCP server. Compare all amu-pgvector alternatives.

Alternatives to amu-pgvector

Same job from other publishers: the closest match first, then the best rated.

All amu-pgvector alternatives →
  • Memory Vault
    Local-first AI memory layer with hybrid search. Postgres + pgvector. Self-hosted, MIT.
    B
  • hmem — Humanlike Memory for AI Agents
    Persistent 5-level hierarchical memory for AI agents. SQLite-backed, lazy-loaded.
    A
  • Memtether
    Cross-client AI memory hub: agents share one SQLite memory.db via file-level pointers.
    A
  • Run402
    x402 pay-per-call infra for agents: $0.03 image generation, Postgres, auth, storage, functions.
    B
  • Neon
    Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.
    A

More from sangaraju1988 →