使用说明
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:@<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文件通过以下方式在主机操作系统的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
- 用户
- 密码
- 查询
