GroundLens
Overview
Description from the maker (original English)
Guardrails for LLM answers: exact checks against sources, PASS/REVIEW/FAIL, signed records.
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs on your computer
- Transport: stdio
- Category: Search & AI memory
Install
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
Install Python (uv) on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
Install Python (uv)
One time only; it works for every server that needs Python (uv)
Open the Claude desktop app’s settings file
SettingsDeveloperEdit Config
Paste these settings and save the file
{ "mcpServers": { "groundlens": { "command": "uvx", "args": [ "groundlens", "mcp" ] } } }Quit Claude and open it again
Try it
Use GroundLens and tell me what you can do for me, then show me one thing✓ If Claude says it is using GroundLens or shows a GroundLens tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect GroundLens yet
GroundLens runs on your computer, but ChatGPT can only connect servers that run on the web
What you can do instead
A · Use an app that can connect GroundLens
- Install Python (uv) on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
- Install Python (uv) on your computer first (one time)
- Install Python (uv) on your computer first (one time)
- Install Python (uv) on your computer first (one time)
B · Others in Search & AI memory that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
- AIHOT✓ ChatGPT
- Sui Knowledge Base (kapa.ai)✓ ChatGPT
- Exa✓ ChatGPT
Works with Claude Code, with some setup first
Install Python (uv) on your computer first (one time)
Install Python (uv)
One time only; it works for every server that needs Python (uv)
Open Terminal
Mac: press Command+Space and type Terminal · Windows: open PowerShell
Paste this command and press Enter
claude mcp add groundlens -- uvx groundlens mcpType /mcp in Claude Code
You should see GroundLens listed as connected
Try it
Use GroundLens and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using GroundLens or shows a GroundLens tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
Install Python (uv) on your computer first (one time)
Install Python (uv)
One time only; it works for every server that needs Python (uv)
Open the AI chat in Cursor in Agent mode
Try it
Use GroundLens and tell me what you can do for me, then show me one thing✓ If Cursor says it is using GroundLens or shows a GroundLens tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
Install Python (uv) on your computer first (one time)
Install Python (uv)
One time only; it works for every server that needs Python (uv)
Open the AI chat in VS Code in Agent mode
Try it
Use GroundLens and tell me what you can do for me, then show me one thing✓ If VS Code says it is using GroundLens or shows a GroundLens tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
For developers: Terminal commands and JSON settings
Installed on your computer
Claude Code
claude mcp add groundlens -- uvx groundlens mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"groundlens": {
"command": "uvx",
"args": [
"groundlens",
"mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"groundlens": {
"command": "uvx",
"args": [
"groundlens",
"mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"groundlens": {
"type": "stdio",
"command": "uvx",
"args": [
"groundlens",
"mcp"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
At a glance
- Downloads per weeki
- 106/wk
- Connection
- Runs on your computer
- Transport
- stdio
- Latest versioni
- 6.0.5
- Categoryi
- Search & AI memory
- Published to registryi
- Oct 16, 2026
- Code last changedi
- Nov 9, 2026
- Maker
- groundlens-dev
- Packages
pypi: groundlens- Website
- groundlens.dev
- Registry status
- Active
Which apps can use it
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Related guides
What it can do
Runs on your computer; the tool list appears in your AI app after you install it.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 11, 2026
- ✓ Pass
Maker matches the repo
The registry name was verified with the GitHub account groundlens-dev, which owns the repo
- ✓ Pass
Still maintained
Code last changed 3 days ago
- ✓ Pass
Has a licence
Uses Apache-2.0
- – Not applicable
Endpoint responds
This one runs on your computer; there is no internet endpoint
- – Not applicable
Sign-in with OAuth
Runs on your computer and uses local settings instead
- … Not checked yet
No hidden instructions in tool descriptions
Runs on your computer; we can only read tool lists from internet endpoints
Discussion
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
User reviews
No reviews yet
Compared with others in Search & AI memoryi
- More stars than 90% of the other 5919 servers in this category
- Published to the registry more recently than 60% of the other 5919 servers in this category
- Basic checks equal to or better than 100% of the other 5919 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is GroundLens safe?
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
The registry does not list a required key, though some servers ask you to sign in on first use.
Does it run on my computer or in the cloud?
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
Is it still maintained?
The GitHub repo last changed 3 days ago, and the latest version (6.0.5) reached the registry 26 days ago.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
What can I use instead?
In the same category: Ruflo, Context7, Metabase
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Guardrails for LLM answers
GroundLens checks AI answers against your documents: the figures, who they are about, and whether they answer the question.
On financial answers it had never seen, it stopped 3 of 4 wrong ones; on public claims with numbers, half of the unsupported ones. About 10 ms per check, deterministic, no LLM in the loop. 1
🤔 Already running an LLM‑as‑judge? Keep it. GroundLens runs the exact checks first, and a FAIL never reaches the judge. Your judge only sees the answers the exact checks could not reject.
Deterministic Exact checks first, no LLM judge needed
Provable PASS, REVIEW or FAIL, with a signed record
Measured Measure the error rate of what passes, on your answers
Portable Rust engine: the same hash on every OS
Works with
Quickstart
# pip install groundlens
import groundlens as gl
verifier = gl.Verifier(sink=gl.sinks.jsonl("records/")) record = verifier.check(answer="Revenue was €42.1 million.", passages=["Revenue reached €41.2 million."]) print(record.decision, record.reasons)
FAIL ['c2: groundlens.numeric contradicted: €42.1 million not in sources; nearest 41200000 EUR in ctx-0 (relative distance 0.021)']
Runs locally: no account, no API key, no model, no network. The signed record is in records/ before check returns.
Integration
The same check, wired into your stack:
Langfuse · pip install "groundlens[langfuse]"
from langfuse import get_client
verifier = gl.Verifier(sink=gl.sinks.jsonl("records/"), observers=[gl.integrations.langfuse(get_client())])
Call check inside the observation that produced the answer, and its trace gets:
- Score `groundlens.decision`: categorical,
PASS,REVIEWorFAIL, on the check and on its trace. Filter traces by it, chart it, export it. - Observation `groundlens.check`: type
guardrail. The reasons are its status message, one per line. Its level follows Langfuse's own scale:PASSisDEFAULT,REVIEWisWARNING,FAILisERROR. - Metadata of the check: decision, reason codes (
groundlens.scope.contradicted), policy, and the id and hash of the signed record behind it. - Judge: a
generationobservation with the model name, next to your own model calls. - Spans: one per verifier, plus the store, each with its duration. Log View shows them in milliseconds.
- SDK: Python v3 and v4. Tested on Langfuse Cloud and self-hosted Langfuse 4.58.
Grafana and OpenTelemetry · pip install "groundlens[otel]"
verifier = gl.Verifier(sink=gl.sinks.jsonl("records/"), observers=[gl.integrations.otel()])
Spans and metrics go through the providers your application already configured: Tempo, Prometheus, or any OpenTelemetry backend.
- Metrics:
groundlens_decisions_total{decision, policy},groundlens_reasons_total{reason, decision},groundlens_check_duration_seconds{stage}with stagetotal,engine,judge,sign,store. - Spans:
groundlens.checkwithgroundlens.decision,groundlens.reasons, record id and hash; children per verifier, the judge (gen_ai.*) and the store. - Dashboard: the one in the image.
gl.integrations.grafana_dashboard()returns the path of its JSON; import it in Dashboards → New → Import. - PromQL, share of answers that failed:
sum(rate(groundlens_decisions_total{decision="FAIL"}[15m])) / sum(rate(groundlens_decisions_total[15m]))
- Alert when more than 5 % fail:
- alert: GroundLensFailRateHigh
expr: sum(rate(groundlens_decisions_total{decision="FAIL"}[15m])) / sum(rate(groundlens_decisions_total[15m])) > 0.05 for: 10m
- Try it:
docker run -p 3000:3000 -p 4318:4318 grafana/otel-lgtm, thenpython examples/observability/credit_copilot.py grafana --minutes 5. Tested on Grafana 12 with Tempo and Prometheus.
Claude, Codex, Cursor, VS Code and other MCP clients · uvx --from "groundlens[mcp]" groundlens mcp
Your assistant checks its own draft before it answers. Three read-only tools over stdio: verify_answer, verify_run, verify_records. Needs uv.
- Claude Code (plugin: the MCP server plus a skill that tells Claude when to check):
claude plugin marketplace add groundlens-dev/groundlens
claude plugin install groundlens@groundlens
- Codex:
codex mcp add groundlens -- uvx --from "groundlens[mcp]" groundlens mcp
- Any MCP client (Claude Desktop, Windsurf, Zed...):
{ "mcpServers": { "groundlens": { "command": "uvx", "args": ["--from", "groundlens[mcp]", "groundlens", "mcp"] } } }
With the package installed (pip install "groundlens[mcp]"), "command": "groundlens-mcp" is enough.
- Nothing to install: the Hugging Face Space is also a remote MCP server, with
verify_answer, athttps://groundlens-groundlens.hf.space/gradio_api/mcp/.
OpenClaw · clawhub install groundlens
A skill on ClawHub, the skill registry of OpenClaw. Before your assistant sends an answer with figures taken from your documents, it runs groundlens verify on its draft:
- PASS: the answer goes out.
- FAIL: it fixes the figure from the source and checks again.
- REVIEW: the answer goes out, saying which figure it could not confirm.
Runs on your machine, with no API key and no second model. The skill is in plugins/groundlens/skills/groundlens, the same one the Claude Code plugin uses. OpenClaw can also use the MCP server directly, with openclaw mcp add.
Where records are kept · sink=
check() returns only after the signed record is stored. If it cannot be stored, check() raises and no decision comes back. Each sink keeps a chain: every record carries the hash of the one before it.
| Sink | What you pass | How it stays append-only |
|---|---|---|
gl.sinks.jsonl("records/") | a directory or a .jsonl path | one JSON line per record, flushed to disk and locked on every write. For development and single machines |
gl.sinks.s3_object_lock(boto3.client("s3"), "bucket") | your S3 client and a bucket created with Object Lock | one object per record, written only if absent; retain_days= adds a retention date (COMPLIANCE mode by default) |
gl.sinks.azure_blob(container_client) | an azure.storage.blob.ContainerClient | one blob per record, never overwritten; give the container a time-based immutability policy |
gl.sinks.postgres(psycopg.connect(...)) | any DB-API connection | one row per record; the table is created if missing, and its keys stop a position from being written twice or a chain from forking |
impo