All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Google ADK Compatibility: Fixed compatibility with Google ADK agents by removing
anyOfschemas from optional parameters that were incompatible with Google's function calling API. Changed parameter type declarations to generate clean, simple schemas while maintaining backward compatibility.summarize_article_for_query.max_length:Optional[int] = 250→int = 250summarize_article_section.max_length:Optional[int] = 150→int = 150extract_key_facts.topic_within_article:Optional[str] = None→str = ""(with automatic conversion)
- Google ADK Compatibility Tests: Added comprehensive tests to ensure all tool schemas remain compatible with Google ADK agents.
- Revision History Tools: Added six new MCP tools for accessing Wikipedia revision history and user contribution data:
get_page_revisions: Get complete revision history for a Wikipedia page with user info, timestamps, and changesget_user_contributions: Track all contributions made by a specific Wikipedia user across different pagesget_user_info: Get detailed statistics about a Wikipedia user including edit count, groups, and registration datecompare_revisions: Compare two specific revisions to see differences between versionsget_page_creator: Find who originally created a Wikipedia pageget_revision_details: Get detailed information about a specific revision including full content
- Revision History Resources: Added corresponding MCP resources for REST-style access to revision history functionality
- Comprehensive Tests: Added test suite for all new revision history and user contribution features
- Talk Page Tools: Added
get_talk_pagetool to retrieve Wikipedia talk pages with discussion content and metadata structure - Edit Activity Analysis: Added
analyze_edit_activitytool with statistical spike detection using z-scores to identify periods of unusual editing activity - Significance Analysis: Added
get_significant_revisionstool with weighted scoring algorithm (30% byte changes, 25% revert proximity, 20% editor experience, 15% discussion references, 10% edit war patterns) - Controversy Detection: Comprehensive toolset for detecting Wikipedia edit wars, conflicts, and contentious periods through statistical analysis
- Advanced Analytics: Support for granular datetime parameters, configurable sensitivity thresholds, and detailed significance factor breakdowns
- Integration Tests: Added extensive test suite covering talk pages, spike detection algorithms, significance scoring, and controversy detection workflows
- Comprehensive Country/Locale Support: Introduced new CLI arguments
--country(-c) and--list-countriesto enable intuitive selection of Wikipedia content based on country or locale codes (e.g.,US,China,Taiwan). The server now automatically maps these codes to appropriate Wikipedia language variants (e.g.,UStoen,CNtozh-hans,TWtozh-tw). This feature includes:--country <CODE_OR_NAME>: Specifies the country/locale for Wikipedia content. Supports both ISO 3166-1 alpha-2 codes (e.g.,JP,DE) and full country names (e.g.,Japan,Germany), with case-insensitive matching for full names.--list-countries: Displays a comprehensive list of all supported country/locale codes and their mapped Wikipedia languages, along with usage examples.
- Extensive Testing: Added a new test module
tests/test_cli_country.pywith comprehensive unit and integration tests for all country/locale functionalities, including:- Validation of CLI arguments and help messages.
- Verification of country-to-language resolution.
- Conflict detection when
--countryand--languageare used together. - Successful server startup with various country codes.
- Improved Country/Locale Error Handling: Enhanced error messages for unsupported country/locale codes, providing clearer guidance and suggesting the
--list-countriesoption.
-
Configurable Port: Added optional
--portargument for SSE transport (default: 8000). Enables running multiple server instances on the same host without port conflicts.# Run on custom port wikipedia-mcp --transport sse --port 8080 # Multiple instances on different ports wikipedia-mcp --transport sse --port 8081 & wikipedia-mcp --transport sse --port 8082 &
-
Optional Caching: Added
--enable-cacheflag for Wikipedia API response caching. Improves performance for repeated queries by caching results in memory using LRU cache (maxsize=128).# Enable caching for better performance wikipedia-mcp --enable-cache # Combine with other options wikipedia-mcp --transport sse --port 8080 --enable-cache --language ja
- Dependency Migration: Migrated from
mcp==1.10.0tofastmcp>=2.3.0for enhanced SSE transport capabilities and modern MCP features including configurable port support. - Import Updates: Updated server implementation to use
from fastmcp import FastMCPinstead of the legacy MCP server import.
- Port configuration only applies to SSE transport; STDIO transport ignores the port parameter
- Caching is disabled by default to maintain backward compatibility
- When caching is enabled, the following methods are cached: search, get_article, get_summary, get_sections, get_links, get_related_topics, summarize_for_query, summarize_section, extract_facts
- Cache statistics can be accessed programmatically via
client.method.cache_info()when caching is enabled
- Added command-line argument
--language(-l) towikipedia-mcpto specify the Wikipedia language for the server (e.g.,wikipedia-mcp --language ja). This enhancement allows users to easily configure the language at startup. (Related to GitHub Issue #7).
- Docker Improvements: Reverted Dockerfile to use proper MCP-compatible approach with PyPI installation
- MCP Studio Compatibility: Restored stdio transport for proper MCP client communication
- Package Installation: Now uses
pip install wikipedia-mcp(recommended approach) instead of local file copying - Environment Configuration: Restored proper Python environment variables for containerized deployment
- Dependency Cleanup: Removed unnecessary HTTP server dependencies (uvicorn) from requirements
- Fixed Docker container to work properly with MCP Studio and Claude Desktop
- Restored proper MCP protocol compliance using stdio transport instead of HTTP
- Added an optional
languageparameter tocreate_serverfunction inwikipedia_mcp.serverto allow configuring theWikipediaClientwith a specific language (e.g., "ja", "es"). Defaults to "en". (Fixes GitHub Issue #7).
- N/A
- Corrected assertions in CLI tests (
tests/test_cli.py) to accurately reflect the behavior of thestdiotransport in a non-interactive subprocess environment. Tests now expect and verifysubprocess.TimeoutExpiredand checkstderrfor startup messages, ensuring robust testing of CLI startup and logging levels.
- New tool:
summarize_article_for_query(title: str, query: str, max_length: Optional[int] = 250)to get a summary of a Wikipedia article tailored to a specific query. - New resource:
/summary/{title}/queryfor thesummarize_article_for_querytool. - New tool:
summarize_article_section(title: str, section_title: str, max_length: Optional[int] = 150)to get a summary of a specific section of a Wikipedia article. - New resource:
/summary/{title}/section/{section_title}for thesummarize_article_section