MediaWiki
Interaja com instalações do MediaWiki através da API do MediaWiki como um usuário bot.
GitHub
3
Experimente este MCPPatrocinadoDocumentaçã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_:
| Ferramenta | Descrição |
|---|---|
wiki_page_edit | Editar ou criar páginas MediaWiki com opções abrangentes de edição |
wiki_page_get | Recuperar informações e conteúdo de páginas |
wiki_page_parse | Analisar 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_compare | Comparar duas páginas, revisões ou conteúdo de texto para mostrar diferenças entre eles |
wiki_page_move | Mover páginas com suporte para páginas de discussão, subpáginas e redirecionamentos |
wiki_page_delete | Excluir páginas com suporte para páginas de discussão, gerenciamento de lista de vigilância e registro |
wiki_page_undelete | Restaurar páginas MediaWiki excluídas com opções abrangentes de restauração |
wiki_search | Pesquisar páginas usando a API de busca do MediaWiki com filtragem avançada |
wiki_opensearch | Pesquisar usando o protocolo OpenSearch para sugestões rápidas e autocompletar |
wiki_meta_siteinfo | Obter informações gerais do site, incluindo informações gerais, namespaces, estatísticas, extensões e mais |
Instalação
- Clone o repositório e faça checkout do branch
main - Instale as dependências usando UV:
uv install
- 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
- Substitua
/absolute/path/to/mediawiki-api-mcppelo caminho absoluto real para este diretório do projeto - Atualize
MEDIAWIKI_API_URLcom o endpoint da API da sua instalação MediaWiki - Defina
MEDIAWIKI_API_BOT_USERNAMEcomo seu nome de usuário do bot (normalmente no formatoYourUserName@YourBotName) - Defina
MEDIAWIKI_API_BOT_PASSWORDcomo a senha do bot gerada na páginaSpecial:BotPasswordsda sua wiki - Personalize
MEDIAWIKI_API_BOT_USER_AGENTcom 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