Java based Model Context Procotol (MCP) Server for JDBC

Java based Model Context Procotol (MCP) Server for JDBC

基于 Java 的 JDBC 模型上下文协议 (MCP) 服务器

OpenLinkSoftware

开发者工具
访问服务器

README

基于 Java 的 JDBC 模型上下文协议 (MCP) 服务器

一个轻量级的 JDBC MCP(模型上下文协议)服务器,使用 Quakrus 构建。此服务器兼容 Virtuoso DBMS 和其他具有 JDBC 驱动程序的 DBMS 后端。

mcp-client-and-servers|648x499


功能特性

  • 获取 Schema: 从连接的数据库中获取并列出所有 schema 名称。
  • 获取表: 检索特定 schema 或所有 schema 的表信息。
  • 描述表: 生成表结构的详细描述,包括:
    • 列名和数据类型
    • 可空属性
    • 主键和外键
  • 搜索表: 基于名称子字符串过滤和检索表。
  • 执行存储过程: 在 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

配置

对于 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"
      }
    }
  }
}

用法

提供的工具

成功安装后,以下工具将可用于 MCP 客户端应用程序。

概述

名称 描述
jdbc_get_schemas 列出连接的数据库管理系统 (DBMS) 可访问的数据库 schema。
jdbc_get_tables 列出与所选数据库 schema 关联的表。
jdbc_describe_table 提供与指定数据库 schema 关联的表的描述。 这包括有关列名、数据类型、null 处理、自动递增、主键和外键的信息
jdbc_filter_table_names 基于来自 q 输入字段的子字符串模式,列出与所选数据库 schema 关联的表。
jdbc_query_database 执行 SQL 查询并以 JSONL 格式返回结果。
jdbc_execute_query 执行 SQL 查询并以 JSONL 格式返回结果。
jdbc_execute_query_md 执行 SQL 查询并以 Markdown 表格格式返回结果。
jdbc_spasql_query 执行 SPASQL 查询并返回结果。
jdbc_sparql_query 执行 SPARQL 查询并返回结果。
jdbc_virtuoso_support_ai 与 Virtuoso 支持助手/代理交互——一个 Virtuoso 特定的功能,用于与 LLM 交互

详细描述

  • jdbc_get_schemas

    • 检索并返回连接的数据库中的所有 schema 名称的列表。
    • 输入参数:
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回 schema 名称的 JSON 字符串数组。
  • jdbc_get_tables

    • 检索并返回包含指定 schema 中表信息的列表。 如果未提供 schema,则使用连接的默认 schema。
    • 输入参数:
      • schema (string, optional): 用于过滤表的数据库 schema。默认为连接默认值。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回包含表信息的 JSON 字符串(例如,TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)。
  • jdbc_filter_table_names

    • 过滤并返回有关名称包含特定子字符串的表的信息。
    • 输入参数:
      • q (string, required): 要在表名中搜索的子字符串。
      • schema (string, optional): 用于过滤表的数据库 schema。默认为连接默认值。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回包含匹配表信息的 JSON 字符串。
  • jdbc_describe_table

    • 检索并返回有关特定表的列的详细信息。
    • 输入参数:
      • schema (string, required): 包含该表的数据库 schema 名称。
      • table (string, required): 要描述的表的名称。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回描述表列的 JSON 字符串(例如,COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
  • jdbc_query_database

    • 执行标准 SQL 查询并以 JSON 格式返回结果。
    • 输入参数:
      • query (string, required): 要执行的 SQL 查询字符串。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 以 JSON 字符串形式返回查询结果。
  • jdbc_query_database_md

    • 执行标准 SQL 查询并以 Markdown 表格格式返回结果。
    • 输入参数:
      • query (string, required): 要执行的 SQL 查询字符串。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 以 Markdown 表格字符串形式返回查询结果。
  • jdbc_query_database_jsonl

    • 执行标准 SQL 查询并以 JSON Lines (JSONL) 格式(每行一个 JSON 对象)返回结果。
    • 输入参数:
      • query (string, required): 要执行的 SQL 查询字符串。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 以 JSONL 字符串形式返回查询结果。
  • jdbc_spasql_query

    • 执行 SPASQL(SQL/SPARQL 混合)查询并返回结果。 这是 Virtuoso 特有的功能。
    • 输入参数:
      • query (string, required): SPASQL 查询字符串。
      • max_rows (number, optional): 要返回的最大行数。默认为 20。
      • timeout (number, optional): 查询超时时间(毫秒)。默认为 30000。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回来自底层存储过程调用的结果(例如,Demo.demo.execute_spasql_query)。
  • jdbc_sparql_query

    • 执行 SPARQL 查询并返回结果。 这是 Virtuoso 特有的功能。
    • 输入参数:
      • query (string, required): SPARQL 查询字符串。
      • format (string, optional): 所需的结果格式。默认为 'json'。
      • timeout (number, optional): 查询超时时间(毫秒)。默认为 30000。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回来自底层函数调用的结果(例如,"UB".dba."sparqlQuery")。
  • jdbc_virtuoso_support_ai

    • 利用 Virtuoso 特定的 AI 助手功能,传递提示和可选的 API 密钥。 这是 Virtuoso 特有的功能。
    • 输入参数:
      • prompt (string, required): AI 功能的提示文本。
      • api_key (string, optional): AI 服务的 API 密钥。默认为 "none"。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • url (string, optional): JDBC URL 连接字符串。
    • 返回来自 AI 支持助手函数调用的结果(例如,DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)。

故障排除

为了便于故障排除:

  1. 安装 MCP Inspector:

    npm install -g @modelcontextprotocol/inspector
    
  2. 启动 Inspector:

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

访问提供的 URL 以对服务器交互进行故障排除。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript