Token导航 LogoToken导航

MCP Server · 数据服务

Spring SQL Generator MCP Client

一个基于Spring Boot的应用,通过MCP服务器和LLM(如GPT-4)将自然语言提示转换为SQL查询。

未说明官方级别未说明来源级核验工具 0
数据库工具Java自然语言处理

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
satyavenik
提供方
satyavenik

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Spring SQL Generator MCP Client 属于数据服务类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前先确认权限范围。

分类

数据服务

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

用于SQL生成的Spring Boot MCP客户端

一个Spring Boot应用程序,作为客户端与模型上下文协议(MCP)服务器交互,使用大型语言模型(LLM)从自然语言提示生成SQL查询。

📋 目录

🎯 概述

此应用程序提供了一个REST API,用于:

  1. 接受用户的自然语言提示
  2. 从MCP服务器获取数据库架构上下文
  3. 使用LLM(GPT-4)根据提示和上下文生成SQL查询
  4. 返回生成的带有相关上下文的SQL查询

🏗️ 建筑

User/Client
    ↓
Spring Boot MCP Client (This Application - Port 8081)
    ↓
    ├─→ MCP Server (Port 8080) - Provides database schema context
    │
    └─→ OpenAI GPT-4 - Generates SQL from prompt + context

组件

  • SqlGenerator控制器:REST端点处理HTTP请求
  • SQL生成器服务:编排SQL生成的业务逻辑
  • Mcp客户端:用于与MCP服务器通信的客户端(JSON-RPC 2.0)
  • 聊天客户端:用于调用OpenAI的LLM API的客户端
  • 模型:使用Swagger文档请求/响应DTO

🔄 运作原理

逐步过程

  1. 用户发送提示 通过REST API:
   POST /api/sql/generate
   Body: { "prompt": "Get all users who registered in the last 30 days" }
  1. 服务层接收请求 和电话 SqlGeneratorService.generateSqlQuery()
  1. MCP客户端获取上下文 从MCP服务器:

- 发送 resources/list 向MCP服务器发出请求 - 接收可用数据库架构资源列表 - 对于每种资源,发送 resources/read 请求 - 收集所有架构信息作为上下文

  1. 聊天客户端呼叫LLM:

- 将用户提示与获取的上下文相结合 - 向OpenAI GPT-4发送特定指令 - 接收生成的SQL查询

  1. 返回响应 对于用户:

- 生成的SQL查询 - 使用的数据库架构上下文

✅ 先决条件

  • Java 17或更高版本
  • Maven 3.6+或Gradle 7.0+
  • MCP服务器在端口8080(或配置的端口)上运行
  • OpenAI API密钥(用于GPT-4访问)

📦 安装

克隆存储库

git clone 
cd spring-sql-generator-mcp-client

构建项目

使用Maven:
mvn clean install
使用Gradle:
./gradlew build

⚙️ 配置

编辑 src/main/resources/application.properties:

# Application Name
spring.application.name=mcp-client

# MCP Server Configuration
mcp.server.url=http://localhost:8080/mcp

# OpenAI Configuration
openai.api-key=${OPENAI_API_KEY:your-api-key-here}
openai.model=gpt-4

# Server Port
server.port=8081

# Logging
logging.level.com.example.mcpclient=DEBUG

# Swagger UI
springdoc.swagger-ui.path=/swagger-ui.html

环境变量

设置您的OpenAI API密钥:

Windows(CMD):

set OPENAI_API_KEY=sk-your-actual-api-key

Windows(PowerShell):

$env:OPENAI_API_KEY="sk-your-actual-api-key"

Linux/Mac:

export OPENAI_API_KEY=sk-your-actual-api-key

🚀 运行应用程序

使用Maven:

mvn spring-boot:run

使用Gradle:

./gradlew bootRun

使用JAR:

java -jar target/spring-sql-generator-mcp-client-0.0.1-SNAPSHOT.jar

应用程序将于启动 http://localhost:8081

📚 API 文档

Swagger 用户界面

访问交互式API文档:

http://localhost:8081/swagger-ui.html

API终点

1.生成SQL查询

端点: POST /api/sql/generate

说明: 从自然语言提示符生成SQL查询

请求正文:

{
  "prompt": "string"
}

答复:

{
  "sqlQuery": "string",
  "context": "string"
}
2.健康检查

端点: GET /api/sql/health

说明: 检查服务是否正在运行

答复: 200 OK 带有文本“MCP客户端正在运行”

📝 请求和响应示例

示例1:简单用户查询

请求:

POST http://localhost:8081/api/sql/generate
Content-Type: application/json

{
  "prompt": "Get all users who registered in the last 30 days"
}

答复:

{
  "sqlQuery": "SELECT * FROM users WHERE registration_date >= DATE_SUB(NOW(), INTERVAL 30 DAY);",
  "context": "\n=== Database Schema - Users Table ===\nTable: users\nColumns:\n- id (INTEGER, PRIMARY KEY)\n- username (VARCHAR(255), NOT NULL)\n- email (VARCHAR(255), UNIQUE, NOT NULL)\n- registration_date (TIMESTAMP, DEFAULT CURRENT_TIMESTAMP)\n- is_active (BOOLEAN, DEFAULT TRUE)\n"
}

示例2:联接查询

请求:

POST http://localhost:8081/api/sql/generate
Content-Type: application/json

{
  "prompt": "Show all orders with customer names and total amounts for orders over $1000"
}

答复:

{
  "sqlQuery": "SELECT c.name, o.order_id, o.total_amount FROM customers c INNER JOIN orders o ON c.customer_id = o.customer_id WHERE o.total_amount > 1000;",
  "context": "\n=== Database Schema - Customers Table ===\nTable: customers\nColumns:\n- customer_id (INTEGER, PRIMARY KEY)\n- name (VARCHAR(255), NOT NULL)\n- email (VARCHAR(255))\n\n=== Database Schema - Orders Table ===\nTable: orders\nColumns:\n- order_id (INTEGER, PRIMARY KEY)\n- customer_id (INTEGER, FOREIGN KEY REFERENCES customers)\n- total_amount (DECIMAL(10,2))\n- order_date (DATE)\n"
}

示例3:聚合查询

请求:

POST http://localhost:8081/api/sql/generate
Content-Type: application/json

{
  "prompt": "Count how many products are in each category"
}

答复:

{
  "sqlQuery": "SELECT category, COUNT(*) as product_count FROM products GROUP BY category;",
  "context": "\n=== Database Schema - Products Table ===\nTable: products\nColumns:\n- product_id (INTEGER, PRIMARY KEY)\n- name (VARCHAR(255), NOT NULL)\n- category (VARCHAR(100))\n- price (DECIMAL(10,2))\n- stock_quantity (INTEGER)\n"
}

🔧 MCP服务器通信

MCP协议详细信息

应用程序通过HTTP使用JSON-RPC 2.0协议与MCP服务器通信。

1.列出可用资源

MCP对服务器的请求:

{
  "jsonrpc": "2.0",
  "method": "resources/list",
  "params": {},
  "id": "550e8400-e29b-41d4-a716-446655440000"
}

来自服务器的MCP响应:

{
  "jsonrpc": "2.0",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "result": {
    "resources": [
      {
        "uri": "schema://users",
        "name": "Users Table Schema",
        "description": "Schema definition for users table",
        "mimeType": "text/plain"
      },
      {
        "uri": "schema://orders",
        "name": "Orders Table Schema",
        "description": "Schema definition for orders table",
        "mimeType": "text/plain"
      }
    ]
  }
}
2.阅读资源内容

MCP对服务器的请求:

{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "schema://users"
  },
  "id": "550e8400-e29b-41d4-a716-446655440001"
}

来自服务器的MCP响应:

{
  "jsonrpc": "2.0",
  "id": "550e8400-e29b-41d4-a716-446655440001",
  "result": {
    "contents": [
      {
        "uri": "schema://users",
        "mimeType": "text/plain",
        "text": "Table: users\nColumns:\n- id (INTEGER, PRIMARY KEY)\n- username (VARCHAR(255), NOT NULL)\n- email (VARCHAR(255), UNIQUE)\n- registration_date (TIMESTAMP)"
      }
    ]
  }
}
3.错误响应示例

MCP错误响应:

{
  "jsonrpc": "2.0",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "error": {
    "code": -32601,
    "message": "Method not found",
    "data": {
      "method": "invalid/method"
    }
  }
}

📮 邮差收藏

导入此收藏

创建新的Postman收藏并添加以下请求:

1.生成SQL-简单查询
{
  "name": "Generate SQL - Simple User Query",
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n  \"prompt\": \"Get all users who registered in the last 30 days\"\n}"
    },
    "url": {
      "raw": "http://localhost:8081/api/sql/generate",
      "protocol": "http",
      "host": ["localhost"],
      "port": "8081",
      "path": ["api", "sql", "generate"]
    }
  },
  "response": [
    {
      "name": "Success Response",
      "status": "OK",
      "code": 200,
      "body": "{\n  \"sqlQuery\": \"SELECT * FROM users WHERE registration_date >= DATE_SUB(NOW(), INTERVAL 30 DAY);\",\n  \"context\": \"\\n=== Database Schema - Users Table ===\\nTable: users\\nColumns:\\n- id (INTEGER, PRIMARY KEY)\\n- username (VARCHAR(255), NOT NULL)\\n- email (VARCHAR(255), UNIQUE, NOT NULL)\\n- registration_date (TIMESTAMP, DEFAULT CURRENT_TIMESTAMP)\\n- is_active (BOOLEAN, DEFAULT TRUE)\\n\"\n}"
    }
  ]
}
2.生成SQL-连接查询
{
  "name": "Generate SQL - Orders with Customer Names",
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n  \"prompt\": \"Show all orders with customer names and total amounts for orders over $1000\"\n}"
    },
    "url": {
      "raw": "http://localhost:8081/api/sql/generate",
      "protocol": "http",
      "host": ["localhost"],
      "port": "8081",
      "path": ["api", "sql", "generate"]
    }
  },
  "response": [
    {
      "name": "Success Response",
      "status": "OK",
      "code": 200,
      "body": "{\n  \"sqlQuery\": \"SELECT c.name, o.order_id, o.total_amount FROM customers c INNER JOIN orders o ON c.customer_id = o.customer_id WHERE o.total_amount > 1000;\",\n  \"context\": \"\\n=== Database Schema - Customers Table ===\\nTable: customers\\nColumns:\\n- customer_id (INTEGER, PRIMARY KEY)\\n- name (VARCHAR(255), NOT NULL)\\n- email (VARCHAR(255))\\n\\n=== Database Schema - Orders Table ===\\nTable: orders\\nColumns:\\n- order_id (INTEGER, PRIMARY KEY)\\n- customer_id (INTEGER, FOREIGN KEY REFERENCES customers)\\n- total_amount (DECIMAL(10,2))\\n- order_date (DATE)\\n\"\n}"
    }
  ]
}
3.生成SQL聚合查询
{
  "name": "Generate SQL - Product Count by Category",
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n  \"prompt\": \"Count how many products are in each category\"\n}"
    },
    "url": {
      "raw": "http://localhost:8081/api/sql/generate",
      "protocol": "http",
      "host": ["localhost"],
      "port": "8081",
      "path": ["api", "sql", "generate"]
    }
  },
  "response": [
    {
      "name": "Success Response",
      "status": "OK",
      "code": 200,
      "body": "{\n  \"sqlQuery\": \"SELECT category, COUNT(*) as product_count FROM products GROUP BY category;\",\n  \"context\": \"\\n=== Database Schema - Products Table ===\\nTable: products\\nColumns:\\n- product_id (INTEGER, PRIMARY KEY)\\n- name (VARCHAR(255), NOT NULL)\\n- category (VARCHAR(100))\\n- price (DECIMAL(10,2))\\n- stock_quantity (INTEGER)\\n\"\n}"
    }
  ]
}
4.生成SQL-复杂筛选器
{
  "name": "Generate SQL - Active Users with Recent Orders",
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n  \"prompt\": \"Find all active users who have placed at least 3 orders in the last 6 months\"\n}"
    },
    "url": {
      "raw": "http://localhost:8081/api/sql/generate",
      "protocol": "http",
      "host": ["localhost"],
      "port": "8081",
      "path": ["api", "sql", "generate"]
    }
  },
  "response": [
    {
      "name": "Success Response",
      "status": "OK",
      "code": 200,
      "body": "{\n  \"sqlQuery\": \"SELECT u.user_id, u.username, u.email, COUNT(o.order_id) as order_count FROM users u INNER JOIN orders o ON u.user_id = o.user_id WHERE u.is_active = TRUE AND o.order_date >= DATE_SUB(NOW(), INTERVAL 6 MONTH) GROUP BY u.user_id, u.username, u.email HAVING COUNT(o.order_id) >= 3;\",\n  \"context\": \"\\n=== Database Schema ===\\nMultiple tables with relationships...\\n\"\n}"
    }
  ]
}
5.健康检查
{
  "name": "Health Check",
  "request": {
    "method": "GET",
    "header": [],
    "url": {
      "raw": "http://localhost:8081/api/sql/health",
      "protocol": "http",
      "host": ["localhost"],
      "port": "8081",
      "path": ["api", "sql", "health"]
    }
  },
  "response": [
    {
      "name": "Success Response",
      "status": "OK",
      "code": 200,
      "body": "MCP Client is running"
    }
  ]
}

cURL示例

# Example 1: Simple Query
curl -X POST http://localhost:8081/api/sql/generate \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Get all users who registered in the last 30 days"}'

# Example 2: Join Query
curl -X POST http://localhost:8081/api/sql/generate \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Show all orders with customer names and total amounts for orders over $1000"}'

# Example 3: Aggregate Query
curl -X POST http://localhost:8081/api/sql/generate \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Count how many products are in each category"}'

# Example 4: Health Check
curl http://localhost:8081/api/sql/health

🐛 故障排除

常见问题

1.MCP服务器连接失败

错误: Error fetching context from MCP server: Connection refused

解决方案:

  • 确保MCP服务器在配置的端口上运行(默认值:8080)
  • 检查 mcp.server.url 在 application.properties
  • 验证网络连接
2.OpenAI API关键问题

错误: 401 Unauthorized 来自OpenAI

解决方案:

  • 验证您的 OPENAI_API_KEY 环境变量设置正确
  • 请检查您的API密钥是否有效并且有足够的信用
  • 确保钥匙以开头 sk-
3.空上下文响应

错误: No context available from resources

解决方案:

  • 验证MCP服务器是否正确配置了数据库架构资源
  • 检查MCP服务器日志是否有错误
  • 使用JSON-RPC请求直接测试MCP服务器
4.端口已在使用中

错误: Port 8081 is already in use

解决方案:

  • 更改端口 application.properties: server.port=8082
  • 或者使用端口8081停止进程

调试模式

启用详细日志记录:

logging.level.com.example.mcpclient=DEBUG
logging.level.org.springframework.web.reactive.function.client=DEBUG

📄 许可证

\[在此处添加您的许可证信息\]

🤝 贡献

\[在此处添加贡献指南\]

📧 联系

\[在此处添加联系信息\]

______________________________________________________________________

内置: Spring Boot 3.2.1、Java 17、WebFlux、OpenAI GPT-4、MCP协议

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

SQL生成Java本地部署自然语言处理数据库工具LLM集成SpringBoot应用

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Spring SQL Generator MCP Client

MCP World · 本页

0未说明未标注1 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Spring SQL Generator MCP Client 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Spring SQL Generator MCP Client 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Spring SQL Generator MCP Client 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Spring SQL Generator MCP Client 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Spring SQL Generator MCP Client 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP