wikicitation-mcp

wikicitation-mcp

Provides 40 tools to Claude for Wikipedia citation analysis, edit history, and DOI/ISBN annotation, enabling citation quality scoring and metadata enrichment without leaving the chat.

Category
Visit Server

README

wikicitation-mcp

Wikipedia citation-science tools for Claude — pure Python, no R required.

An MCP server that exposes 40 tools to Claude Code, Claude Desktop, and claude.ai.
Ask Claude to fetch Wikipedia edit histories, analyse citations, score scientific quality, and annotate DOIs and ISBNs — all without leaving the chat.


What you can do

Category Examples
Edit history Full revision history, first/latest wikitext, category-wide sweeps
Citation analysis Count DOIs/refs/ISBNs, extract CS1 templates, compute SciScore
DOI & ISBN annotation Enrich DOIs via CrossRef / EuropePMC / Altmetric; books via Google Books / Open Library

Installation

Option A — PyPI (recommended)

No clone needed. uvx downloads and runs the package in one step:

# Requires uv (https://docs.astral.sh/uv/)
uvx wikicitation-mcp

Or install permanently with pip:

pip install wikicitation-mcp
wikicitation-mcp          # starts the stdio server

Option B — From source

git clone https://github.com/jsobel1/wikicitation-mcp.git
cd wikicitation-mcp
uv sync
uv run python server.py

Connect to Claude

Claude Code (CLI) — PyPI

claude mcp add wikilite -- uvx wikicitation-mcp
claude mcp list

Claude Code (CLI) — from source

# Run from inside the cloned directory
claude mcp add wikilite -- uv run python server.py

Claude Desktop — PyPI

Edit ~/.claude/claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "wikilite": {
      "command": "uvx",
      "args": ["wikicitation-mcp"]
    }
  }
}

Claude Desktop — from source

{
  "mcpServers": {
    "wikilite": {
      "command": "uv",
      "args": [
        "run", "python",
        "/ABSOLUTE/PATH/TO/wikicitation-mcp/server.py"
      ],
      "cwd": "/ABSOLUTE/PATH/TO/wikicitation-mcp"
    }
  }
}

Restart Claude Desktop — the wikilite server appears in the toolbar.

claude.ai (web, HTTP transport)

uvx wikicitation-mcp --transport streamable-http --port 8000
# Then in claude.ai → Settings → Connections → Add MCP server
# URL: http://localhost:8000/mcp

Quick start

Once connected, try these prompts in Claude:

Fetch all edits to the Wikipedia article "Circadian clock" up to today.
Count all DOIs, references, and ISBNs in this wikitext: [paste wikitext]
Calculate the SciScore for "Sleep deprivation".
Extract all citations from "CRISPR" — how many are journals vs websites vs books?
Show me the top 20 most-cited papers in the Wikipedia article "mRNA vaccine".
Annotate these DOIs with CrossRef metadata:
10.1038/nature12373, 10.1016/j.cell.2020.01.001

Usage notes

date_limit is an upper bound

date_limit controls the newest revision returned, not the oldest. To retrieve edits "since 2023", pass today's date as the limit and filter the returned rows by timestamp.

SciScore

get_sci_score returns two metrics:

Field Formula Meaning
sci_score journal citations ÷ total CS1 citations Proportion of references that are peer-reviewed journal articles

Range 0 to 1; higher = more scientifically sourced.

Altmetric

Altmetric returns attention scores without an API key for most DOIs and ISBNs. If a DOI or ISBN is not indexed, altmetric_score will be null. For production use, set the ALTMETRIC_KEY environment variable.


Tool reference

Group 1 — History & metadata (14 tools)

Tool Key arguments Returns
get_article_history article_name, date_limit revision table (revid, user, timestamp, size, comment)
get_article_recent article_name, date_limit metadata + full wikitext
get_article_initial article_name first-ever revision metadata + wikitext
get_article_info article_name pageid, title, byte length
get_tables_all article_name, date_limit initial + recent + history + info in one call
get_category_pages category list of article titles
get_pages_in_cat_table category structured page table (pageid, title, type)
get_subcat_table catname, replacement direct subcategories
get_subcat_multiple catname_list subcategories for N categories
get_subcat_with_depth catname, depth, replacement recursive subcategories
get_page_in_cat_multiple catname_list pages for N categories
get_category_history article_list revision table for a list of articles
get_category_recent article_list, date_limit metadata + wikitext for a list of articles
get_category_creation article_list creation-revision metadata for a list of articles

Group 2 — Citation counting, extraction & quality (19 tools)

Tool Key arguments Returns
get_doi_count text {"count": N}
get_ref_count text {"count": N}
get_url_count text {"count": N}
get_isbn_count text {"count": N}
get_hyperlink_count text {"count": N}
get_any_count text, regexp {"count": N}
extract_citations text list of CS1 template strings
extract_wikihypelinks text list of [[...]] wikilink strings
replace_wikihypelinks text {"cleaned_text": ...} with links replaced by display text
parse_cite_type text {"cite_type": ..., "fields": {...}}
extract_with_regex article_name, regexp, date_limit list of regex matches from live article
extract_all_regex article_name, date_limit all built-in pattern matches (doi, url, isbn, pmid, …)
parse_citations article_name, date_limit structured citation rows (cite_type, doi, author, year, title)
parse_all_citations article_name, date_limit long-form table: one row per citation field
get_citation_types article_name, date_limit citation counts by CS1 type
get_source_type_counts text citation counts by CS1 type from raw wikitext
get_sci_score article_name, date_limit sci_score (see above)
get_top_cited_papers article_name, date_limit top 40 DOIs annotated via EuropePMC
get_revert_counts start, end revert-tagged edit counts by article (≤30-day window)

Group 3 — DOI & ISBN annotation (7 tools)

Tool Key arguments Returns
annotate_dois_europmc doi_list title, journal, pubYear, citedByCount, isOpenAccess, …
annotate_dois_crossref doi_list title, authors, journal, year, publisher, citation count
annotate_dois_altmetric doi_list Altmetric score, tweet count, news mentions, …
annotate_dois_bibtex doi_list {"bibtex_entries": [...]}
annotate_isbn_google isbn title, authors, publisher, publishedDate, description
annotate_isbn_openlib isbn title, authors, publishers, publish_date, page count
annotate_isbns_altmetric isbn_list Altmetric score per ISBN

Running tests

# Unit tests — no network required
uv run pytest tests/ -m "not integration" -v

# Integration tests — require internet
uv run pytest tests/ -m integration -v

# Full suite
uv run pytest tests/ -v

Troubleshooting

uvx: command not found

Install uv first:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"

Server not appearing in Claude Code

claude mcp remove wikilite
claude mcp add wikilite -- uvx wikicitation-mcp
claude mcp list

ModuleNotFoundError: No module named 'mwparserfromhell'

The venv is missing a dependency. Run uv sync inside the cloned repo, or reinstall via pip install wikicitation-mcp.

get_revert_counts returns no results

The Wikipedia recentchanges API only retains ~30 days of history. Requests for date ranges older than that will return empty results.


Related projects

These three projects share the same core analysis logic at three different levels of interactivity — pick the one that matches how you want to work.

Project Interface When to use
wikicitation-mcp (this repo) MCP server for Claude Desktop / Claude Code / claude.ai You want to ask Claude questions in natural language and have it call the tools for you. Pure Python, no R required.
wikilite R package You want a programmable pipeline in R / R Markdown / Quarto with full access to revision tables, citation parsers, and ggplot2 / plotly / visNetwork output.
wikiliteApp Shiny web app (built on wikilite) You want a point-and-click GUI: per-article tabs (History Flow, Citations, Authorship, Stability with SciScore-over-time, Vandalism & Wars, WikiWho-powered Revision Inspector) and a Corpus Analysis mode (multi-corpus timeline, per-article + per-corpus SciScore, co-citation / publication / wikilink networks, batched EuropePMC + Google Books annotation, multi-sheet XLSX exports).

External references

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured