io.github.daedalus/mcp-sparql
MCP server exposing SPARQL query functionalities for LLMs
Open source Open in the app JSON README (API)
About
MCP server exposing SPARQL query functionalities for LLMs
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- daedalus
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.0
- Last push
- 2026-06-17T19:06:00Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 03:02:40
- Updated
- 2026-08-29 03:02:40
- Origin id
io.github.daedalus/mcp-sparql
README
**mcp-sparql** — MCP server exposing SPARQL query functionalities for LLMs.
[](https://pypi.org/project/mcp-sparql/)
[](https://pypi.org/project/mcp-sparql/)
[](https://github.com/astral-sh/ruff)
mcp-name: io.github.daedalus/mcp-sparql
## Install
```bash
pip install mcp-sparql
```
## Usage
### As an MCP Server
Add to your MCP configuration (e.g., `~/.config/claude/mcp.json`):
```json
{
"mcpServers": {
"mcp-sparql": {
"command": "mcp-sparql"
}
}
}
```
### Available Tools
| Tool | Description |
|------|-------------|
| `sparql_query` | Execute SPARQL SELECT queries (table or JSON output) |
| `sparql_ask` | Execute SPARQL ASK queries (boolean result) |
| `sparql_construct` | Execute SPARQL CONSTRUCT queries (Turtle or JSON-LD) |
| `sparql_describe` | Execute SPARQL DESCRIBE queries (Turtle or JSON-LD) |
| `sparql_validate` | Validate SPARQL query syntax without executing |
| `sparql_list_graphs` | List named graphs on a SPARQL endpoint |
| `sparql_get_prefixes` | Get common prefixes for a SPARQL endpoint |
### Examples
**Query Wikidata:**
```
sparql_query:
endpoint: "https://query.wikidata.org/sparql"
query: "SELECT ?item ?itemLabel WHERE { ?item wdt:P31 wd:Q5 . ?item rdfs:label ?itemLabel . FILTER(LANG(?itemLabel) = 'en') } LIMIT 5"
```
**Check if an entity exists:**
```
sparql_ask:
endpoint: "https://query.wikidata.org/sparql"
query: "ASK { wd:Q42 wdt:P31 wd:Q5 }"
```
**Validate a query:**
```
sparql_validate:
query: "SELECT ?s WHERE { ?s ?p ?o }"
```
**List named graphs:**
```
sparql_list_graphs:
endpoint: "https://query.wikidata.org/sparql"
```
**Get common prefixes:**
```
sparql_get_prefixes:
endpoint: "https://query.wikidata.org/sparql"
```
### Resources
| Resource | URI | Description |
|----------|-----|-------------|
| Common Prefixes | `sparql://common-prefixes` | Standard SPARQL namespace prefixes |
## API
### `sparql_query`
Execute a SPARQL SELECT query.
**Parameters:**
- `endpoint` (str): SPARQL endpoint URL
- `query` (str): SPARQL SELECT query
- `timeout` (int, default=30): Query timeout in seconds
- `output_format` (str, default="table"): "table" for Markdown, "json" for JSON
- `headers` (dict, optional): HTTP headers for authentication
- `max_rows` (int, default=1000): Maximum result rows
### `sparql_ask`
Execute a SPARQL ASK query. Returns "true" or "false".
### `sparql_construct`
Execute a SPARQL CONSTRUCT query. Returns RDF triples.
**Additional parameters:**
- `output_format` (str, default="turtle"): "turtle" or "json"
### `sparql_describe`
Execute a SPARQL DESCRIBE query. Returns RDF description.
### `sparql_validate`
Validate SPARQL query syntax without executing.
### `sparql_list_graphs`
List available named graphs on a SPARQL endpoint.
### `sparql_get_prefixes`
Get commonly used prefixes for a SPARQL endpoint.
## Development
```bash
git clone https://github.com/daedalus/mcp-sparql.git
cd mcp-sparql
pip install -e ".[test]"
# run tests
pytest
# format
ruff format src/ tests/
# lint + type check
prospector --with-tool ruff --with-tool mypy --with-tool pylint src/
```