______________________________________________________________________
JDBC的OpenLink MCP服务器
基于Java的JDBC轻量级MCP(模型上下文协议)服务器 Quakrus. 此服务器与Virtuoso DBMS和任何其他具有JDBC驱动程序的DBMS后端兼容。

______________________________________________________________________
特性
- 获取架构:从连接的数据库中获取并列出所有架构名称。
- 获取表格:检索特定架构或所有架构的表信息。
- 描述表:生成表结构的详细描述,包括:
- 列名和数据类型 - 可为空的属性 - 主键和外键
- 搜索表:根据名称子字符串筛选和检索表。
- 执行存储过程: _Virtuoso特有的功能!_ 执行存储过程并检索结果。
- 执行查询:
- JSONL结果格式:针对结构化响应进行了优化。 - Markdown表格格式:非常适合报告和可视化。
______________________________________________________________________
先决条件
MCP服务器需要Java 21或更高版本。
______________________________________________________________________
安装
克隆此存储库:
git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git
cd mcp-jdbc-server环境变量
更新您的 .env 通过覆盖这些默认值以匹配您的偏好:
jdbc.url=jdbc:virtuoso://localhost:1111
jdbc.user=dba
jdbc.password=dba
jdbc.api_key=xxx______________________________________________________________________
配置
对于 克劳德桌面 使用Virtuoso及其JDBC驱动程序的用户:
添加以下内容 claude_desktop_config.json:
{
"mcpServers": {
"my_database": {
"command": "java",
"args": ["-jar", "/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar"],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "username",
"jdbc.password": "password",
"jdbc.api_key": "sk-xxx"
}
}
}
}对于 克劳德桌面 使用其他JDBC驱动程序或驱动程序组合的用户:
将以下内容添加到 claude_desktop_config.json:
"jdbc": {
"command": "java",
"args": [
"-cp",
"/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar:/path/to/jdbc_driver1.jar:/path/to/jdbc_driverN.jar",
"io.quarkus.runner.GeneratedMain"
],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "dba",
"jdbc.password": "dba"
}
}______________________________________________________________________
使用
提供的工具
成功安装后,MCP客户端应用程序将可以使用以下工具。
概述
| 名称 | 描述 |
|---|---|
jdbc_get_schemas | 列出连接的数据库管理系统(DBMS)可访问的数据库模式。 |
jdbc_get_tables | 列出与选定数据库架构关联的表。 |
jdbc_describe_table | 提供与指定数据库架构关联的表的描述。这包括有关列名、数据类型、空值处理、自动递增、主键和外键的信息。 |
jdbc_filter_table_names | 基于子字符串模式列出表 q 输入字段,与选定的数据库模式相关联。 |
jdbc_query_database | 执行SQL查询并以JSONL格式返回结果。 |
jdbc_execute_query | 执行SQL查询并以JSONL格式返回结果。 |
jdbc_execute_query_md | 执行SQL查询并以Markdown表格式返回结果。 |
jdbc_spasql_query | _Virtuoso特有的功能!_ 执行SPASQL查询并返回结果。 |
jdbc_sparql_query | _Virtuoso特有的功能!_ 执行SPARQL查询并返回结果。 |
jdbc_virtuoso_support_ai | _Virtuoso特有的功能!_ 通过Virtuoso支持助理/代理与LLM互动。 |
详细描述
jdbc_get_schemas
- 从连接的数据库中检索并返回所有架构名称的列表。 - 输入参数: - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回模式名称的JSON字符串数组。
jdbc_get_tables
- 检索并返回一个包含指定架构中表信息的列表。如果没有提供架构,则使用连接的默认架构。 - 输入参数: - schema (字符串,可选):用于筛选表的数据库架构。默认为连接默认值。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回包含表信息的JSON字符串(例如。, TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE).
jdbc_filter_table_names
- 过滤并返回有关名称包含特定子字符串的表的信息。 - 输入参数: - q (string,必填):在表名中搜索的子字符串。 - schema (字符串,可选):用于筛选表的数据库架构。默认为连接默认值。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回一个JSON字符串,其中包含匹配表的信息。
jdbc_describe_table
- 检索并返回特定表的列的详细信息。 - 输入参数: - schema (字符串,必填):包含表的数据库架构名称。 - table (string,必填):要描述的表的名称。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回一个JSON字符串,描述表的列(例如。, COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE).
jdbc_query_database
- 执行标准SQL查询并以JSON格式返回结果。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 以JSON字符串形式返回查询结果。
jdbc_query_database_md
- 执行标准SQL查询并返回Markdown表格式的结果。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 以Markdown表字符串的形式返回查询结果。
jdbc_query_database_jsonl
- 执行标准SQL查询,并以JSONL格式返回结果(每行一个JSON对象)。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 以JSONL字符串形式返回查询结果。
jdbc_spasql_query
- _Virtuoso特有的功能!_ - 执行SPASQL(SQL/SPARQL混合)查询返回结果。 - 输入参数: - query (string,必填):SPASQL查询字符串。 - max_rows (number,可选):要返回的最大行数。默认为 20. - timeout (number,可选):查询超时(毫秒)。默认为 30000 (即30秒)。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回底层存储过程调用的结果(例如。, Demo.demo.execute_spasql_query).
jdbc_sparql_query
- _Virtuoso特有的功能!_ - 执行SPARQL查询并返回结果。 - 输入参数: - query (string,必填):SPARQL查询字符串。 - format (字符串,可选):所需的结果格式。默认为 'json'. - timeout (number,可选):查询超时(毫秒)。默认为 30000 (即30秒)。 - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回底层函数调用的结果(例如。, "UB".dba."sparqlQuery").
jdbc_virtuoso_support_ai
- _Virtuoso特有的功能!_ - 使用特定于Virtuoso的AI助手功能,传递提示和可选的API键。 - 输入参数: - prompt (string,必填):AI函数的提示文本。 - api_key (字符串,可选):AI服务的API密钥。默认为 "none". - user (字符串,可选):数据库用户名。默认为 "demo". - password (字符串,可选):数据库密码。默认为 "demo". - url (string,可选):JDBC URL连接字符串。 - 返回AI Support Assistant函数调用的结果(例如。, DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
______________________________________________________________________
基本使用和故障排除
MCP检查器连接到Virtuoso的ODBC驱动程序
对于基本的MCP客户端使用和故障排除,请按如下方式使用MCP检查器:
- 安装MCP检查器:
npm install -g @modelcontextprotocol/inspector- 启动检查器:
npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar访问检查器返回的URL以排除MCP服务器交互故障。
MCP检查器连接到其他驱动程序
对于基本的MCP客户端使用和故障排除,请按如下方式使用MCP检查器:
- 安装JDBC驱动程序,确保其JAR文件已通过以下方式在主机操作系统的Java虚拟机(JVM)中注册
$CLASSPATH例如:
export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar- 使用以下命令行参数启动检查器:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar io.quarkus.runner.GeneratedMain基于Oracle和Informix驱动程序的使用示例
- 假设以下JDBC驱动程序信息:
- Oracle JDBC驱动程序URL模板
jdbc:oracle:thin:@:[port]:- Informix JDBC驱动程序URL模板
jdbc:informix-sqli://:
/:=- 安装Oracle(
ojdbc17.jar)和/或Informix(jdbc-15.0.0.1.1.jar)JDBC驱动程序,并确保其JAR文件通过以下方式在主机操作系统的Java虚拟机(JVM)中注册$CLASSPATH例如:
export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar
export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/ojdbc17.jar- 使用以下命令行参数启动检查器:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/Java/Extensions/ojdbc17.jar:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar io.quarkus.runner.GeneratedMain- 访问检查器返回的URL,然后使用
jdbc_execute_query通过为以下输入字段模板提供实际值来查询目标数据库的操作:
- JDBC URL - 用户 - 密码 - 查询
