基于 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 客户端应用程序将可以使用以下工具。
概述
姓名 | 描述 |
---|---|
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
(字符串,可选):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 检查器:
- 启动检查器:
访问检查器返回的 URL 来排除 MCP 服务器交互故障。
MCP 检查器连接到其他驱动程序
对于基本的 MCP 客户端使用和故障排除,请按如下方式使用 MCP Inspector:
- 安装 JDBC 驱动程序,确保其 JAR 文件已通过
$CLASSPATH
在主机操作系统的 Java 虚拟机 (JVM) 中注册。例如: - 使用以下命令行参数启动检查器:
基于 Oracle 和 Informix 驱动程序的使用示例
- 假设以下 JDBC 驱动程序信息:
- Oracle JDBC 驱动程序 URL 模板
- Informix JDBC 驱动程序 URL 模板
- Oracle JDBC 驱动程序 URL 模板
- 安装 Oracle (
ojdbc17.jar
) 和/或 Informix (jdbc-15.0.0.1.1.jar
) JDBC 驱动程序,并确保其 JAR 文件已通过$CLASSPATH
在主机操作系统的 Java 虚拟机 (JVM) 中注册。例如: - 使用以下命令行参数启动检查器:
- 访问检查器返回的 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
- TypeScript
- PythonMIT License
- PythonApache 2.0
- JavaScriptMIT License