Skip to main content
Glama
zzaebok

Wikidata MCP Server

by zzaebok

search_property

Find Wikidata property IDs by entering descriptive queries to identify specific data attributes in the knowledge base.

Instructions

Search for a Wikidata property ID by its query.

Args:
    query (str): The query to search for. The query should be unambiguous enough to uniquely identify the property.

Returns:
    str: The Wikidata property ID corresponding to the given query."

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes

Implementation Reference

  • src/server.py:52-52 (registration)
    Registers the 'search_property' tool using the @server.tool() decorator.
    @server.tool()
  • The handler function for the 'search_property' tool. It calls the shared search_wikidata helper with is_entity=False to find property IDs.
    async def search_property(query: str) -> str:
        """
        Search for a Wikidata property ID by its query.
    
        Args:
            query (str): The query to search for. The query should be unambiguous enough to uniquely identify the property.
    
        Returns:
            str: The Wikidata property ID corresponding to the given query."
        """
        return await search_wikidata(query, is_entity=False)
  • Helper function that performs the Wikidata search API call, used by both search_entity and search_property tools.
    async def search_wikidata(query: str, is_entity: bool = True) -> str:
        """
        Search for a Wikidata item or property ID by its query.
        """
        params = {
            "action": "query",
            "list": "search",
            "srsearch": query,
            "srnamespace": 0 if is_entity else 120,
            "srlimit": 1,  # TODO: add a parameter to limit the number of results?
            "srqiprofile": "classic_noboostlinks" if is_entity else "classic",
            "srwhat": "text",
            "format": "json",
        }
        async with httpx.AsyncClient() as client:
            response = await client.get(WIKIDATA_URL, headers=HEADER, params=params)
        response.raise_for_status()
        try:
            title = response.json()["query"]["search"][0]["title"]
            title = title.split(":")[-1]
            return title
        except KeyError:
            return "No results found. Consider changing the search term."

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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

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