Skip to main content
Glama

get_entity

Retrieve detailed information about Wikidata entities using entity IDs, with options to specify language, properties, and output format.

Instructions

Get detailed information about a Wikidata entity

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
entity_idYesWikidata entity ID (Q123, P456)
languageNoLanguage code (default: en)en
propertiesNoSpecific properties to include
simplifiedNoReturn simplified format (default: false)

Implementation Reference

  • Main handler function that executes the Wikidata API request to retrieve entity details using wbgetentities action, handles optional properties and simplification.
    async def get_entity( self, entity_id: str, language: str = "en", properties: Optional[List[str]] = None, simplified: bool = False ) -> Dict[str, Any]: params = { "action": "wbgetentities", "ids": entity_id, "languages": language, "format": "json", } if properties: params["props"] = "|".join(properties) data = await self._make_request(self.config.wikibase_api_url, params) if "entities" not in data or entity_id not in data["entities"]: raise ValueError(f"Entity {entity_id} not found") entity_data = data["entities"][entity_id] if simplified: return self._simplify_entity(entity_data, language) return {"entity": entity_data}
  • Helper function to simplify the entity data structure for easier consumption, extracting labels, descriptions, and property values.
    def _simplify_entity(self, entity_data: Dict[str, Any], language: str) -> Dict[str, Any]: entity = { "id": entity_data.get("id"), "labels": {}, "descriptions": {}, "properties": {} } if "labels" in entity_data: entity["labels"] = { lang: label["value"] for lang, label in entity_data["labels"].items() } if "descriptions" in entity_data: entity["descriptions"] = { lang: desc["value"] for lang, desc in entity_data["descriptions"].items() } if "claims" in entity_data: for prop_id, claims in entity_data["claims"].items(): prop_values = [] for claim in claims: if "mainsnak" in claim and "datavalue" in claim["mainsnak"]: value = claim["mainsnak"]["datavalue"]["value"] if isinstance(value, dict) and "id" in value: prop_values.append({ "value": value["id"], "label": value.get("label", value["id"]) }) else: prop_values.append({"value": str(value)}) if prop_values: entity["properties"][prop_id] = prop_values return {"entity": entity}
  • Registration of the 'get_entity' tool in the MCP tools list, including description and input schema.
    Tool( name="get_entity", description="Get detailed information about a Wikidata entity", inputSchema={ "type": "object", "properties": { "entity_id": { "type": "string", "description": "Wikidata entity ID (Q123, P456)" }, "language": { "type": "string", "description": "Language code (default: en)", "default": "en" }, "properties": { "type": "array", "items": {"type": "string"}, "description": "Specific properties to include" }, "simplified": { "type": "boolean", "description": "Return simplified format (default: false)", "default": False } }, "required": ["entity_id"] } ),
  • Input schema definition for the 'get_entity' tool, specifying parameters like entity_id (required), language, properties, and simplified.
    inputSchema={ "type": "object", "properties": { "entity_id": { "type": "string", "description": "Wikidata entity ID (Q123, P456)" }, "language": { "type": "string", "description": "Language code (default: en)", "default": "en" }, "properties": { "type": "array", "items": {"type": "string"}, "description": "Specific properties to include" }, "simplified": { "type": "boolean", "description": "Return simplified format (default: false)", "default": False } }, "required": ["entity_id"] }
  • Dispatcher in call_tool method that invokes the client.get_entity implementation based on tool name.
    elif name == "get_entity": result = await self.client.get_entity(**arguments)

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/joelgombin/mcp-wikidata'

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