Server data from the Official MCP Registry
Wikidata MCP — wraps Wikidata API (wikidata.org/w/api.php)
About
Wikidata MCP — wraps Wikidata API (wikidata.org/w/api.php)
Remote endpoints: streamable-http: https://gateway.pipeworx.io/wikidata/mcp
Security Report
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (3065/3065 approved).
49 tools verified · Open access · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: PIPEWORX_API_KEY
How to Install & Connect
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
Documentation
View on GitHubFrom the project's GitHub README.
Wikidata — Structured Knowledge Graph
Wikidata is the free, structured-data sister of Wikipedia. ~110 million items (people, places, works, concepts) with machine-readable properties and relationships. The closest thing the open web has to a universal knowledge graph. Free, no auth, supports SPARQL queries.
Part of Pipeworx — an MCP gateway connecting AI agents to 1857+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
Why this matters for AI agents
For entity disambiguation, structured facts about anything notable, or graph traversal ("what books did this author write that won prizes?"), Wikidata is the canonical open source. Pair with Wikipedia (prose) and OpenAlex (academic specifics) for full open-knowledge coverage.
Common flows:
- Entity lookup. "Who is Paul McCartney?" → Q2599 with structured facts (birth date, nationality, occupation, band memberships).
- Property query. "What's the population of France?" → Q142, property P1082 (population), with references and timestamps.
- Disambiguation. "Paris" → Q90 (capital of France), Q830149 (Paris, Texas), Q3296 (Paris, Greek mythology). Wikidata's structured types resolve which "Paris" the agent is asking about.
- Graph traversal. SPARQL: "All Nobel laureates in Physics born in Italy" → joinable across structured properties.
Tools
| Tool | What it returns |
|---|---|
search_entities | Q-ids matching a label or alias, with labels, descriptions and aliases. Start here when you have a name and need an id. |
get_entity | Full entity by Q-id — labels, descriptions, aliases, raw P-coded claims, sitelinks, plus lastrevid / modified. Takes language. |
get_entities | The same, for up to 50 Q-ids in ONE call. Returns a per-QID map plus a not_found list, so one bad id doesn't fail the batch — see "One bad id used to zero the batch" below. Takes language. |
get_wikidata_facts | The same statements with property names and values resolved to human-readable labels, plus lastrevid / modified. Prefer this for "what is X's ". Takes language. |
wikidata_recent_changes | Items created or edited most recently, newest-first, from list=recentchanges — Q-id, revision ids, UTC timestamp, user, comment, byte size, plus a cursor for paging further back. |
Reading labels in another language
search_entities, get_entity, get_entities and get_wikidata_facts all take
language. It is passed straight to the API's own languages param, so a single code
("ka") or a comma/pipe-joined list ("ka,ru,en") both work, and a list returns every
requested language's label, description and aliases side by side in one upstream call —
the shape you need to decide whether two records in different languages are the same entity.
Omit it and you get English, exactly as before.
Two fields, and the difference matters:
labels/descriptions/aliases_by_languageare keyed by language and contain only what Wikidata actually has. Ask for a language the entity has no label in and the key is simply absent — that absence is the honest answer, and it is how you detect a translation gap.label/descriptionare the single best value, and they fall back to English when the requested language is missing. Soget_entity({id:"Q162887", language:"zu"})returnslabel: "Enguri HPP"with an emptylabelsmap: there is no Zulu label, and you can tell.
get_wikidata_facts localizes both halves — property names and their values — so
{id:"Q162887", language:"ka"} comes back with Georgian keys (ქვეყანა → საქართველო),
not English keys with Georgian values.
mul is a real language code here, and you will see it. Wikidata moved
language-neutral labels — personal names, most Latin binomials, many place names — to
the mul ("multiple languages") code, and wbgetentities then returns an empty en
label map for those items. Q42 (Douglas Adams) is one: it has an English description and
no English label. The fallback chain is therefore requested → en → mul, and when
the name came from mul you see it under a mul key in the labels map:
{"id":"Q42","label":"Douglas Adams","labels":{"mul":"Douglas Adams"},
"description":"British science fiction writer and humorist (1952–2001)"}
That key is the provenance: the name is not attributed to a language the entity does not
carry. Before this the pack returned label: null for Q42 — a clean 200 with a null
where the answer was.
One bad id used to zero the batch
wbgetentities is inconsistent about unknown ids, and the two cases look nothing alike:
- An unknown but well-formed id (
Q999999999) comes back markedmissing, and every other id in the request still resolves. - An id outside the item-id range or plainly malformed (
Q99999999999,NOTAQID) makes the API refuse the entire request — HTTP 200, noentitiesat all, a top-level{"error":{"code":"no-such-entity","id":"Q99999999999"}}.
Read naively the second case is an empty map, so one typo in a 50-id batch reported all
50 as not_found: a clean 200 saying nothing resolved. The error names the offending id,
so get_entities drops it and retries (bounded, one id per pass). A batch of
["Q162887","Q99999999999","Q90","NOTAQID","Q1326165"] now resolves the three real
entities and returns the two bad ids in not_found.
Pinning statements to an edit
Wikidata is live and continuously edited, so "the current statements" is only meaningful
relative to a revision. Both entity tools return lastrevid, modified and a
revision_url, so an answer built from them can be pinned to the exact edit it was read
at, and re-checked later for drift.
wikidata_recent_changes answers the other half of that: which items changed, and when.
Namespace 0 is items (Q-ids), 120 is properties (P-ids), 146 is lexemes. type is
new (freshly created), edit (edits to existing items) or all. Use since for a time
window and cursor to page further back.
Auth
None. Wikidata is fully open. Wikidata's SPARQL endpoint has fair-use rate limits but generous for most agent traffic.
Identifier scheme
| Prefix | Type |
|---|---|
| Q | Item (an entity — person, place, thing) |
| P | Property (a relationship type — "spouse," "instance of," "located in") |
| L | Lexeme (a word/sense, for linguistic data) |
Every entity has a stable Q-number that serves as a permanent identifier across Wikipedia language editions. Embed Q-numbers in agent output as canonical citations.
Common pitfalls
- Quality varies wildly by entity. A famous person (Einstein, Q937) has hundreds of well-sourced properties. A small-town politician may have 5 properties, half from auto-imported sources. Always check the
referencesfield on properties you're acting on. - Multiple values for "current" properties. "President of company X" may have 8 historical values plus a current one. Wikidata uses qualifier properties (start time, end time, "preferred rank") to indicate which is current — but agents often grab the first value naively.
- Property duplication. Multiple properties can express related concepts ("country" P17, "country of origin" P495, "country of citizenship" P27). Picking the right one matters for accuracy.
- Vandalism risk. Wikidata is editable like Wikipedia. High-profile entities are watched, but obscure ones can carry vandalism for days. Don't quote a single Wikidata fact as ground truth without a
referenceschain to an authoritative source. - Translation gaps. Labels exist in many languages but not always in the one you asked for.
labelfalls back to English, then to the language-neutralmullabel, when that happens, so a non-English request never comes back empty — but it also means a returnedlabelis not proof the entity HAS a label in that language. Read thelabelsmap for that: a missing key is a real gap, and amulkey means the name is language-neutral rather than translated. See "Reading labels in another language" above. - SPARQL timeouts. Complex graph queries can hit the SPARQL endpoint's 60-second timeout. Decompose into smaller queries or use property-specific lookups.
- Identifiers, not facts. Wikidata is best for "what's the canonical ID of this entity" and "what does it link to." For deep biographical or historical narrative, follow the linked Wikipedia article.
Data sources
- MediaWiki Action API —
https://www.wikidata.org/w/api.phpaction=wbsearchentities(search),action=wbgetentities(entity read,props=info|labels|descriptions|aliases|claims|sitelinks,languages=for the language filter, up to 50 pipe-joined ids per call)action=query&list=recentchanges(recent changes feed)
- API docs: https://www.wikidata.org/w/api.php and https://www.mediawiki.org/wiki/API:Recentchanges
- Entity pages:
https://www.wikidata.org/wiki/<QID>; a specific revision:https://www.wikidata.org/w/index.php?oldid=<revid>
All endpoints are keyless. Wikidata asks callers to send a descriptive User-Agent; this
pack sends Pipeworx-Wikidata-MCP/1.0.
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": {
"wikidata": {
"url": "https://gateway.pipeworx.io/wikidata/mcp"
}
}
}
What this endpoint actually serves
tools/list at https://gateway.pipeworx.io/wikidata/mcp returns the tools in the table
above plus the shared Pipeworx meta-tools — ask_pipeworx,
discover_tools, search_within, remember/recall and the rest of the
gateway-wide set. So the tool count you see is larger than this table: a
single-pack endpoint currently lists roughly 30 shared tools alongside the
pack's own. The connection's initialize response states its exact scope, and
is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a
scoped connection answer a question this pack does not cover — via
ask_pipeworx, which routes across the whole catalog — without you adding a
second MCP server. There is currently no way to mount a pack endpoint without
them; if the extra schemas cost you more context than the routing is worth,
connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
Both URLs reach the same gateway and the same 1857+ data sources. The
only difference is which pack's tools are listed directly; ask_pipeworx
reaches all of them from either one.
No MCP client? Call it over HTTP
curl -X POST https://gateway.pipeworx.io/v1/tools/wikidata_search_entities \
-H 'Content-Type: application/json' \
-d '{"query":"Albert Einstein"}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/wikidata_search_entities. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
Run it from npm
@pipeworx/mcp-wikidata is a local stdio bridge to the Pipeworx gateway: your MCP client
starts it with npx, and it forwards every call to the same
https://gateway.pipeworx.io/wikidata/mcp endpoint shown above. It needs network access;
there is no offline mode.
{
"mcpServers": {
"wikidata": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-wikidata"]
}
}
}
Without a key it calls anonymously, capped at 50 calls a day. A free account
raises that to 200 a day: get a key at https://pipeworx.io/signup and add
"env": { "PIPEWORX_API_KEY": "<your key>" } to the server entry.
The key is sent as a Bearer token, the same way a hosted connection sends it,
so calls are metered and billed exactly as they are there.
It lists only this pack's tools by default. Set PIPEWORX_META_TOOLS=1 to
also list ask_pipeworx and the other gateway-wide tools.
Behind an HTTPS proxy: Node's built-in fetch does not read HTTPS_PROXY by
default. Newer Node releases honour it when NODE_USE_ENV_PROXY=1 is set; check
your Node version's documentation.
Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
ask_pipeworx({ question: "your question about Wikidata data" })
The gateway picks the right tool and fills the arguments automatically.
More
License
MIT
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto · Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
