cd /news/developer-tools/building-an-mcp-server-that-verifies… · home topics developer-tools article
[ARTICLE · art-64393] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

Building an MCP Server That Verifies Its Sources: Inside footnote-mcp

A developer built footnote-mcp, a Python MCP server that verifies source claims using heuristic and LLM-based backends. The tool achieves 100% accuracy on numeric and factual data claims and 83% overall accuracy, with a blind spot in semantic negation and paraphrase. It supports web search, page fetching, and browser automation without requiring API keys.

read2 min views1 publishedJul 18, 2026

footnote-mcp is a Python MCP server installable via pip, Docker, or pipx. No API keys required — it falls back to scraped Bing + DuckDuckGo search and automatic headless Chromium for JavaScript-heavy pages.

The core tool is evidence_entailment

. It takes a claim and a source text, and returns whether the claim is supported, unsupported, or contradicted. The heuristic backend extracts numeric and named-entity tokens from both the claim and source, then checks for exact matches and contradictions. On its design domain — numeric and factual data claims — it achieves 100% accuracy on a labeled benchmark set.

For semantic cases (negation, paraphrase), the ollama

backend uses a local LLM as a judge.

Three tools build on this: corroborate_claim

triangulates a claim across multiple sources, locate_claim_span

finds the exact supporting sentence with character offsets, and build_research_debug_report

produces a compact report of queries, URLs, and verification gaps.

web_read

fetches pages through a 5-tier escalation ladder: HTTP (curl_cffi) to rotating proxy to headless Chromium to Chromium through proxy to hosted scrape API (Firecrawl/ScrapingBee). A block/quality detector decides when to escalate, and per-domain rate limiting, circuit breakers, and negative cache keep it polite.

web_search

supports Tavily, Brave, Google, or scraped Bing + DuckDuckGo as fallback. Pass semantic: true

to reorder results by meaning using local Ollama embeddings.

Beyond text, the server handles tables, CSV/XLSX/PDF/JSON, date validation, unit resolution, and time series reconciliation. For JavaScript-heavy pages, 10 browser tools let you drive a headless Chromium session. When generic parsers fail, the server can synthesize sandboxed extraction code through a controlled recipe system.

The heuristic backend achieves 100% accuracy on numeric and factual data claims (n=15). Overall accuracy including semantic cases is 83% (n=18). The blind spot is purely semantic negation and paraphrase — the ollama

backend closes that gap.

pip install footnote-mcp
python -m playwright install chromium
footnote-mcp

Then add to your MCP client config and start researching. Full source at github.com/KazKozDev/footnote-mcp.

Feedback welcome — especially on the verification approach. The benchmark is designed to be extended, so if you have a claim/source pair that should be caught, open an issue or PR.

── more in #developer-tools 4 stories · sorted by recency
── more on @footnote-mcp 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/building-an-mcp-serv…] indexed:0 read:2min 2026-07-18 ·