MCP Server for Apache Jena について
MCP Server for Apache Jena は、AI エージェントを Apache Jena Fuseki に接続し、RDF データの検索と更新を可能にします。RDF データセットを扱う MCP クライアント向けに、SPARQL ツールや名前付きグラフ一覧、クエリテンプレートを提供します。
主な機能
- 01SPARQL クエリの実行
- 02SPARQL 更新の実行
- 03データセット内の名前付きグラフ一覧
- 04HTTP Basic 認証への対応
- 05クエリテンプレートと構文ガイド
活用シーン
- 01Fuseki の RDF データを取得
- 02RDF データの挿入や削除
- 03名前付きグラフとデータセット構造の確認
- 04テンプレートを使ったグラフクエリの作成
MCP 対応
MCP サーバーは、SPARQL クエリと更新、名前付きグラフ一覧、クエリテンプレートのツールをクライアントに公開し、設定済みの Jena Fuseki サービスに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Apache Jena 用 MCP サーバー
AI エージェントを Apache Jena に接続し、SPARQL クエリ機能を利用できる Model Context Protocol(MCP)サーバーです。
概要
このプロジェクトでは、AI エージェント(Cursor、Claude for Cline、Claude Desktop など)が Apache Jena に保存された RDF データにアクセスし、クエリを実行できる MCP サーバーを実装しています。このサーバーは、Jena Fuseki サーバーに対して SPARQL クエリや更新を実行するツールを提供します。
機能
- Jena Fuseki サーバーに対する SPARQL クエリの実行
- RDF データを変更する SPARQL 更新の実行
- データセット内で利用可能な名前付きグラフの一覧表示
- Jena Fuseki の HTTP Basic 認証に対応
- Model Context Protocol と互換性あり
前提条件
- Node.js(v16 以降)
- RDF データを読み込んだ状態で稼働している Apache Jena Fuseki サーバー
- Model Context Protocol に対応する AI エージェント(例:Cursor、Claude for Cline)
インストール
-
このリポジトリをクローンします:
git clone https://github.com/ramuzes/mcp-jena.git cd mcp-jena -
依存関係をインストールします:
npm install -
TypeScript コードをビルドします:
npm run build
使い方
デフォルト設定(Jena は localhost:3030、データセットは「ds」)でサーバーを実行します:
npm start
または、Jena エンドポイント、データセット、認証情報を指定します:
npm start -- --endpoint http://your-jena-server:3030 --dataset your_dataset --username your_username --password your_password
短縮フラグも使用できます:
npm start -- -e http://your-jena-server:3030 -d your_dataset -u your_username -p your_password
自動トランスパイルを利用する開発モードの場合:
npm run dev:transpile -- -e http://your-jena-server:3030 -d your_dataset -u your_username -p your_password
Docker
Docker を使用して MCP Jena サーバーを実行できます:
Docker イメージのビルド
docker build -t mcp-jena .
Docker での実行
docker run -e JENA_FUSEKI_URL=http://your-jena-server:3030 -e DEFAULT_DATASET=your_dataset mcp-jena
利用可能なツール
この MCP サーバーでは、次のツールを利用できます:
-
execute_sparql_query- Jena データセットに対して SPARQL クエリを実行します- SPARQL 構文に関する包括的なドキュメントを含みます
- プロパティパス演算子(/, *, +, ?, ^, |)の例
- 一般的なクエリパターンとテンプレート
- クエリの自動検証と提案
-
execute_sparql_update- データセットを変更する SPARQL 更新クエリを実行します- 挿入/削除操作のドキュメント
- WHERE 句を使った条件付き更新
- グラフ管理操作
-
list_graphs- データセット内で利用可能なすべての名前付きグラフを一覧表示します- グラフの使用パターンとベストプラクティス
- 来歴とバージョン管理の例
-
sparql_query_templates- あらかじめ用意された SPARQL クエリテンプレートを取得します- exploration:基本的なデータの発見と統計
- property-paths:複雑なグラフナビゲーションパターン
- statistics:ナレッジグラフの指標と分析
- validation:データ品質と整合性のチェック
- schema:構造の発見とドキュメント化
環境変数
環境変数を使ってサーバーを設定することもできます:
JENA_FUSEKI_URL:Jena Fuseki サーバーの URL(デフォルト:http://localhost:3030)DEFAULT_DATASET:デフォルトのデータセット名(デフォルト:ds)JENA_USERNAME:Jena Fuseki の HTTP Basic 認証に使用するユーザー名JENA_PASSWORD:Jena Fuseki の HTTP Basic 認証に使用するパスワードPORT:MCP サーバーのポート(HTTP トランスポート用。デフォルト:8080)API_KEY:MCP サーバーの認証に使用する API キー
SPARQL クエリの例
基本的な SELECT クエリ:
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object
}
LIMIT 10
UPDATE によるデータの挿入:
PREFIX ex: <http://example.org/>
INSERT DATA {
ex:subject1 ex:predicate1 "object1" .
ex:subject2 ex:predicate2 42 .
}
特定の名前付きグラフへのクエリ:
SELECT ?subject ?predicate ?object
FROM NAMED <http://example.org/graph1>
WHERE {
GRAPH <http://example.org/graph1> {
?subject ?predicate ?object
}
}
LIMIT 10
リソース
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。