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
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Wikidata entity ID (Q123, P456) | |
| language | No | Language code (default: en) | en |
| properties | No | Specific properties to include | |
| simplified | No | Return simplified format (default: false) |
Implementation Reference
- mcp_wikidata/wikidata_client.py:77-104 (handler)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}
- mcp_wikidata/tools.py:48-76 (registration)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"] } ),
- mcp_wikidata/tools.py:51-75 (schema)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"] }
- mcp_wikidata/tools.py:169-170 (helper)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)