
MediaWiki
β 3from entanglr
Interact with MediaWiki installations through the MediaWiki API as a bot user.
MediaWiki API MCP Server
A Model Context Protocol (MCP) server that allows LLMs to interact with MediaWiki installations through the MediaWiki API as a bot user.
Features
Tools
The server provides various MCP tools with the wiki_ prefix:
Tool Description wiki_page_edit Edit or create MediaWiki pages with comprehensive editing options wiki_page_get Retrieve page information and content wiki_page_parse Parse page content with support for wikitext processing, HTML generation, metadata extraction, and advanced parsing features wiki_page_compare Compare two pages, revisions, or text content to show differences between them wiki_page_move Move pages with support for talk pages, subpages, and redirects wiki_page_delete Delete pages with support for talk pages, watchlist management, and logging wiki_page_undelete Undelete (restore) deleted MediaWiki pages with comprehensive restoration options wiki_search Search for pages using MediaWiki's search API with advanced filtering wiki_opensearch Search using OpenSearch protocol for quick suggestions and autocomplete wiki_meta_siteinfo Get overall site information including general info, namespaces, statistics, extensions, and more
Development
Technology Stack
-
MCP SDK: mcp >= 1.2.0 (using FastMCP pattern)
-
HTTP Client: httpx >= 0.27.0 for MediaWiki API calls
-
Data Validation: pydantic >= 2.0.0 for configuration models
-
Environment: python-dotenv >= 1.0.0 for configuration
-
Testing: pytest with pytest-asyncio for async testing
-
Code Quality: ruff for linting, mypy for type checking
Architecture
-
FastMCP server with
@mcp.tool()decorators -
Separation of concerns: server β handler β client β MediaWiki API
-
AsyncIO throughout for non-blocking operations
-
Environment-based configuration for MediaWiki credentials
Client Layer (client.py and client_modules/)
-
Handles MediaWiki API authentication and requests
-
Manages CSRF tokens and session state
-
Provides typed methods for API operations
Tools Layer (tools/)
-
Defines MCP tool schemas using JSON Schema
-
Separated by functional area (edit, search)
-
Ensures all tools have
wiki_prefix
Handlers Layer (handlers/)
-
Implements actual tool logic
-
Handles argument validation and error handling
-
Returns properly formatted MCP responses
Server Layer (server.py and server_tools/)
-
Main MCP server orchestration
-
Routes tool calls to appropriate handlers
-
Manages configuration and client lifecycle
Project Structure
The project is organized into modular components for maintainability:
mediawiki-api-mcp/
βββ mediawiki_api_mcp/
β βββ __init__.py
β βββ server.py # FastMCP server with tool definitions
β βββ client.py # MediaWiki API client
β βββ client_modules/ # Client modules for API operations
β β βββ __init__.py # Client module exports
β β βββ client_*.py # Individual client modules
β βββ handlers/ # Business logic handlers
β β βββ __init__.py # Handler exports
β β βββ wiki_*.py # Individual tool handlers
β βββ tools/ # Tool schemas
β β βββ __init__.py # Tool schema exports
β β βββ wiki_*.py # Individual tool schemas
β βββ server_tools/ # Tool definitions
β βββ __init__.py # Tool definition exports
β βββ wiki_*.py # Individual tool definitions
βββ tests/ # Test suite
β βββ test_*.py # Test files matching handlers
βββ docs/ # Documentation
β βββ tools/ # Tool-specific documentation
β βββ wiki_*.md # Individual tool docs
βββ pyproject.toml # Project configuration
βββ uv.lock # Dependency lock file
Running Tests
uv run pytest
Run specific test modules, e.g.:
uv run pytest tests/test_server.py uv run pytest tests/test_tools.py uv run pytest tests/test_wiki_page_edit.py uv run pytest tests/test_wiki_search.py uv run pytest tests/test_wiki_opensearch.py
Code Quality
Linting
uv run ruff check
Type checking
uv run mypy mediawiki_api_mcp
Error Handling
The server implements comprehensive error handling:
-
Configuration errors: Missing environment variables
-
Authentication errors: Invalid credentials or permissions
-
API errors: Network issues, invalid requests
-
Tool errors: Missing parameters, invalid arguments
All errors are returned as MCP TextContent responses for LLM visibility.
Security
-
Bot credentials are required for editing operations
-
All API requests include proper User-Agent headers
-
CSRF tokens are automatically managed
-
Input validation on all tool parameters
Installation
-
Clone the repository and checkout the
mainbranch -
Install dependencies using UV:
uv install
- Set up environment variables:
export MEDIAWIKI_API_URL="http://mediawiki.test/api.php" export MEDIAWIKI_API_BOT_USERNAME="YourUserName@YourBotName" export MEDIAWIKI_API_BOT_PASSWORD="YourBotPassword" export MEDIAWIKI_API_BOT_USER_AGENT="MediaWiki-MCP-Bot/1.0 ([emailΒ protected])" # Optional
Usage
Running the Server
uv run mediawiki-api-mcp
Or directly:
python -m mediawiki_api_mcp.server
Configuration with Claude Desktop
Configuration File Location
-
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json -
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Template Configuration
Add to your Claude Desktop configuration file:
{ "mcpServers": { "mediawiki-api": { "command": "uv", "args": [ "--directory", "/absolute/path/to/mediawiki-api-mcp", "run", "mediawiki-api-mcp" ], "env": { "MEDIAWIKI_API_URL": "http://mediawiki.test/api.php", "MEDIAWIKI_API_BOT_USERNAME": "YourUserName@YourBotName", "MEDIAWIKI_API_BOT_PASSWORD": "YourBotPassword", "MEDIAWIKI_API_BOT_USER_AGENT": "MediaWiki-MCP-Bot/1.0 ([emailΒ protected])" } } } }
Configuration Instructions
-
Replace
/absolute/path/to/mediawiki-api-mcpwith the actual absolute path to this project directory -
Update
MEDIAWIKI_API_URLwith your MediaWiki installation's API endpoint -
Set
MEDIAWIKI_API_BOT_USERNAMEto your bot username (typically in formatYourUserName@YourBotName) -
Set
MEDIAWIKI_API_BOT_PASSWORDto the generated bot password from your wiki'sSpecial:BotPasswordspage -
Customize
MEDIAWIKI_API_BOT_USER_AGENTwith appropriate contact information (optional)
Bot Password Setup
Create bot credentials at e.g.: http://mediawiki.test/index.php/Special:BotPasswords
Required permissions:
-
Basic rights: Read pages
-
High-volume editing: Edit existing pages, Create, edit, and move pages
-
Additional permissions as needed for your specific use case
Security Notes
-
Keep your bot credentials secure and never commit them to version control
-
Use the principle of least privilege when setting bot permissions
-
Monitor bot activity through your MediaWiki's logging interface
-
Consider using IP restrictions for additional security
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITβ you can use, modify, and redistribute it under that license's terms.
License
MIT License