AI上下文服务模板

一个基于Spring Boot的AI上下文服务模板,提供从PostgreSQL数据库检索联系人和地址信息的功能。

  • by Nueva-Innovation-Labs
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 Nueva-Innovation-Labs/ai-mcp-server-java-template-seed

使用说明

ai-mcp服务器java模板种子

MCP服务器Java模板孵化-Spring引导

https://start.spring.io/

🚀 AI MCP服务器Java模板种子

此项目是一个Spring Boot应用程序,充当 AI上下文服务 使用Spring AI MCP(模型上下文提供者)模式。它公开了两个函数,用于使用JPA从PostgreSQL数据库中检索联系人和地址信息。


📘 教程

有关此MCP服务器的概念、设置和测试的分步指南,请参阅教程:


📋 1.表格信息

该应用程序使用两个主表来存储客户数据。这些表由Spring Data JPA基于 Contact 和 Address 实体。

表名称 实体 描述 关键字段
contacts Contact.java 存储主要联系方式。 contact_id (PK), email (唯一)
addresses Address.java 存储链接到联系人的物理地址详细信息。 address_id (PK), contact_id (FK)

🔍 提供AI上下文功能

这 ContactContextService 向AI模型公开两个函数:

函数名称 描述 参数 用途
getContactInfo 检索联系人详细信息(姓名、电子邮件、电话) email (字符串) 联系信息上下文
getContactAddresses 检索特定联系人的地址 contactId (长) 地址信息上下文

🛠️ 2.如何在本地设置

先决条件

  • Java 17+
  • 梅文
  • Docker和Docker Compose
  • 邮差(API测试用)

第一步:使用Docker设置数据库

  1. 确保你有 docker-compose.yaml 和 db_init_user_only.sql 项目根目录中的文件。

  2. 运行Docker Compose命令启动PostgreSQL容器:

    docker-compose up -d
    
  3. 数据库将在以下时间运行 localhost:5432。应用程序配置为使用以下凭据进行连接:

    • 网址: jdbc:postgresql://localhost:5432/ai_database
    • 用户名: [username]
    • 密码: [password]

步骤2:初始化数据库架构和数据

  1. 连接到正在运行的PostgreSQL容器(例如,使用 psql 或GUI工具)。
  2. 跑吧 db_init.sql 创建脚本 contacts 和 addresses 桌子。
  3. Spring Boot应用程序在启动时将使用 DatabaseSeeder.java 组件到 自动生成1000条记录 对两者 contacts 和 addresses 桌子,根据要求。

▶️ 3.如何跑步

第一步:构建项目

使用Maven编译和打包应用程序:

mvn clean install

步骤2:运行Spring Boot应用程序

执行打包的JAR文件:

mvn spring-boot:run
# OR
# java -jar target/ai-mcp-server-java-template-seed-0.0.1-SNAPSHOT.jar

应用程序将在端口上启动 8080The DatabaseSeeder 将运行,确认日志中已创建1000条记录。

步骤3:使用Postman测试上下文函数

  1. 导入提供的 ai-mcp-context-postman.json 文件到邮递员。

  2. 使用导入的请求来测试AI上下文函数:

    • 测试 getContactInfo:

      • 请求正文示例: {"name": "getContactInfo", "arguments": {"email": "user1@example.com"}}
      • 预期结果:一个包含联系人详细信息的JSON对象 user1@example.com.
    • 测试 getContactAddresses:

      • 请求正文示例: {"name": "getContactAddresses", "arguments": {"contactId": 1}}
      • 预期结果:ID为的联系人的Address对象的JSON数组 1.

这确认了该服务正在正确地从PostgreSQL数据库中检索数据,并通过Spring AI MCP服务器端点将其公开。

在IDE中启用注释处理

如果您的模型类使用 @Data (或类似的Lombok注释),您必须在IDE中启用注释处理,以便在编译前生成方法。

🛠️ 修复IntelliJ IDEA:

  1. 首选 设置/首选项.
  2. 导航至 构建、执行、部署 -> 编译器 -> 注解处理器.
  3. 确保 “启用注释处理” 复选框为 已检查.
  4. 应用更改。

🛠️ 最后一步:重建项目

启用注释处理并应用设置后,必须强制IDE重新索引项目:

  1. 在IntelliJ IDEA中,转到 文件 -> 使缓存无效。..
  2. 选择 “无效并重新启动”.
  3. IDE重新启动后,执行 重建项目 (构建->重建项目)。

此过程将强制IDE运行Lombok处理器,该处理器将生成缺失的方法并解决中的所有17个“找不到符号”错误 DatabaseSeeder.java.

此工作流程图说明了如何 n8n自动化 利用a AI 代理 和那个 MCP服务器 执行客户拓展任务。

N8N自动化工作流:用于联系人检索和电子邮件的AI工具

该过程呈线性流动,其中 AI 代理 充当编排器,决定何时以及如何调用外部工具(MCP服务器)以实现其目标。

# n8n节点 说明
1 启动/Webhook触发器 工作流开始。这可以是数据库中的新记录、调度节点或直接的API调用(Webhook)。
2 人工智能代理(例如OpenAI、Anthropic) AI收到一个任务(例如,“向具有电子邮件地址的联系人发送后续电子邮件 test.user@example.com“)。它预先配置了 MCP服务器工具规范.
3 工具执行(隐含/决策) AI决定任务需要调用外部 getContactInfo 工具。它生成函数调用: {"name": "getContactInfo", "arguments": {"email": "..."}}.
4 HTTP请求(MCP服务器) 一 HTTP请求节点 (或专用的n8n Spring AI节点)被执行。它使一个 POST 向MCP服务器端点发出请求: http://localhost:8080/mcp主体包含AI生成的工具调用
5 MCP服务器响应 MCP服务器执行底层Java函数(JPA查询),从PostgreSQL检索全名和电话号码,并将JSON结果返回给n8n。
6 功能/数据提取 n8n 代码 或 集 节点处理JSON响应。, firstName, lastName, email).
7 电子邮件发件人(SMTP/SendGrid) 最后一个节点使用提取的变量(firstName, email)个性化并发送外发电子邮件。