返回 MCP 目录
public公开dns本地运行

jooq-mcp

一个基于Spring Boot和Spring AI的MCP服务器,提供jOOQ文档查询工具,支持本地文档存储、全文搜索和代码示例提取,可通过Docker或Fly.io部署。

article

README

🚀 jOOQ MCP 服务器

jOOQ MCP 服务器是一个基于模型上下文协议(MCP)的服务器,它为 AI 模型提供了访问 jOOQ 文档的途径。这个 Spring Boot 应用程序借助 Spring AI 将 jOOQ 文档作为 MCP 工具公开,使 AI 系统能够查询和获取有关 jOOQ 特性、SQL 示例和最佳实践的信息。

🚀 快速开始

前提条件

  • Java 21 或更高版本
  • Maven 3.6 或更高版本

运行应用程序

  1. 克隆仓库
git clone <repository-url>
cd jooq-mcp
  1. 构建项目
./mvnw clean install
  1. 运行应用程序
./mvnw spring-boot:run

MCP 服务器将启动并可供 MCP 客户端连接。

Docker 部署

  1. 构建 JAR 文件
./mvnw clean package
  1. 构建 Docker 镜像
docker build -t jooq-mcp .
  1. 运行 Docker 容器
docker run -p 8080:8080 jooq-mcp

Fly.io 部署

此应用程序已配置为可在 Fly.io 上部署:

  1. 安装 Fly CLI 并进行身份验证
brew install flyctl  # 或使用你偏好的安装方法
fly auth login
  1. 部署应用程序
./mvnw clean package
fly deploy

该应用程序在 /actuator/health 处包含健康检查,并配置了自动扩展功能。

与 MCP 客户端配合使用

此服务器可与任何兼容 MCP 的 AI 客户端配合使用。服务器公开的工具允许 AI 模型:

  • 通过关键字搜索 jOOQ 文档
  • 获取特定的 SQL 示例和代码片段
  • 访问特定数据库的配置信息
  • 获取代码生成设置的指导
  • 查找有关 jOOQ 高级特性的信息

配置

可通过 application.properties 对应用程序进行配置:

# MCP 服务器配置
spring.ai.mcp.server.name=jooq-documentation-mcp
spring.ai.mcp.server.version=1.0.0
spring.ai.mcp.server.type=SYNC
spring.ai.mcp.server.capabilities.tool=true

# 缓存配置
spring.cache.type=caffeine
spring.cache.caffeine.spec=maximumSize=100,expireAfterWrite=1h

# jOOQ 文档爬虫配置
jooq.documentation.crawler.max-depth=4
jooq.documentation.crawler.max-urls-per-section=100
jooq.documentation.crawler.timeout-ms=10000
jooq.documentation.crawler.cache-duration-hours=24

# 服务器配置 - SSE 缓冲区设置
server.tomcat.max-http-response-header-size=64KB
server.tomcat.max-swallow-size=10MB

使用示例

连接到 MCP 客户端后,你可以提出以下问题:

  • “如何在 jOOQ 中创建 SELECT 语句?”
  • “展示 jOOQ INSERT 操作的示例”
  • “jOOQ 支持哪些数据库?”
  • “如何配置 jOOQ 代码生成?”
  • “如何在 jOOQ 中使用事务?” 服务器将获取相关文档并提供带有代码示例的详细答案。

✨ 主要特性

MCP 服务器提供以下工具:

  • searchDocumentation:搜索 jOOQ 文档中的特定主题
  • getSqlExamples:获取特定操作的 SQL 查询构建示例
  • getCodeGenerationGuide:检索 jOOQ 代码生成文档
  • getDatabaseSupport:获取特定数据库的支持信息
  • getQueryDslReference:获取特定语句类型的 Query DSL 参考
  • getAdvancedFeatures:访问 jOOQ 高级特性的文档

🔧 技术细节

架构

该应用程序由以下部分组成:

  • JooqDocumentationService:主服务类,带有用于 MCP 集成的 @Tool 注解方法
  • LocalJooqDocumentationService:提供本地文档索引和基于 TF-IDF 评分的全文搜索
  • InvertedIndex:实现具有相关性评分的高级全文搜索功能
  • JooqDocumentationCrawler:爬取并获取 jOOQ 文档以进行本地存储
  • JooqDocumentationFetcher:处理文档内容的解析和提取
  • McpConfiguration:用于 MCP 工具注册的 Spring 配置
  • 缓存:基于 Caffeine 的缓存以提高性能

关键特性

  • 本地文档存储:文档本地存储在 src/main/resources/docs/ 中,以便更快地访问
  • 全文搜索:使用 TF-IDF 评分进行高级搜索,以提高相关性
  • 高效索引:内存中的倒排索引,用于快速文档检索
  • 代码示例提取:自动提取和分类代码示例

🧪 测试

运行测试套件:

./mvnw test

💻 开发

该应用程序使用以下技术:

  • Spring Boot 3.5.4
  • 支持 MCP 服务器的 Spring AI 1.0.0
  • 用于 HTML 解析的 JSoup
  • 用于缓存的 Caffeine 若要添加新工具,请在 JooqDocumentationService 类中创建带有 @Tool 注解的方法。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端