Skip to main content
Glama

anticonf — anti-confabulation MCP server

An MCP server that guards against LLM confabulation structurally: instead of asking a model "is this true?", it fetches raw observed facts and makes the calling model compare its own claim against them.

The design

  • verify_claim never returns verdicts like "supports" or "contradicts". It fetches the claimed sources (or searches for candidates), extracts atomic observed facts, and returns them raw. The model that is about to assert does the comparison — against evidence it did not write.

  • note_observation logs a fact with provenance and returns a fact_id. Any citation of an "observation" in an answer should reference this id.

  • Unverified claims surface in list_observations as missing entries, so gaps are visible rather than silently filled.

  • v1 makes deliberately no external LLM calls — no scorer that could itself confabulate.

Related MCP server: fact-checker

Tools

Tool

What it does

verify_claim(claim, source_urls=[], search_query=None)

Fetch sources, extract atomic observed facts, aggregate source stats

note_observation(observation, source_url, source_kind)

Log a fact with provenance, get back a fact_id

list_observations(limit=20)

Recent observations — gives the calling LLM context

fetch_url(url)

Fetch one URL (httpx → trafilatura extraction)

reset_observations()

Wipe the local observations log

translate_text(text, target_lang)

Translate text

extract_json(...)

Extract JSON from noisy model output

bridge_post(source, kind, body) / bridge_read(n)

Cross-session handoff: post a finding, read recent findings (append-only JSONL)

Search runs through DuckDuckGo HTML (via ddgs) — no API keys anywhere.

Install

git clone <this repo> && cd anticonf
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt

Configure (any MCP client)

{
  "mcpServers": {
    "anticonf": {
      "command": "/path/to/anticonf/.venv/bin/python",
      "args": ["/path/to/anticonf/mcp_server.py"]
    }
  }
}

Data lives in data/observations.jsonl by default; override with the ANTICONF_DATA_DIR environment variable.

A Rust sibling of this server ships inside openklawc (crates/mcp-anticonf).

License

MIT

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers