一个基于Java的轻量级MCP(模型上下文协议)服务器,用于JDBC,构建于Quakrus之上。此服务器兼容Virtuoso数据库管理系统以及任何具有JDBC驱动程序的其他数据库管理系统。

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用户:
在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用户:
编辑并添加以下内容到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支持助手/代理与LLMs交互。 |
jdbc_get_schemas
user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。jdbc_get_tables
schema (字符串,可选):用于筛选表的数据库模式。默认为连接默认模式。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE)。jdbc_filter_table_names
q (字符串,必需):要在表名中搜索的子串。schema (字符串,可选):用于筛选表的数据库模式。默认为连接默认模式。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。jdbc_describe_table
schema (字符串,必需):包含该表的数据库模式名称。table (字符串,必需):要描述的表名。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。COLUMN_NAME,TYPE_NAME,COLUMN_SIZE,IS_NULLABLE)。jdbc_query_database
query (字符串,必需):要执行的SQL查询字符串。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。jdbc_query_database_md
query (字符串,必需):要执行的SQL查询字符串。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。jdbc_query_database_jsonl
query (字符串,必需):要执行的SQL查询字符串。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。jdbc_spasql_query
query (字符串,必需):SPASQL查询字符串。max_rows (数字,可选):要返回的最大行数。默认为 20。timeout (数字,可选):查询超时时间(毫秒)。默认为 30000(即30秒)。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。Demo.demo.execute_spasql_query)。jdbc_sparql_query
query (字符串,必需):SPARQL查询字符串。format (字符串,可选):期望的结果格式。默认为 'json'。timeout (数字,可选):查询超时时间(毫秒)。默认为 30000(即30秒)。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。"UB".dba."sparqlQuery")。jdbc_virtuoso_support_ai
prompt (字符串,必需):AI函数的提示文本。api_key (字符串,可选):AI服务的API密钥。默认为 "none"。user (字符串,可选):数据库用户名。默认为 "demo"。password (字符串,可选):数据库密码。默认为 "demo"。url (字符串,可选):JDBC URL连接字符串。DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)。对于基本MCP客户端使用和故障排除,请按如下方式使用MCP Inspector:
安装MCP Inspector:
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 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
假设以下JDBC驱动程序信息:
jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>
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操作查询目标数据库,提供实际值以填充以下输入字段模板: