mcp-sparql について
mcp-sparqlは、RDFデータを扱うLLMワークフロー向けのSPARQLエンドポイント用MCPサーバーです。複数のクエリ形式、構文検証、エンドポイントのグラフやプレフィックスの確認に対応します。
主な機能
- 01SELECTクエリの表形式またはJSON出力
- 02ASK、CONSTRUCT、DESCRIBEクエリの実行
- 03実行せずにクエリ構文を検証
- 04名前付きグラフと一般的なプレフィックスの一覧
- 05タイムアウト、行数上限、HTTPヘッダーの設定
活用シーン
- 01Wikidataなどのデータセットの検索
- 02RDFエンティティが条件に合うかの確認
- 03実行前のSPARQLクエリ検証
MCP 対応
MCPクライアントにSPARQLクエリとエンドポイント探索のツールを提供し、一般的なプレフィックスをリソースとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-sparql — LLM 向けの SPARQL クエリ機能を提供する MCP サーバーです。
mcp-name: io.github.daedalus/mcp-sparql
インストール
pip install mcp-sparql
使い方
MCP サーバーとして
MCP 設定に追加します(例:~/.config/claude/mcp.json)。
{
"mcpServers": {
"mcp-sparql": {
"command": "mcp-sparql"
}
}
}
利用可能なツール
| ツール | 説明 |
|---|---|
sparql_query | SPARQL SELECT クエリを実行します(テーブルまたは JSON 形式で出力) |
sparql_ask | SPARQL ASK クエリを実行します(ブール値を返します) |
sparql_construct | SPARQL CONSTRUCT クエリを実行します(Turtle または JSON-LD 形式で出力) |
sparql_describe | SPARQL DESCRIBE クエリを実行します(Turtle または JSON-LD 形式で出力) |
sparql_validate | 実行せずに SPARQL クエリの構文を検証します |
sparql_list_graphs | SPARQL エンドポイント上の名前付きグラフを一覧表示します |
sparql_get_prefixes | SPARQL エンドポイントでよく使われるプレフィックスを取得します |
例
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"
エンティティが存在するか確認する:
sparql_ask:
endpoint: "https://query.wikidata.org/sparql"
query: "ASK { wd:Q42 wdt:P31 wd:Q5 }"
クエリを検証する:
sparql_validate:
query: "SELECT ?s WHERE { ?s ?p ?o }"
名前付きグラフを一覧表示する:
sparql_list_graphs:
endpoint: "https://query.wikidata.org/sparql"
よく使われるプレフィックスを取得する:
sparql_get_prefixes:
endpoint: "https://query.wikidata.org/sparql"
リソース
| リソース | URI | 説明 |
|---|---|---|
| 共通プレフィックス | sparql://common-prefixes | 標準的な SPARQL 名前空間プレフィックス |
API
sparql_query
SPARQL SELECT クエリを実行します。
パラメーター:
endpoint(str):SPARQL エンドポイントの URLquery(str):SPARQL SELECT クエリtimeout(int, default=30):クエリのタイムアウト(秒)output_format(str, default="table"):"table" は Markdown 形式、"json" は JSON 形式で出力しますheaders(dict, optional):認証用の HTTP ヘッダーmax_rows(int, default=1000):結果の最大行数
sparql_ask
SPARQL ASK クエリを実行します。"true" または "false" を返します。
sparql_construct
SPARQL CONSTRUCT クエリを実行します。RDF トリプルを返します。
追加パラメーター:
output_format(str, default="turtle"):"turtle" または "json"
sparql_describe
SPARQL DESCRIBE クエリを実行します。RDF の記述を返します。
sparql_validate
実行せずに SPARQL クエリの構文を検証します。
sparql_list_graphs
SPARQL エンドポイント上で利用可能な名前付きグラフを一覧表示します。
sparql_get_prefixes
SPARQL エンドポイントでよく使われるプレフィックスを取得します。
開発
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/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。