使用说明

项目简介

本项目 'mcp-server-database-jdbc' 是一个基于 Spring Boot 和 Spring AI 构建的 MCP (Model Context Protocol) 服务器,专注于为 LLM (大型语言模型) 应用提供数据库上下文信息和操作能力。它通过定义和暴露一系列数据库相关的 工具 (Tools),使得 LLM 客户端能够安全、便捷地访问和查询数据库,从而增强 LLM 在数据分析、知识检索等方面的能力。

主要功能点

  • 数据库信息查询: 提供获取数据库产品名称、版本、URL、用户名等基本信息的功能。
  • 表信息查询: 允许查询指定数据库或 Schema 下的表列表,包括表名、表类型和备注信息。
  • 字段信息查询: 支持根据表名查询表的字段信息,包括字段名、数据类型、大小、是否允许为空、默认值等。
  • SQL 查询执行: 提供执行 SELECT SQL 查询语句的功能,并以 JSON 格式返回查询结果。

核心概念:Tool (工具)

本项目将数据库操作封装为一系列 工具 (Tools),这些工具通过 Spring AI 的 '@Tool' 注解进行定义,并由 MCP 服务器托管。LLM 客户端可以通过 MCP 协议调用这些工具,从而实现与数据库的交互。

安装步骤

  1. 环境准备:

    • 确保已安装 JDK (Java Development Kit) 17 或更高版本。
    • 确保已安装 Maven。
  2. 克隆仓库:

    git clone https://github.com/delei/mcp-server-database-jdbc.git
    cd mcp-server-database-jdbc
  3. 编译项目:

    mvn clean install
  4. 运行服务器:

    mvn spring-boot:run

    或者,您也可以先打包成 JAR 文件再运行:

    mvn package
    java -jar target/mcp-server-database-jdbc-*.jar

服务器配置

MCP 服务器需要配置数据库连接信息才能正常工作。您需要在 'src/main/resources/application.properties' 文件或通过环境变量配置以下属性 (以 'mcp.jdbc.' 为前缀):

# 数据库 JDBC URL
mcp.jdbc.url=jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC&useSSL=false
# 数据库用户名
mcp.jdbc.username=your_username
# 数据库密码
mcp.jdbc.password=your_password
# 数据库驱动类名 (通常 Spring Boot 可以自动检测,如果需要手动指定则配置)
# mcp.jdbc.driver-class-name=com.mysql.cj.jdbc.Driver

MCP 客户端配置 (JSON 格式):

MCP 客户端需要配置连接到此 MCP 服务器的信息。以下是一个 JSON 配置示例,用于配置 MCP 客户端连接到本数据库工具服务器:

{
  "serverName": "database-tool-server",
  "command": "java",
  "args": [
    "-jar",
    "path/to/mcp-server-database-jdbc-*.jar"  // 请替换为实际的 JAR 文件路径
  ],
  "description": "MCP 数据库工具服务器",
  "capabilities": [
    "tools" // 声明服务器提供的能力为 tools
  ],
  "tools": [ // 可选,如果需要预先声明工具信息
    {
      "name": "databaseInfo",
      "description": "获取数据库信息"
    },
    {
      "name": "listTables",
      "description": "获取表信息",
      "parameters": {
        "type": "object",
        "properties": {
          "schema": {
            "type": "string",
            "description": "库名",
            "required": false
          }
        }
      }
    },
    {
      "name": "listColumns",
      "description": "根据表名获取字段信息",
      "parameters": {
        "type": "object",
        "properties": {
          "schema": {
            "type": "string",
            "description": "库名",
            "required": false
          },
          "table": {
            "type": "string",
            "description": "数据库表名",
            "required": true
          }
        }
      }
    },
    {
      "name": "readQuery",
      "description": "执行 SELECT 查询语句",
      "parameters": {
        "type": "object",
        "properties": {
          "querySql": {
            "type": "string",
            "description": "查询语句",
            "required": true
          }
        }
      }
    }
  ]
}

注意:

  • 'path/to/mcp-server-database-jdbc-*.jar' 需要替换为实际打包后的 JAR 文件路径。
  • 'mcp.jdbc.url', 'mcp.jdbc.username', 'mcp.jdbc.password' 等数据库连接信息需要在服务器端正确配置。
  • 'capabilities' 声明了服务器提供的能力,这里声明为 'tools'。
  • 'tools' 数组 (可选) 可以预先声明服务器提供的工具及其参数信息,方便 MCP 客户端理解和调用。实际使用中,MCP 客户端也可能通过服务器发现工具列表。

基本使用方法

  1. 启动 MCP 数据库工具服务器。
  2. 配置并启动 MCP 客户端,连接到该服务器。 (本仓库 不包含 MCP 客户端实现,您需要使用实现了 MCP 客户端协议的 LLM 应用或客户端工具)
  3. 在 MCP 客户端中,可以发现和调用服务器提供的数据库工具。 例如,您可以调用 'listTables' 工具获取数据库表列表,然后调用 'listColumns' 工具获取指定表的字段信息,或者使用 'readQuery' 工具执行 SQL 查询。
  4. LLM 应用可以通过 MCP 客户端与该服务器交互,利用数据库上下文信息进行更智能的应用开发。

关键词

数据库查询, SQL执行, 数据库元数据, JDBC, Spring AI

信息

分类

数据库与文件