返回市场
MCP-JDBC服务器

MCP-JDBC服务器

作者:OpenLinkSoftware8 星标更新:2025-07-23

项目介绍


OpenLink MCP Server for JDBC

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

mcp-client-and-servers|648x499


特性

  • 获取模式:从连接的数据库中获取并列出所有模式名称。
  • 获取表:检索特定模式或所有模式的表信息。
  • 描述表:生成表结构的详细描述,包括:
    • 列名和数据类型
    • 是否允许为空
    • 主键和外键
  • 搜索表:根据名称子串过滤并检索表。
  • 执行存储过程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用户:

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_queryVirtuoso特有功能! 执行SPASQL查询并返回结果。
jdbc_sparql_queryVirtuoso特有功能! 执行SPARQL查询并返回结果。
jdbc_virtuoso_support_aiVirtuoso特有功能! 通过Virtuoso支持助手/代理与LLMs交互。

详细描述

  • jdbc_get_schemas

    • 获取并返回连接数据库中的所有模式名称列表。
    • 输入参数:
      • user (字符串,可选):数据库用户名。默认为 "demo"
      • password (字符串,可选):数据库密码。默认为 "demo"
      • url (字符串,可选):JDBC URL连接字符串。
    • 返回一个包含模式名称的JSON字符串数组。
  • jdbc_get_tables

    • 获取并返回指定模式中表的信息列表。如果没有提供模式,则使用连接的默认模式。
    • 输入参数:
      • schema (字符串,可选):用于筛选表的数据库模式。默认为连接默认模式。
      • user (字符串,可选):数据库用户名。默认为 "demo"
      • password (字符串,可选):数据库密码。默认为 "demo"
      • url (字符串,可选):JDBC URL连接字符串。
    • 返回一个包含表信息的JSON字符串(例如,TABLE_CATTABLE_SCHEMTABLE_NAMETABLE_TYPE)。
  • 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_NAMETYPE_NAMECOLUMN_SIZEIS_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 Lines (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:

  1. 安装MCP Inspector:

    npm install -g @modelcontextprotocol/inspector
    
  2. 启动检查器:

    npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar
    

访问检查器返回的URL以进行MCP服务器交互的故障排除。

MCP Inspector连接到其他驱动程序

对于基本MCP客户端使用和故障排除,请按如下方式使用MCP Inspector:

  1. 安装JDBC驱动程序,确保它们的JAR文件通过$CLASSPATH注册到主机操作系统的Java虚拟机(JVM)。例如:

    export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar
    
  2. 使用以下命令行参数启动检查器:

    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驱动程序的使用示例

  1. 假设以下JDBC驱动程序信息:

    • Oracle JDBC驱动程序URL模板
      jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>
      
    • Informix JDBC驱动程序URL模板
      jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
      
  2. 安装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
    
  3. 使用以下命令行参数启动检查器:

    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
    
  4. 访问检查器返回的URL,然后使用jdbc_execute_query操作查询目标数据库,提供实际值以填充以下输入字段模板:

    • JDBC URL
    • 用户
    • 密码
    • 查询