模型上下文协议服务器

一个基于Spring Boot的模型上下文协议(MCP)服务器实现,用于AI模型与外部工具和数据源的标准化通信。

  • by tobiassteidle
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 tobiassteidle/spring-boot-sample-mcp-server

使用说明

这是一个使用Spring Boot的模型上下文协议(MCP)服务器的示例实现。该服务器旨在与模型上下文协议检查器一起使用,以进行测试和调试。它提供了一个简单的RESTneneneba API来与服务器交互,并演示了如何设置基本的SpringBoot应用程序。包括单元测试以验证服务器的功能。

📋 目录

🧠 What is MCP?

模型上下文协议(MCP)是一个开放标准,定义了人工智能模型如何与外部工具和数据源通信。它为像克劳德这样的人工智能助手创建了一种标准化的访问方式:

  • 🌐 实时信息
  • 📊 自定义数据库
  • 🔄 API和服务
  • 📁 文件系统

将MCP视为“AI的USB标准”——它提供了一个通用接口,允许任何AI模型通过一致的协议与各种工具进行交互。 将MCP与Spring Boot一起使用的好处:

  • 🔄 无缝集成:轻松地将应用程序的功能暴露给AI助手
  • 🛠️ 工具定义:使用简单注释定义自定义工具
  • 🚀 Spring Boot简洁:利用Spring的依赖注入和配置管理
  • 📈 增强的人工智能能力:让AI模型访问您组织的实时数据和服务

需求

  • Java 17+
  • 梅文
  • MCP检查员(测试可选)

例如Claude Desktop的配置

{
  "mcpServers": {
    "sample-mcp-server": {
      "command": "java",
      "args": [
        "-jar",
        "sample-mcp-server-0.0.1-SNAPSHOT.jar",
        "--port",
        "8080",
        "--host",
        "localhost"
      ],
      "env": {
        "JAVA_TOOL_OPTIONS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
      }
    }
  }
}

注: JAVA_TOOL_OPTIONS 环境变量用于设置远程调试的JVM选项。地址和端口可以根据需要更改。

💻 发展

调试

安装MCP检查器

npm -g install @modelcontextprotocol/inspector

运行MCP检查器进行测试

构建MCP服务器
mvn clean package
运行MCP检查器
npx @modelcontextprotocol/inspector \
    -e JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \
    java -jar target/sample-mcp-server-<version>-SNAPSHOT.jar \
    --port 8080 --host localhost

注: JAVA_TOOL_OPTIONS 环境变量用于设置远程调试的JVM选项。地址和端口可以根据需要更改。 现在,您可以使用MCP检查器来测试和调试您的Spring Boot MCP服务器。检查器提供了一个用户友好的界面(浏览器),用于与服务器交互并可视化交换的数据。检查器可用于向服务器发送请求、查看响应以及分析客户端和服务器之间的数据流。 要调试服务器,您可以在代码中设置断点,并使用IDE中的调试器逐步调试代码和检查变量。使用中指定的远程调试选项将调试器附加到正在运行的服务器 JAVA_TOOL_OPTIONS 环境变量。

Spring AI通过提高生产力扩展了MCP Java SDK,使构建MCP服务器变得简单 [1].

🔧 将此服务器与Claude Desktop一起使用

此示例服务器可以与Claude Desktop或支持MCP的其他AI助手集成。之后 配置服务器 在您的AI助手中:

  1. 启动此Spring Boot MCP服务器
  2. 打开Claude Desktop并在设置中启用服务器
  3. 向Claude提出需要此服务器提供的工具的问题
  4. 观看Claude无缝地使用服务器访问数据并执行操作