Bi-temporal graph store with 15 verified temporal operators as typed, deterministic MCP tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A temporal graph database whose query surface is built for LLM agents β and whose answers can be audited claim by claim.
Project page & blog: https://zxf-work.github.io/tgms/ Β· Paper: paper/main.pdf
LLM agents are unreliable at exactly the things temporal graph analytics requires: arithmetic, identifiers, and asserting only what the evidence shows. TGMS's answer is architectural β give the model no opportunity to do any of them:
tgms trace check
reads a saved answer's dependency scope against the event log β no
recompute, no store lock required β and returns FRESH /
POSSIBLY_STALE / UNDECIDABLE, sound in the direction that matters (it
never calls a stale answer fresh). Measured across two injection
campaigns, 6,978 trials: 0 false-fresh verdicts of 898 changed
answers, where the obvious cheap check β "did the correction touch a row
in the stored result?" β is wrong on 47.4% of the same trials;tgms artifact register/check/refresh turns it into a named,
generation-numbered artifact β refresh recomputes only what you ask, the
old generation stays byte-identical on disk, and a refresh propagates one
hop to whatever else was built on top of it, even when that dependent's
own scope was never touched. Measured across the M5 maintenance campaign:
0 false-fresh in 37,371 trials, 0 false-safe over 5,867
propagation decisions (99.0% resolved without recomputing anything),
and a 600/600 pinned-answer exemption;compute operator;No GPU, no API key, no dataset download. tgms demo builds a small store of
its own in a temp directory and runs the arc every TGMS answer follows: what
the graph currently believes, what it believed before a correction landed,
and the trace that backs both claims up. Clean environment to first temporal
result: under 5 minutes.
Once you want your own graph data, the native test suite, the MCP server, or an agent wired to a real LLM, see Full setup below β this quickstart is deliberately the smallest possible first step, not a tour of the operator surface.
Next steps, in the order most people need them: bring your own temporal graph data Β· give TGMS to an agent over MCP Β· audit an answer Β· maintain derived results Β· what you can rely on across versions Β· what's coming
Three different questions, three different answers. All three are reported because the third is the least flattering.
1. Does the agent layer beat the alternatives? Dev-split campaign
(CollegeMsg, open-source models served locally on one 24 GB GPU. "Answer
accuracy" is normalized typed-answer accuracy β counts and values scored
strictly, interval answers credited at IoU β₯ 0.5. Full receipts ship with
the paper and the eval records in benchmarks/results-v1/):
| pooled answer accuracy, Qwen2.5-14B | TGMS | vector-RAG | static-graph RAG | text-to-Cypher |
|---|---|---|---|---|
| all task families | 0.41 | 0.09 | 0.05 | 0.18 |
| correction probes ("as of ttβ¦") | 0.67 | 0.00 | 0.00 | 0.00 |
2. Is the engine competitive? Six systems answer one 13-query registry β TGMS native, TGMS-on-DuckDB, PostgreSQL, ClickHouse, Neo4j, Memgraph β with every cell hash-verified before it was timed:
| query shape | TGMS native | best other |
|---|---|---|
| temporal reachability, 200k | 14.7 ms | 3.9β7.3 s (Memgraph, Neo4j) |
| closed-triangle Ξ΄-motif, 200k | 28.7 ms | 2.1β5.5 s (Memgraph, Neo4j) |
| grouped aggregation, 200k | 14.5 ms | 32.6 ms (ClickHouse) |
| entity history by identity, 200k | 0.1 ms | 0.3 ms (PostgreSQL) |
| whole-window bucketed count, 10M | 84.7 ms | 37.9 ms (ClickHouse) |
The last row is the one we cannot close: ClickHouse keeps a factor of 2.2 on whole-window aggregation at both 1M and 10M, and it is a constant of the shape rather than something that grows with scale. Three rounds of profiling took that gap from 12Γ to 2.2Γ and each round found our own implementation rather than the workload. Single latency cells reproduce to about Β±20% between days, which is stated everywhere they are quoted.
At 10M events the full query suite runs inside 1.76 GB of peak RSS, 16 concurrent readers get 10.2Γ the throughput of one, and a live writer costs those readers 0β3% of per-query latency.
3. Can it answer the questions people actually ask? This is the honest one, and it now has a sequel. 110 questions were written by people who saw a plain-language description of two public datasets and never saw the operator list. Of those, 94 were expressible under the fixed 15-operator catalog β 10 were expressible when the study was pre-registered. Of LDBC SNB's 41 read templates, 3 executed β the operator-execution axis (does a plan compile, load, admit and run at all), a lower bar than the stricter ECQR result-contract axis, which stood at 7 of 41 β and that number had not moved in eight sessions, because 35 of the 38 misses needed labelled multi-way pattern matching: a deliberately deferred design decision, not a missing operator.
That deferred decision shipped. TGIR, a 12-primitive compositional temporal-graph IR, now runs the entire 15-operator catalog as byte-identical leaves and additionally compiles some question shapes β including labelled multi-way pattern matching β into chains of those primitives. Both axes were forecast before TGIR was built, frozen before the first row was measured, and moved to exactly the predicted level: LDBC operator-execution coverage 3 β 24 of 41, independent-question coverage 94 β 102 of 110, delivered/predicted 29/29 on the full 52-row forecast (28/28 on the 51 scoreable rows β one row was excluded by name in the freeze because its canonical corpus carries no corrections to find), 0 over-deliveries, 0 misses.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/tgms)<a href="https://allmcps.com/mcp/tgms"><img src="https://allmcps.com/api/badge/tgms?style=directory" alt="Tgms on AllMCPs" /></a>