mediawiki-api-mcp
If you are the rightful owner of mediawiki-api-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that enables interaction with MediaWiki installations via 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 |
---|---|
Edit or create MediaWiki pages with comprehensive editing options | |
Retrieve page information and content | |
Parse page content with support for wikitext processing, HTML generation, metadata extraction, and advanced parsing features | |
Compare two pages, revisions, or text content to show differences between them | |
Move pages with support for talk pages, subpages, and redirects | |
Delete pages with support for talk pages, watchlist management, and logging | |
Undelete (restore) deleted MediaWiki pages with comprehensive restoration options | |
Search for pages using MediaWiki's search API with advanced filtering | |
Search using OpenSearch protocol for quick suggestions and autocomplete | |
Get overall site information including general info, namespaces, statistics, extensions, and more |
Installation
-
Clone the repository and checkout the
main
branch -
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 (your.email@mediawiki.test)" # 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 (your.email@mediawiki.test)"
}
}
}
}
Configuration Instructions
- Replace
/absolute/path/to/mediawiki-api-mcp
with the actual absolute path to this project directory - Update
MEDIAWIKI_API_URL
with your MediaWiki installation's API endpoint - Set
MEDIAWIKI_API_BOT_USERNAME
to your bot username (typically in formatYourUserName@YourBotName
) - Set
MEDIAWIKI_API_BOT_PASSWORD
to the generated bot password from your wiki'sSpecial:BotPasswords
page - Customize
MEDIAWIKI_API_BOT_USER_AGENT
with 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
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