A Model Context Protocol (MCP) server providing access to the Wikidata knowledge graph via SPARQL queries. This server runs on Cloudflare Workers and supports both Server-Sent Events (SSE) and standard HTTP transport for remote MCP deployments.
- Single Unified Tool: One powerful
sparql_query
tool that handles both introspection and data queries - Comprehensive SPARQL Support: Execute any SPARQL query against Wikidata's knowledge graph
- Multiple Output Formats: JSON, XML, Turtle, and CSV result formats
- Timeout Protection: Configurable query timeouts (1-60 seconds) to prevent runaway queries
- Remote Deployment: Deployed on Cloudflare Workers for global accessibility
- Dual Transport Support: Both SSE and HTTP endpoints for maximum compatibility
This will deploy your MCP server to a URL like: wikidata-sparql-mcp-server.<your-account>.workers.dev/sse
Alternatively, clone and deploy manually:
git clone https://github.com/QuentinCody/wikidata-sparql-mcp-server.git
cd wikidata-sparql-mcp-server
npm install
npm run deploy
npm install
npm start # Runs on http://localhost:8787
Execute SPARQL queries against the Wikidata knowledge graph with support for both introspection and data retrieval.
Parameters:
query
(string, required): The SPARQL query to executeformat
(enum, optional): Output format - "json" (default), "xml", "turtle", or "csv"timeout
(number, optional): Query timeout in seconds (1-60, default: 30)
Example Queries:
# Describe what a human is in Wikidata
DESCRIBE wd:Q5
# Get all properties available for humans
SELECT DISTINCT ?property ?propertyLabel WHERE {
wd:Q5 ?property ?value .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
# Get 10 famous scientists
SELECT ?scientist ?scientistLabel ?birthDate WHERE {
?scientist wdt:P31 wd:Q5 ; # instance of human
wdt:P106 wd:Q901 ; # occupation: scientist
wdt:P569 ?birthDate . # birth date
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
ORDER BY ?birthDate
LIMIT 10
# Find all programming languages and their creators
SELECT ?language ?languageLabel ?creator ?creatorLabel WHERE {
?language wdt:P31 wd:Q9143 ; # instance of programming language
wdt:P178 ?creator . # developer
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 20
# Check if humans are living beings
ASK { wd:Q5 wdt:P279 wd:Q35120 }
# Check if a specific person exists
ASK { wd:Q937 ?p ?o } # Albert Einstein
Add this configuration to Claude Desktop's MCP settings:
{
"mcpServers": {
"wikidata-sparql": {
"command": "npx",
"args": [
"mcp-remote",
"https://wikidata-sparql-mcp-server.<your-account>.workers.dev/sse"
]
}
}
}
- Go to https://playground.ai.cloudflare.com/
- Enter your deployed server URL:
wikidata-sparql-mcp-server.<your-account>.workers.dev/sse
- Start querying the Wikidata knowledge graph!
For any MCP client supporting HTTP/SSE transport:
- SSE Endpoint:
https://your-domain.workers.dev/sse
- HTTP Endpoint:
https://your-domain.workers.dev/mcp
# Find Nobel Prize winners in Physics
SELECT ?winner ?winnerLabel ?year WHERE {
?award wdt:P31 wd:Q7191 ; # Nobel Prize in Physics
wdt:P585 ?year ; # point in time
wdt:P1346 ?winner . # winner
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
ORDER BY DESC(?year)
LIMIT 10
# Countries and their capitals
SELECT ?country ?countryLabel ?capital ?capitalLabel WHERE {
?country wdt:P31 wd:Q3624078 ; # sovereign state
wdt:P36 ?capital . # capital
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 50
# Software companies founded after 2000
SELECT ?company ?companyLabel ?founded WHERE {
?company wdt:P31 wd:Q936518 ; # software company
wdt:P571 ?founded . # inception
FILTER(YEAR(?founded) > 2000)
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
ORDER BY DESC(?founded)
LIMIT 20
The server provides comprehensive error handling:
- Timeout Protection: Queries exceeding the timeout limit are automatically aborted
- SPARQL Validation: Invalid queries return descriptive error messages
- Network Resilience: Handles Wikidata endpoint unavailability gracefully
- Format Validation: Ensures output format compatibility
- Base: Cloudflare Workers with Durable Objects
- MCP Framework: Model Context Protocol SDK with Cloudflare Agents
- Transport: SSE (Server-Sent Events) and HTTP support
- Query Engine: Direct integration with Wikidata's SPARQL endpoint
- Fork the repository
- Create a feature branch
- Make your changes
- Test with various SPARQL queries
- Submit a pull request
MIT License - see LICENSE file for details