Back to the catalog

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.

[![PyPI](https://img.shields.io/pypi/v/mcp-sparql.svg)](https://pypi.org/project/mcp-sparql/)
[![Python](https://img.shields.io/pypi/pyversions/mcp-sparql.svg)](https://pypi.org/project/mcp-sparql/)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/master/assets/badge/v2.json)](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/
```

More