- Serveur MCP Wikimedia Enterprise
Serveur MCP Wikimedia Enterprise
Serveur MCP Wikimedia Enterprise
Ce projet est un serveur MCP (Model Context Protocol) qui permet aux LLMs et assistants d'interagir avec l'API Wikimedia Enterprise et l'API MediaWiki publique pour récupérer du contenu depuis Wikipédia et d'autres projets Wikimedia.
Fonctionnalités
Le serveur expose trois outils principaux :
get_article: Récupère un article complet par son titre via l'API Wikimedia Enterpriselist_projects: Liste tous les projets disponibles dans l'API Wikimedia Enterprisesearch_articles: Recherche des articles contenant un terme spécifique via l'API publique MediaWiki
Prérequis
- Python 3.11 ou supérieur
- Un compte Wikimedia Enterprise (pour les outils
get_articleetlist_projects)
Installation
- Clonez ce dépôt :
git clone https://github.com/votre-utilisateur/wikimedia-mcp.git
cd wikimedia-mcp
- Créez un environnement virtuel et installez les dépendances :
python -m venv .venv
source .venv/bin/activate # Sur Windows: .venv\Scripts\activate
pip install -e .
Configuration des identifiants
Les fonctions get_article et list_projects nécessitent des identifiants Wikimedia Enterprise. Vous avez plusieurs façons de configurer vos identifiants selon votre cas d'utilisation:
Option 1: Pour une utilisation locale directe
Créez un fichier .env à la racine du projet:
WIKIMEDIA_USERNAME=votre_nom_utilisateur
WIKIMEDIA_PASSWORD=votre_mot_de_passe
Option 2: Pour une utilisation avec VS Code
Si vous utilisez ce serveur MCP via VS Code, vous devez configurer les variables d'environnement de l'une des façons suivantes:
-
Fichier
.envdans votre espace de travail VS Code:Créez un fichier
.envdans le répertoire racine de votre espace de travail VS Code:WIKIMEDIA_USERNAME=votre_nom_utilisateur WIKIMEDIA_PASSWORD=votre_mot_de_passe -
Configuration dans
settings.jsonde VS Code:Ajoutez les variables d'environnement directement dans la configuration du serveur MCP:
"mcp": { "servers": { "wikimedia-mcp": { "type": "stdio", "command": "uvx", "args": [ "run", "--from", "https://github.com/votre-utilisateur/wikimedia-mcp" ], "env": { "WIKIMEDIA_USERNAME": "votre_nom_utilisateur", "WIKIMEDIA_PASSWORD": "votre_mot_de_passe" } } } } -
Variables d'environnement système:
Définissez les variables d'environnement dans votre système d'exploitation:
-
macOS/Linux (dans
.bashrc,.zshrcou équivalent):export WIKIMEDIA_USERNAME=votre_nom_utilisateur export WIKIMEDIA_PASSWORD=votre_mot_de_passe -
Windows (via Variables d'environnement du système):
WIKIMEDIA_USERNAME=votre_nom_utilisateur WIKIMEDIA_PASSWORD=votre_mot_de_passe
-
Sécurité des identifiants
⚠️ Important: Ne partagez jamais vos identifiants Wikimedia Enterprise. Si vous utilisez Git, assurez-vous que le fichier .env est dans votre .gitignore pour éviter de pousser accidentellement vos identifiants vers un dépôt public.
Utilisation
Démarrer le serveur MCP
python wikimedia_mcp_server.py
Le serveur démarrera et sera disponible pour les clients MCP.
Intégration avec un client MCP
Pour utiliser ce serveur avec un client MCP, configurez le client pour se connecter au serveur MCP Wikimedia. Par exemple, avec le client Python MCP :
from mcp.clients import SimpleMcpClient
client = SimpleMcpClient()
client.add_server("wikimedia-mcp")
# Rechercher des articles
results = client.search_articles(terme="intelligence artificielle", langue="fr", limite=3)
print(results)
# Récupérer un article complet (nécessite des identifiants Wikimedia Enterprise)
article = client.get_article(titre="Paris", langue="fr")
print(article)
API
get_article(titre: str, langue: str = "fr") -> Dict[str, Any]
Récupère un article Wikimedia par son titre.
- titre: Le titre de l'article à rechercher
- langue: Le code de langue (par défaut: "fr")
- Retourne: Le contenu de l'article au format JSON
list_projects() -> Dict[str, Any]
Liste tous les projets disponibles dans l'API Wikimedia Enterprise.
- Retourne: La liste des projets au format JSON
search_articles(terme: str, langue: str = "fr", limite: int = 5) -> List[Dict[str, str]]
Recherche des articles contenant un terme spécifique.
- terme: Le terme à rechercher
- langue: Le code de langue (par défaut: "fr")
- limite: Nombre maximum de résultats (par défaut: 5)
- Retourne: Les résultats de la recherche sous forme de liste de dictionnaires
Licence
[Indiquer votre licence ici]
Contact
[Vos informations de contact]