Skip to main content
Glama

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

Installation

  1. Clone the repository and checkout the main branch

  2. Install dependencies using UV:

uv install
  1. 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

  1. Replace /absolute/path/to/mediawiki-api-mcp with the actual absolute path to this project directory

  2. Update MEDIAWIKI_API_URL with your MediaWiki installation's API endpoint

  3. Set MEDIAWIKI_API_BOT_USERNAME to your bot username (typically in format YourUserName@YourBotName)

  4. Set MEDIAWIKI_API_BOT_PASSWORD to the generated bot password from your wiki's Special:BotPasswords page

  5. 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

License

MIT License

-
security - not tested
A
license - permissive license
-
quality - not tested

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/entanglr/mediawiki-api-mcp'

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