本项目构建了一个 Model Context Protocol (MCP) 服务器,借助 Apache Jena 让 AI 代理能够开展 SPARQL 查询操作,为 AI 代理访问和查询存储于 Apache Jena 中的 RDF 数据提供了便利。
该项目实现了一个 MCP 服务器,让 AI 代理(像 Cursor、Claude for Cline 或 Claude Desktop 这类)可以访问并查询存储在 Apache Jena 里的 RDF 数据。此服务器提供了执行 SPARQL 查询和更新操作的工具。
git clone https://github.com/ramuzes/mcp-jena.git
cd mcp-jena
npm install
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
此 MCP 服务器提供以下工具:
execute_sparql_query - 执行针对 Jena 数据集的 SPARQL 查询。execute_sparql_update - 执行修改数据集的 SPARQL 更新查询。list_graphs - 列出数据集中所有可用的命名图。您也可以通过环境变量配置服务器:
| 属性 | 详情 |
|---|---|
JENA_FUSEKI_URL |
Jena Fuseki 服务器的 URL(默认值:http://localhost:3030) |
DEFAULT_DATASET |
默认的数据集名称(默认值:ds) |
JENA_USERNAME |
访问 Jena Fuseki 的 HTTP Basic 认证用户名 |
JENA_PASSWORD |
HTTP Basic 认证密码 |
PORT |
MCP 服务器的端口(对于 HTTP 传输,默认值:8080) |
API_KEY |
MCP 服务器的身份验证 API 密钥 |
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object
}
LIMIT 10
PREFIX ex:
INSERT DATA {
ex:subject1 ex:predicate1 "object1" .
ex:subject2 ex:predicate2 42 .
}
SELECT ?subject ?predicate ?object
FROM NAMED
WHERE {
GRAPH {
?subject ?predicate ?object
}
}
LIMIT 10