模型连接器

@ramuzes/mcp-jena
0 Stars 361 次浏览 ramuzes 更新于 2026-08-23

一个模型上下文协议服务器,用于将人工智能代理连接到Apache Jena,使它们能够针对存储在Jena Fuseki中的RDF数据执行SPARQL查询和更新操作。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

MCP Server for Apache Jena

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

概述

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

特性

  • 对 Jena Fuseki 服务器执行 SPARQL 查询
  • 执行 SPARQL 更新以修改 RDF 数据
  • 列出数据集中可用的命名图
  • 支持 Jena Fuseki 的 HTTP 基本认证
  • 与 Model Context Protocol 兼容

先决条件

  • Node.js (v16 或更高版本)
  • 运行中的 Apache Jena Fuseki 服务器,并已加载你的 RDF 数据
  • 支持 Model Context Protocol 的 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
    

使用方法

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

  1. execute_sparql_query - 对 Jena 数据集执行 SPARQL 查询
  2. execute_sparql_update - 执行 SPARQL 更新查询以修改数据集
  3. list_graphs - 列出数据集中所有可用的命名图

环境变量

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

  • 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

资源

相关 MCP 服务