项目简介
本项目是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于连接 Ontotext GraphDB 数据库。它允许兼容 MCP 的 LLM (大型语言模型) 客户端以结构化的方式访问 GraphDB 中的数据和功能, enabling LLMs to explore RDF graphs and execute SPARQL queries.
主要功能
该服务器向 LLM 客户端暴露了以下能力:
资源 (Resources):
- 类列表: 获取 GraphDB 仓库中所有 RDF 类及其实例计数、标签和注释。
- 属性列表: 获取仓库中所有谓词 (属性) 及其使用计数、标签和注释。
- 统计信息: 提供仓库的总三元组数、主题、谓词、对象和图的数量统计。
- 样本数据: 获取仓库中的三元组样本数据。
- 图内容: 获取特定图的样本数据以及该图的三元组、主题、谓词计数和本体类信息。
工具 (Tools):
- sparqlQuery: 允许 LLM 执行只读的 SPARQL 查询,并可指定查询的图和结果格式 (JSON, XML, CSV)。
- listGraphs: 列出仓库中所有可用的图。
安装步骤
要安装和运行此 MCP 服务器,请按照以下步骤操作:
- 克隆仓库:
git clone https://github.com/keonchennl/mcp-graphdb.git cd mcp-graphdb - 安装依赖:
或使用 npm:yarn installnpm install - 构建项目:
或使用 npm:yarn buildnpm run build
这将在 'dist' 目录下生成可执行的 JavaScript 文件。
服务器配置
MCP 服务器需要知道如何连接您的 GraphDB 实例。您可以创建一个名为 '.env' 的文件,在其中设置以下环境变量:
GRAPHDB_ENDPOINT=http://localhost:7200 # GraphDB 服务器的地址和端口 GRAPHDB_REPOSITORY=myRepository # 要连接的仓库名称 GRAPHDB_USERNAME=username # (可选) GraphDB 认证用户名 GRAPHDB_PASSWORD=password # (可选) GraphDB 认证密码
或者,您可以在启动服务器时通过命令行参数提供 Endpoint 和 Repository:
node dist/index.js http://localhost:7200 myRepository
命令行参数的优先级高于环境变量。
对于 MCP 客户端(如 Claude Desktop),您需要在客户端的配置中添加此 MCP 服务器。典型的配置(JSON 格式)类似于:
{ "mcpServers": { "graphdb_server_name": { // 给这个 MCP 服务器起一个唯一的名称 "command": "node", // 启动服务器的命令,通常是 node "args": [ // 启动命令的参数 "/path/to/mcp-graphdb/dist/index.js", // 服务器主文件路径 "http://localhost:7200", // (可选) GraphDB Endpoint,也可通过环境变量配置 "myRepository" // (可选) GraphDB Repository,也可通过环境变量配置 ], "env": { // (可选) 服务器运行所需的环境变量 "GRAPHDB_USERNAME": "username", "GRAPHDB_PASSWORD": "password" } } } }
请根据您的实际安装路径和 GraphDB 配置修改 '/path/to/mcp-graphdb/dist/index.js' 以及相关的 Endpoint, Repository, Username 和 Password。
基本使用方法
安装并配置好服务器后,启动兼容的 MCP 客户端(如 Claude Desktop)。客户端将通过配置中的 'command' 和 'args' 启动此 GraphDB MCP 服务器。
一旦连接建立,LLM 即可通过客户端界面发现并使用此服务器提供的资源和工具。例如,LLM 可以:
- 自动发现 'sparqlQuery' 工具并生成 SPARQL 查询来检索特定信息。
- 读取 'graphdb://<host>/repository/<repo>/classes' 资源来了解数据库中有哪些类。
- 使用 'listGraphs' 工具了解数据库包含了哪些独立的图。
LLM 可以利用这些功能深入理解和交互 GraphDB 中的复杂知识图谱数据。
信息
分类
数据库与文件