u/TyKolt

I built an MCP server for a knowledge graph. It doesn't call any LLM.

I spent a while trying to give Claude a reliable memory layer. Not summaries. A way to ask "is this fact in my data" and get a binary answer. I tried RAG. It finds related content well. It doesn't tell you whether a specific claim is supported or invented. An 87% confidence score doesn't answer whether Alice has a PhD.

So I built a graph store instead. Not retrieval — grounding.

Kremis stores entity-attribute-value triples in a weighted graph. When you query it, you get back what's in the graph. Same input, same output, every time. The graph state is hashed with BLAKE3, so you can verify two instances ingested identical data.

A few weeks ago I added an MCP bridge (kremis-mcp) so Claude and Cursor can query it directly. It's a stdio process that translates MCP tool calls into HTTP requests against a local Kremis server. No external API, no embedding model, no LLM anywhere in the pipeline.

{
  "mcpServers": {
    "kremis": {
      "command": "/path/to/kremis-mcp",
      "env": { "KREMIS_URL": "http://localhost:8080" }
    }
  }
}

Nine tools: ingest, lookup, traverse, path, intersect, status, properties, retract, hash.

How this sits relative to other memory tools

Cognee, Graphiti, Mem0 all solve related problems but sit in a different design space. They lean on LLM extraction to build the graph from unstructured text, which is powerful but reintroduces the probabilistic layer on the write path. Kremis is the opposite tradeoff: you structure your data as EAV triples before ingesting (or you write extraction yourself), and in exchange reads are completely deterministic. No extraction on the write path, no LLM on the read path.

That makes Kremis a bad fit if you want to dump unstructured text and hope the system figures it out. It's a good fit if you need an auditable memory layer where a specific fact either is or is not in the graph, and you want to prove it.

git clone https://github.com/TyKolt/kremis.git
cd kremis
cargo build --release

github.com/TyKolt/kremis, Apache 2.0. Alpha, v0.18.1. Feedback welcome, especially on the EAV-only write path. Curious whether that's a dealbreaker in practice for people already using graph memory tools.

reddit.com
u/TyKolt — 12 days ago

I put Kremis on Product Hunt and I’d appreciate your take on it.

It’s a minimal knowledge graph in Rust that works as a grounding layer for AI agents. Instead of vector search or probabilistic RAG, it stores facts in a plain graph and only returns what you actually fed it. If the data isn’t there, the API returns `unknown`. No interpolation, no confident guesses. I also built a small MCP bridge so tools like Claude or Cursor can query it directly.

You can check it out here: https://www.producthunt.com/products/kremis

I’m mostly looking for honest feedback. Does the API make sense? Is the fact/inference/unknown grounding model actually useful in your workflows? Tell me what works and what doesn’t, even if it’s just “you’re overcomplicating this”. Thanks for taking a look.

u/TyKolt — 16 days ago