Skip to main content
Glama
MCP Wikidata Server

MCP Wikidata Server

by joelgombin

MCP Wikidata Server

Un serveur Model Context Protocol (MCP) qui fournit un accès aux données Wikidata pour les Large Language Models.

🔧 Fonctionnalités

  • 5 outils MCP pour interagir avec Wikidata :

    • search_entities : Recherche textuelle d'entités

    • get_entity : Récupération détaillée d'entités par ID

    • sparql_query : Exécution de requêtes SPARQL personnalisées

    • get_relations : Exploration des relations d'entités

    • find_by_property : Recherche par propriété-valeur

  • APIs supportées :

    • Wikibase API (recherche et récupération d'entités)

    • SPARQL Query Service (requêtes complexes)

    • Support multilingue et cache intelligent

Related MCP server: Wikidata MCP Server

📋 Prérequis

  • Python 3.10+

  • uv (gestionnaire de paquets Python moderne)

📦 Installation

1. Cloner le projet

git clone https://github.com/joelgombin/mcp-wikidata.git
cd mcp-wikidata

2. Installer les dépendances

uv sync

3. Tester l'installation

uv run python test_connection.py

⚙️ Configuration avec Claude Desktop

Configuration recommandée (portable)

Ajoutez cette configuration à votre fichier Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json sur macOS) :

{
  "mcpServers": {
    "mcp-wikidata": {
      "command": "/path/to/your/mcp-wikidata/run_mcp_wikidata.sh",
      "args": []
    }
  }
}

Important : Remplacez /path/to/your/mcp-wikidata/ par le chemin absolu vers votre dossier d'installation.

Alternative avec uv direct

Si vous préférez une configuration sans script wrapper :

{
  "mcpServers": {
    "mcp-wikidata": {
      "command": "uv",
      "args": ["run", "mcp-wikidata"],
      "cwd": "/path/to/your/mcp-wikidata",
      "env": {
        "PATH": "/usr/local/bin:/usr/bin:/bin:~/.local/bin"
      }
    }
  }
}

🧪 Tests et vérification

Test avec MCP Inspector

npx @modelcontextprotocol/inspector uv run mcp-wikidata

Tests manuels des APIs

uv run python test_manual.py

Test client MCP complet

uv run python test_mcp_client.py

🔧 Utilisation des outils

search_entities

Recherche d'entités par texte :

{
  "query": "Einstein",
  "language": "en",
  "limit": 5,
  "type": "item"
}

get_entity

Récupération d'entité par ID :

{
  "entity_id": "Q937",
  "language": "en", 
  "simplified": true
}

sparql_query

Requête SPARQL personnalisée :

{
  "query": "SELECT ?item ?itemLabel WHERE { ?item wdt:P31 wd:Q5 . SERVICE wikibase:label { bd:serviceParam wikibase:language \"en\" . } } LIMIT 10",
  "format": "json"
}

get_relations

Relations d'une entité :

{
  "entity_id": "Q937",
  "relation_type": "outgoing",
  "limit": 20
}

find_by_property

Recherche par propriété :

{
  "property": "P106",
  "value": "physicist",
  "limit": 10
}

⚙️ Configuration avancée

Variables d'environnement

Créez un fichier .env basé sur .env.example :

# User-Agent pour les requêtes API
WIKIDATA_USER_AGENT=MCP-Wikidata/0.1.0

# Limitation du taux de requêtes (par minute)
WIKIDATA_RATE_LIMIT=60

# Timeout des requêtes en secondes
WIKIDATA_TIMEOUT=30

# TTL du cache en secondes
WIKIDATA_CACHE_TTL=3600

# Nombre maximum de résultats par requête
WIKIDATA_MAX_RESULTS=50

# Langue par défaut
WIKIDATA_DEFAULT_LANGUAGE=en

Logs de debug

Pour diagnostiquer des problèmes :

uv run mcp-wikidata --log-level DEBUG

🔧 Dépannage

Erreur "server disconnected" dans Claude Desktop

  1. Vérifiez l'installation d'uv :

    which uv
    # Doit retourner un chemin comme /Users/username/.local/bin/uv
  2. Testez le script wrapper :

    ./run_mcp_wikidata.sh --help
  3. Vérifiez les permissions :

    chmod +x run_mcp_wikidata.sh
  4. Redémarrez Claude Desktop après modification de la configuration

Erreur "spawned uv ENOENT"

Cette erreur indique que Claude Desktop ne trouve pas la commande uv. Le script wrapper run_mcp_wikidata.sh résout automatiquement ce problème en cherchant uv dans plusieurs emplacements courants.

Logs de diagnostic

Les logs détaillés sont disponibles dans :

  • Console de MCP Inspector

  • Fichiers de log Claude Desktop (selon votre OS)

  • Sortie stderr du serveur MCP

📁 Structure du projet

mcp-wikidata/
  ├ mcp_wikidata/           # Package principal
     ├ __init__.py
     ├ server.py           # Serveur MCP principal
     ├ config.py           # Configuration
     ├ tools.py            # Définitions des outils MCP
     └ wikidata_client.py  # Client API Wikidata
  ├ tests/                  # Tests
  ├ run_mcp_wikidata.sh    # Script wrapper (recommandé)
  ├ test_*.py              # Scripts de test
  ├ pyproject.toml         # Configuration du projet
  ├ .env.example           # Variables d'environnement
  └ README.md

🤝 Contribution

Les contributions sont bienvenues ! N'hésitez pas à :

  • Signaler des bugs

  • Proposer des améliorations

  • Ajouter de nouveaux outils MCP

  • Améliorer la documentation

📄 Licence

MIT License - voir le fichier LICENSE pour plus de détails.

📚 Ressources utiles


Généré avec Claude Code 🚀

Available Tools

5 tools
find_by_propertyC

Find entities by property and value

Inputs: property (required), value (required), language, limit.

get_entityB

Get detailed information about a Wikidata entity

Inputs: entity_id (required), language, properties, simplified.

get_relationsC

Get relations of a Wikidata entity

Inputs: entity_id (required), relation_type, property_filter, limit.

search_entitiesB

Search for entities in Wikidata by text query

Inputs: query (required), language, limit, type.

sparql_queryC

Execute a SPARQL query against Wikidata

Inputs: query (required), format, limit.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: find_by_property targets property-value pairs, get_entity retrieves entity details, get_relations focuses on entity relationships, search_entities handles text-based queries, and sparql_query allows custom SPARQL queries. The descriptions reinforce these distinct roles, making tool selection unambiguous.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., find_by_property, get_entity, get_relations, search_entities, sparql_query), using snake_case uniformly. The verbs (find, get, search, execute) are appropriate to their actions, creating a predictable and readable naming convention throughout the set.

    Tool Count5/5

    With 5 tools, this server is well-scoped for interacting with Wikidata, covering essential operations like entity retrieval, searching, and querying without being overly complex. Each tool earns its place by addressing a core need in the domain, making the count appropriate for the server's purpose.

    Completeness4/5

    The tool surface provides strong coverage for querying and retrieving Wikidata data, including basic CRUD-like operations (e.g., get and search) and advanced querying via SPARQL. A minor gap exists in write operations (e.g., create or update entities), but agents can work around this given Wikidata's read-heavy nature, and the tools support most common workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A server implementation for interacting with Wikidata API using the Model Context Protocol, providing tools for searching identifiers, extracting metadata, and executing SPARQL queries.
      5
      49
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Connects LLMs to Wikidata's structured knowledge base using a hybrid architecture that optimizes for both fast entity searches and complex relational queries. It provides tools for entity and property retrieval, metadata lookups, and direct SPARQL execution to ground AI responses in verified data.
      2
      -