Wikidata MCP Server
## Wikidata MCP Server
[](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
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no overlap: execute_sparql runs queries, get_metadata retrieves labels/descriptions, get_properties lists properties, search_entity finds entities, and search_property finds properties. The descriptions reinforce these distinct roles, making misselection unlikely.
All tools follow a consistent verb_noun pattern (e.g., execute_sparql, get_metadata, search_entity) with clear, descriptive names. There are no deviations in style or convention, making the set predictable and easy to understand.
With 5 tools, this server is well-scoped for interacting with Wikidata. Each tool serves a specific, necessary function (querying, metadata retrieval, property listing, and searching for entities/properties), and none feel redundant or out of place for the domain.
The toolset covers core Wikidata operations well, including querying, metadata access, and searching. A minor gap is the lack of update/create/delete tools, but this is reasonable for a read-focused Wikidata interface, and agents can still perform comprehensive queries and retrievals without dead ends.