MediaWiki

Interaja com instalações do MediaWiki através da API do MediaWiki como um usuário bot.

Documentação

Servidor MCP da API MediaWiki

Um servidor Model Context Protocol (MCP) que permite que LLMs interajam com instalações MediaWiki através da API MediaWiki como usuário bot.

Recursos

Ferramentas

O servidor fornece várias ferramentas MCP com o prefixo wiki_:

FerramentaDescrição
wiki_page_editEditar ou criar páginas MediaWiki com opções abrangentes de edição
wiki_page_getRecuperar informações e conteúdo de páginas
wiki_page_parseAnalisar conteúdo de páginas com suporte para processamento de wikitexto, geração de HTML, extração de metadados e recursos avançados de análise
wiki_page_compareComparar duas páginas, revisões ou conteúdo de texto para mostrar diferenças entre eles
wiki_page_moveMover páginas com suporte para páginas de discussão, subpáginas e redirecionamentos
wiki_page_deleteExcluir páginas com suporte para páginas de discussão, gerenciamento de lista de vigilância e registro
wiki_page_undeleteRestaurar páginas MediaWiki excluídas com opções abrangentes de restauração
wiki_searchPesquisar páginas usando a API de busca do MediaWiki com filtragem avançada
wiki_opensearchPesquisar usando o protocolo OpenSearch para sugestões rápidas e autocompletar
wiki_meta_siteinfoObter informações gerais do site, incluindo informações gerais, namespaces, estatísticas, extensões e mais

Instalação

  1. Clone o repositório e faça checkout do branch main
  2. Instale as dependências usando UV:
uv install
  1. Configure as variáveis de ambiente:
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

Uso

Executando o Servidor

uv run mediawiki-api-mcp

Ou diretamente:

python -m mediawiki_api_mcp.server

Configuração com Claude Desktop

Localização do Arquivo de Configuração

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Configuração do Template

Adicione ao seu arquivo de configuração do Claude Desktop:

{
  "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)"
      }
    }
  }
}

Instruções de Configuração

  1. Substitua /absolute/path/to/mediawiki-api-mcp pelo caminho absoluto real para este diretório do projeto
  2. Atualize MEDIAWIKI_API_URL com o endpoint da API da sua instalação MediaWiki
  3. Defina MEDIAWIKI_API_BOT_USERNAME como seu nome de usuário do bot (normalmente no formato YourUserName@YourBotName)
  4. Defina MEDIAWIKI_API_BOT_PASSWORD como a senha do bot gerada na página Special:BotPasswords da sua wiki
  5. Personalize MEDIAWIKI_API_BOT_USER_AGENT com informações de contato apropriadas (opcional)
Configuração da Senha do Bot

Crie credenciais de bot em, por exemplo: http://mediawiki.test/index.php/Special:BotPasswords

Permissões necessárias:

  • Direitos básicos: Ler páginas
  • Edição de alto volume: Editar páginas existentes, Criar, editar e mover páginas
  • Permissões adicionais conforme necessário para seu caso de uso específico
Notas de Segurança
  • Mantenha suas credenciais de bot seguras e nunca as envie para o controle de versão
  • Use o princípio do menor privilégio ao definir permissões do bot
  • Monitore a atividade do bot através da interface de registro da sua MediaWiki
  • Considere usar restrições de IP para segurança adicional

Desenvolvimento

Pilha de Tecnologias

  • MCP SDK: mcp >= 1.2.0 (usando o padrão FastMCP)
  • Cliente HTTP: httpx >= 0.27.0 para chamadas à API MediaWiki
  • Validação de Dados: pydantic >= 2.0.0 para modelos de configuração
  • Ambiente: python-dotenv >= 1.0.0 para configuração
  • Testes: pytest com pytest-asyncio para testes assíncronos
  • Qualidade de Código: ruff para linting, mypy para verificação de tipos

Arquitetura

  • Servidor FastMCP com decoradores @mcp.tool()
  • Separação de responsabilidades: servidor → manipulador → cliente → API MediaWiki
  • AsyncIO em todo o código para operações não bloqueantes
  • Configuração baseada em ambiente para credenciais MediaWiki

Camada de Cliente (client.py e client_modules/)

  • Gerencia autenticação e requisições da API MediaWiki
  • Gerencia tokens CSRF e estado de sessão
  • Fornece métodos tipados para operações de API

Camada de Ferramentas (tools/)

  • Define esquemas de ferramentas MCP usando JSON Schema
  • Separadas por área funcional (edição, busca)
  • Garante que todas as ferramentas tenham o prefixo wiki_

Camada de Manipuladores (handlers/)

  • Implementa a lógica real das ferramentas
  • Gerencia validação de argumentos e tratamento de erros
  • Retorna respostas MCP formatadas corretamente

Camada de Servidor (server.py e server_tools/)

  • Orquestração principal do servidor MCP
  • Roteia chamadas de ferramentas para os manipuladores apropriados
  • Gerencia configuração e ciclo de vida do cliente

Estrutura do Projeto

O projeto é organizado em componentes modulares para manutenibilidade:

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

Executando Testes

uv run pytest

Execute módulos de teste específicos, por exemplo:

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

Qualidade de Código

# Linting
uv run ruff check

# Type checking
uv run mypy mediawiki_api_mcp

Tratamento de Erros

O servidor implementa tratamento abrangente de erros:

  • Erros de configuração: Variáveis de ambiente ausentes
  • Erros de autenticação: Credenciais ou permissões inválidas
  • Erros de API: Problemas de rede, requisições inválidas
  • Erros de ferramenta: Parâmetros ausentes, argumentos inválidos

Todos os erros são retornados como respostas MCP TextContent para visibilidade do LLM.

Segurança

  • Credenciais de bot são necessárias para operações de edição
  • Todas as requisições de API incluem cabeçalhos User-Agent adequados
  • Tokens CSRF são gerenciados automaticamente
  • Validação de entrada em todos os parâmetros de ferramentas

Licença

Licença MIT