SPARQL查询服务

一个连接AI代理与Apache Jena的MCP服务器,提供SPARQL查询和更新功能,适用于知识图谱数据管理和分析。

  • by ramuzes
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 ramuzes/mcp-jena

使用说明

Apache Jena的MCP服务器

一个模型上下文协议(MCP)服务器,将AI代理连接到Apache Jena,以实现SPARQL查询功能。

概述

该项目实现了一个MCP服务器,允许AI代理(如Cursor、Claude for Cline或Claude Desktop)访问和查询存储在Apache Jena中的RDF数据。该服务器提供用于对Jena-Fuseki服务器执行SPARQL查询和更新的工具。

特性

  • 对Jena Fuseki服务器执行SPARQL查询
  • 执行SPARQL更新以修改RDF数据
  • 列出数据集中可用的命名图
  • Jena Fuseki的HTTP基本身份验证支持
  • 与模型上下文协议兼容

先决条件

  • Node.js(v16或更高版本)
  • 加载了RDF数据的Apache Jena Fuseki服务器
  • 支持模型上下文协议的AI代理(例如Cursor、Claude for Cline)

安装

  1. 克隆此存储库:

    git clone https://github.com/ramuzes/mcp-jena.git
    cd mcp-jena
    
  2. 安装依赖项:

    npm install
    
  3. 构建TypeScript代码:

    npm run build
    

用法

使用默认设置运行服务器(耶拿为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运行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服务器提供以下工具:

  1. execute_sparql_query -对Jena数据集执行SPARQL查询

    • 包括全面的SPARQL语法文档
    • 属性路径运算符(/、*、+、?、^、|)及其示例
    • 常见的查询模式和模板
    • 自动查询验证和建议
  2. execute_sparql_update -执行SPARQL更新查询以修改数据集

    • 插入/删除操作文档
    • 使用WHERE子句进行条件更新
    • 图形管理操作
  3. list_graphs -列出数据集中所有可用的命名图

    • 图表使用模式和最佳实践
    • 来源和版本示例
  4. sparql_query_templates -获取预构建的SPARQL查询模板

    • 探索:基础数据发现和统计
    • 属性路径:复杂的图形导航模式
    • 统计:知识图度量和分析
    • 验证:数据质量和一致性检查
    • 模式:结构发现和记录

环境变量

您还可以使用环境变量配置服务器:

  • JENA_FUSEKI_URL:您的Jena Fuseki服务器的URL(默认值:http://localhost:3030)
  • DEFAULT_DATASET:默认数据集名称(默认值:ds)
  • JENA_USERNAME:Jena Fuseki的HTTP基本身份验证用户名
  • JENA_PASSWORD:Jena Fuseki的HTTP基本身份验证密码
  • 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

资源