Skip to main content
Glama
README.md8.2 kB
# DOI Citation Verifier MCP Server [![smithery badge](https://smithery.ai/badge/@tfscharff/doi-mcp)](https://smithery.ai/server/@tfscharff/doi-mcp) A Model Context Protocol (MCP) server that **prevents citation hallucination** by verifying academic citations against **9 authoritative databases**. This server enables AI assistants to verify every citation against real publications before citing them. ## The Problem This Solves Large language models sometimes "hallucinate" academic citations - citing papers that don't exist, misattributing real titles to wrong authors, or mixing up publication details. This MCP server eliminates that problem by: 1. **9-database verification**: Checks citations across CrossRef, OpenAlex, PubMed, zbMATH, ERIC, HAL, INSPIRE-HEP, Semantic Scholar, and DBLP 2. **Parallel search**: Queries all databases simultaneously for fast results (~1 second) 3. **Comprehensive coverage**: 600+ million publications across all disciplines including STEM, humanities, social sciences, and education 4. **DOI-backed citations**: Every verified citation includes a valid, clickable DOI ## Features - **9 Database Search**: CrossRef, OpenAlex, PubMed, zbMATH, ERIC, HAL, INSPIRE-HEP, Semantic Scholar, DBLP - **Verify Citations**: Check if a paper with specific details actually exists across all databases - **Find Verified Papers**: Search for real papers on a topic and get only verified citations - **Parallel Processing**: All database queries run simultaneously for maximum speed - **Performance Optimized**: Smart caching and early exit strategies for 25-35% faster verification - **Source Selection**: Search all databases or target specific sources - **Citation Formatting**: Returns properly formatted citations with DOIs - **Zero Configuration**: All databases work out-of-the-box with no API keys required ## How It Works When an AI assistant is asked about research or for citations: 1. **Without this MCP**: The assistant might cite "According to Smith et al. (2023) in Nature..." referencing a paper that doesn't exist 2. **With this MCP**: The assistant uses `verifyCitation` first, which searches across 9 databases in parallel and returns: - Verified match with full DOI → Can be cited - No match found → Cannot cite; must search for real papers instead ## Tools ### verifyCitation **Primary anti-hallucination tool** - Verifies a citation exists across multiple databases before it can be mentioned. **Input:** - `title` (string, optional): Paper title (partial matches accepted) - `authors` (array, optional): Author names (last names sufficient) - `year` (number, optional): Publication year - `doi` (string, optional): DOI if known - `journal` (string, optional): Journal name **Returns JSON with:** - `verified`: true/false - If verified=true: DOI, title, authors, year, journal, URL, source database - If verified=false: Warning message that no matching publication was found - Match quality indicators for transparency **Example successful verification:** ```json { "verified": true, "doi": "10.1038/s41586-023-06004-9", "title": "Accurate structure prediction of biomolecular interactions...", "authors": ["John Jumper", "Richard Evans", "..."], "year": 2023, "journal": "Nature", "url": "https://doi.org/10.1038/s41586-023-06004-9", "source": "crossref", "message": "✓ Citation verified" } ``` ### findVerifiedPapers Search for real papers on a topic and return only verified citations with DOIs from multiple databases. **Input:** - `query` (string): Search query (topic, keywords, author names) - `source` (string, optional): Which database to search - "all" (default), "crossref", "openalex", "pubmed", "zbmath", "eric", "hal", "inspirehep", "semanticscholar", or "dblp" - `limit` (number, optional): Number of results per source (1-20, default: 5) - `yearFrom` (number, optional): Minimum publication year - `yearTo` (number, optional): Maximum publication year **Returns:** Array of verified papers from the specified database(s) with complete citation information including source **Example:** ```javascript // Search all 9 databases findVerifiedPapers({ query: "CRISPR gene editing", limit: 5 }) // Search only PubMed for biomedical papers findVerifiedPapers({ query: "cancer immunotherapy", source: "pubmed", limit: 10 }) // Search zbMATH for mathematics papers findVerifiedPapers({ query: "algebraic topology", source: "zbmath" }) // Search DBLP for computer science papers findVerifiedPapers({ query: "neural networks", source: "dblp", yearFrom: 2020 }) // Search ERIC for education research findVerifiedPapers({ query: "active learning pedagogy", source: "eric" }) // Search HAL for French/European humanities research findVerifiedPapers({ query: "phenomenology Husserl", source: "hal" }) // Search INSPIRE-HEP for high-energy physics papers findVerifiedPapers({ query: "Higgs boson", source: "inspirehep" }) ``` ## Installation ### Installing via Smithery To install DOI Citation Verifier automatically via [Smithery](https://smithery.ai/server/@tfscharff/doi-mcp): ```bash npx -y @smithery/cli install @tfscharff/doi-mcp ``` ### Manual Installation 1. Clone the repository 2. Install dependencies: `npm install` 3. Build the project: `npm run build` 4. Add to your MCP client configuration ## Development ```bash # Install dependencies npm install # Build npm run build # Development with watch mode npm run dev # Test with Smithery CLI npx @smithery/cli dev ``` ## Example Usage **Before this MCP (citation hallucination):** ``` User: "Tell me about recent AlphaFold research" Assistant: "According to Johnson et al. (2024) in Science, AlphaFold3 achieved..." ❌ This paper doesn't exist ``` **After this MCP (verified citations only):** ``` User: "Tell me about recent AlphaFold research" Assistant: [Uses findVerifiedPapers tool] "According to Jumper et al. (2023) in Nature (DOI: 10.1038/s41586-023-06004-9), AlphaFold3 achieved..." ✓ Real paper with valid DOI verified across databases ``` **Verification catches fake citations:** ``` User: "Can you verify this citation: Smith et al. (2024), 'Quantum AI', Nature" Assistant: [Uses verifyCitation tool - searches all 9 databases in parallel] "⚠ I cannot verify this citation - no matching publication found in any of the 9 databases. This citation may be incorrect." ``` ## Database Coverage All databases are queried in parallel for maximum speed (~1 second total): ### General Databases - **CrossRef**: 150+ million scholarly publications across all disciplines - **OpenAlex**: 250+ million scholarly works across all disciplines - **Semantic Scholar**: 200+ million papers with AI-powered search ### Specialized Databases - **PubMed**: 35+ million biomedical and life sciences publications - **zbMATH**: 4+ million mathematics publications - **DBLP**: Comprehensive computer science bibliography (journals and conferences) - **ERIC**: 1.7+ million education research publications - **HAL**: 4.4+ million French/European scholarly documents (2.5M English) - **INSPIRE-HEP**: 1.7+ million high-energy physics publications ### Total Coverage **600+ million publications** across all academic disciplines with specialized depth in STEM, computer science, biomedical sciences, mathematics, and education research. ## License MIT ## Contributing Contributions are welcome! Please feel free to submit issues or pull requests. ## Related ### API Documentation - [CrossRef API](https://www.crossref.org/documentation/retrieve-metadata/rest-api/) - [OpenAlex API](https://docs.openalex.org/) - [PubMed API](https://www.ncbi.nlm.nih.gov/home/develop/api/) - [zbMATH API](https://zbmath.org/api/) - [ERIC API](https://eric.ed.gov/?api=) - [HAL API](https://api.archives-ouvertes.fr/docs/) - [INSPIRE-HEP API](https://github.com/inspirehep/rest-api-doc) - [Semantic Scholar API](https://www.semanticscholar.org/product/api) - [DBLP API](https://dblp.org/faq/How+to+use+the+dblp+search+API.html) ### Resources - [DOI Handbook](https://www.doi.org/the-identifier/resources/handbook) - [Model Context Protocol](https://modelcontextprotocol.io)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tfscharff/doi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server