Skip to main content
Glama

Wikidata MCP Server

by zzaebok
README.md4.23 kB
## Wikidata MCP Server [![smithery badge](https://smithery.ai/badge/@zzaebok/mcp-wikidata)](https://smithery.ai/server/@zzaebok/mcp-wikidata) A server implementation for Wikidata API using the Model Context Protocol (MCP). This project provides tools to interact with Wikidata, such as **searching identifiers** (entity and property), **extracting metadata** (label and description) and **executing sparql query**. --- ### Installation #### Installing via Smithery To install Wikidata MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@zzaebok/mcp-wikidata): ```bash npx -y @smithery/cli install @zzaebok/mcp-wikidata --client claude ``` #### Installing Manually Install `uv` if it is not installed yet. ```bash $ curl -LsSf https://astral.sh/uv/install.sh | sh ``` Then, install dependencies. ```bash $ git clone https://github.com/zzaebok/mcp-wikidata.git $ cd mcp-wikidata $ uv sync # if you want to run client example together $ uv sync --extra example ``` --- ### Run Run the server with: ```bash $ uv run src/server.py ``` If you want to test it with a simple client code (with `langchain-mcp-adapters`), run the client with: ```bash # in another shell $ uv run src/client.py ``` The LLM extracts valid entity and property identifiers, executes a sparql query, and finally recommend a movie directed by Bong Joon-ho. <details> <summary><i>See the execution output</i></summary> ```python { "messages": [ HumanMessage( content="Can you recommend me a movie directed by Bong Joonho?", ), AIMessage( tool_calls=[ { "name": "search_entity", "args": {"query": "Bong Joon-ho"}, } ], ), ToolMessage( content="Q495980", name="search_entity", ), AIMessage( tool_calls=[ { "name": "get_properties", "args": {"entity_id": "Q495980"}, } ], ), ToolMessage( content='["P345", "P244", "P214", "P227", ...]', name="get_properties", ), AIMessage( tool_calls=[ { "name": "search_property", "args": {"query": "director"}, } ], ), ToolMessage( content="P57", name="search_property", ), AIMessage( tool_calls=[ { "name": "execute_sparql", "args": { "sparql_query": 'SELECT ?film ?filmLabel WHERE {\n ?film wdt:P57 wd:Q495980.\n SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }\n} LIMIT 1' }, } ], ), ToolMessage( content='[{"film": {"type": "uri", "value": "http://www.wikidata.org/entity/Q483761"}, "filmLabel": {"xml:lang": "en", "type": "literal", "value": "Mother"}}]', name="execute_sparql", ), AIMessage( content='I recommend the movie "Mother," which was directed by Bong Joon-ho.', ), ] } ``` </details> --- ### Wikidata MCP Tools The following tools are implemented in the server: | Tool | Description | | ---------------------------------------------------- | -------------------------------------------------------------------------- | | `search_entity(query: str)` | Search for a Wikidata entity ID by its query. | | `search_property(query: str)` | Search for a Wikidata property ID by its query. | | `get_properties(entity_id: str)` | Get the properties associated with a given Wikidata entity ID. | | `execute_sparql(sparql_query: str)` | Execute a SPARQL query on Wikidata. | | `get_metadata(entity_id: str, language: str = "en")` | Retrieve the English label and description for a given Wikidata entity ID. | --- #### License MIT License

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