基于 Java 的 JDBC 模型上下文协议 (MCP) 服务器
使用Quakrus构建的轻量级 JDBC MCP(模型上下文协议)服务器。该服务器与 Virtuoso DBMS 以及其他具有 JDBC 驱动程序的 DBMS 后端兼容。
特征
获取模式:从连接的数据库中获取并列出所有模式名称。
获取表:检索特定模式或所有模式的表信息。
Describe Table :生成表结构的详细描述,包括:
列名和数据类型
可空属性
主键和外键
搜索表:根据名称子字符串过滤和检索表。
执行存储过程: *Virtuoso 特有的功能!*执行存储过程并检索结果。
执行查询:
JSONL 结果格式:针对结构化响应进行了优化。
Markdown 表格格式:适合报告和可视化。
先决条件
MCP 服务器需要 Java 21 或更高版本。
安装
克隆此存储库:
环境变量
通过覆盖这些默认值来更新您的.env
以符合您的偏好:
配置
对于Claude Desktop用户:将以下内容添加到claude_desktop_config.json
:
对于使用其他 JDBC 驱动程序或驱动程序组合的Claude Desktop用户:将以下内容添加到claude_desktop_config.json
:
使用
提供的工具
安装成功后,MCP 客户端应用程序将可以使用以下工具。
概述
姓名 | 描述 |
| 列出连接的数据库管理系统 (DBMS) 可访问的数据库模式。 |
| 列出与选定数据库模式关联的表。 |
| 提供与指定数据库模式关联的表的描述。这包括有关列名、数据类型、空值处理、自动增量、主键和外键的信息。 |
| 根据
输入字段中的子字符串模式列出与所选数据库模式关联的表。 |
| 执行 SQL 查询并以 JSONL 格式返回结果。 |
| 执行 SQL 查询并以 JSONL 格式返回结果。 |
| 执行 SQL 查询并以 Markdown 表格式返回结果。 |
| *Virtuoso 独有的功能!*执行 SPASQL 查询并返回结果。 |
| *Virtuoso 独有的功能!*执行 SPARQL 查询并返回结果。 |
| *Virtuoso 独有功能!*通过 Virtuoso 支持助手/代理与 LLM 互动。 |
详细描述
jdbc_get_schemas
从连接的数据库中检索并返回所有模式名称的列表。
输入参数:
user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回架构名称的 JSON 字符串数组。
jdbc_get_tables
检索并返回包含指定架构中表的信息的列表。如果未提供架构,则使用连接的默认架构。
输入参数:
schema
(字符串,可选):用于过滤表的数据库模式。默认为连接默认值。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回包含表信息(例如
TABLE_CAT
、TABLE_SCHEM
、TABLE_NAME
、TABLE_TYPE
)的 JSON 字符串。
jdbc_filter_table_names
过滤并返回有关名称包含特定子字符串的表的信息。
输入参数:
q
(字符串,必需):在表名中搜索的子字符串。schema
(字符串,可选):用于过滤表的数据库模式。默认为连接默认值。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回包含匹配表的信息的 JSON 字符串。
jdbc_describe_table
检索并返回有关特定表的列的详细信息。
输入参数:
schema
(字符串,必需):包含表的数据库模式名称。table
(字符串,必需):要描述的表的名称。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回描述表的列的 JSON 字符串(例如,
COLUMN_NAME
、TYPE_NAME
、COLUMN_SIZE
、IS_NULLABLE
)。
jdbc_query_database
执行标准 SQL 查询并以 JSON 格式返回结果。
输入参数:
query
(字符串,必需):要执行的 SQL 查询字符串。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
以 JSON 字符串形式返回查询结果。
jdbc_query_database_md
执行标准 SQL 查询并返回格式化为 Markdown 表的结果。
输入参数:
query
(字符串,必需):要执行的 SQL 查询字符串。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
以 Markdown 表字符串形式返回查询结果。
jdbc_query_database_jsonl
执行标准 SQL 查询并以 JSON 行 (JSONL) 格式返回结果(每行一个 JSON 对象)。
输入参数:
query
(字符串,必需):要执行的 SQL 查询字符串。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
以 JSONL 字符串形式返回查询结果。
jdbc_spasql_query
Virtuoso 独有的功能!
执行SPASQL(SQL/SPARQL混合)查询返回结果。
输入参数:
query
(字符串,必需):SPASQL 查询字符串。max_rows
(数字,可选):返回的最大行数。默认为20
。timeout
(数字,可选):查询超时时间(以毫秒为单位)。默认为30000
(即 30 秒)。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回底层存储过程调用的结果(例如,
Demo.demo.execute_spasql_query
)。
jdbc_sparql_query
Virtuoso 独有的功能!
执行 SPARQL 查询并返回结果。
输入参数:
query
(字符串,必需):SPARQL 查询字符串。format
(字符串,可选):所需的结果格式。默认为'json'
。timeout
(数字,可选):查询超时时间(以毫秒为单位)。默认为30000
(即 30 秒)。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回底层函数调用的结果(例如,
"UB".dba."sparqlQuery"
)。
jdbc_virtuoso_support_ai
Virtuoso 独有的功能!
利用 Virtuoso 特定的 AI 助手功能,传递提示和可选的 API 密钥。
输入参数:
prompt
(字符串,必需):AI 功能的提示文本。api_key
(字符串,可选):AI 服务的 API 密钥。默认为"none"
。user
(字符串,可选):数据库用户名。默认为"demo"
。password
(字符串,可选):数据库密码。默认为"demo"
。url
(字符串,可选):JDBC URL 连接字符串。
返回 AI 支持助手函数调用的结果(例如,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI
)。
基本使用和故障排除
MCP Inspector 连接到 Virtuoso 的 ODBC 驱动程序
对于基本的 MCP 客户端使用和故障排除,请按如下方式使用 MCP Inspector:
安装 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 Inspector:
安装 JDBC 驱动程序,确保其 JAR 文件已通过
$CLASSPATH
在主机操作系统的 Java 虚拟机 (JVM) 中注册。例如: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:@<hostname>:[port]:<SERVICEID>Informix JDBC 驱动程序 URL 模板
jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
安装 Oracle (
ojdbc17.jar
) 和/或 Informix (jdbc-15.0.0.1.1.jar
) JDBC 驱动程序,并确保其 JAR 文件已通过$CLASSPATH
在主机操作系统的 Java 虚拟机 (JVM) 中注册。例如: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
用户
密码
询问
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
用于 JDBC 的 OpenLink MCP 服务器
Related MCP Servers
- MIT License
- Apache 2.0
- MIT License