模型上下文协议服务器

Spring MCP Server是一个基于Spring Boot的模型上下文协议服务器,用于在数据源和AI工具之间建立安全双向连接。

  • by deepanshu-rawat6
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 deepanshu-rawat6/spring_mcp_server

使用说明

Spring MCP服务器

模型上下文协议是一个开放标准,使开发人员能够在其数据源和AI驱动的工具之间建立安全的双向连接。 该架构很简单:开发人员可以通过MCP服务器公开他们的数据,也可以构建连接到这些服务器的AI应用程序(MCP客户端)。

先决条件

  • Java 21
  • Maven 3.9.9
  • 弹簧靴3.4.4
  • 春季AI 0.4.0
  • Spring模型上下文协议服务器
  • Claude桌面应用程序

入门指南

在这个例子中,我们将创建一个简单的Spring Boot应用程序,作为MCP服务器。

1.创建Spring Boot应用程序

使用Spring Initializr或您喜欢的方法创建新的Spring Boot应用程序。 您可以使用以下依赖项:

  • Spring模型上下文协议服务器

创建记录

创建一个记录类,该类将表示您希望通过MCP服务器公开的信息。

package org.sehn.spring_mcp;

public record Info(String title, String url) {
}

创建服务

创建一个服务类,该类将提供您希望通过MCP服务器公开的信息。

package org.sehn.spring_mcp;

import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class InfoService {

    private static final Logger logger = LoggerFactory.getLogger(InfoService.class);

    private List<Info> information = new ArrayList<>();

    @Tool(name = "dr_get_information", description = "Get a list of information about Deepanshu Rawat")
    public List<Info> getInformation() {
        return information;
    }

    @Tool(name = "dr_get_info", description = "Get a specific information about Deepanshu Rawat")
    public Info getInfo(String title) {
        return information.stream().filter(info -> info.title().equals(title)).findFirst().orElse(null);
    }

    @PostConstruct
    public void init() {
        information.addAll(List.of(
                new Info("Portfolio", "https://bento.me/deepanshu-rawat6"),
                new Info("GitHub", "https://github.com/deepanshu-rawat6"),
                new Info("LinkedIn", "https://www.linkedin.com/in/deepanshu-rawat6/"),
                new Info("Twitter", "https://twitter.com/deepanshuurawat")
        ));


    }
}

创建工具回调

在 SpringMCPApplication 或者您的主应用程序类,创建一个工具回调来处理来自MCP服务器的请求。

    @Bean
    public List<ToolCallback> deepanshuTools(InfoService infoService) {
        return List.of(ToolCallbacks.from(infoService));
    }

添加配置

创建一个配置类来配置MCP服务器。

spring.application.name=spring_mcp
spring.main.web-application-type=none
spring.ai.mcp.server.name=spring_mcp
spring.ai.mcp.server.version=0.0.1


spring.main.banner-mode=off
logging.pattern.console=

2.构建应用程序

只需运行以下命令即可构建应用程序:

mvn clean package -DskipTests

3.进一步配置

现在,为了使用MCP服务器,您需要在您的 claude_desktop_config.json:

{
    "mcpServers": {
        "<name_of_the_mcp_server>": {
            "command": "java",
            "args": [
                "-jar",
                "<Path_of_the_jar_file_created_after_building>"
            ]
        }
    }
}

替换 <name_of_the_mcp_server> 使用您的MCP服务器的名称和 <Path_of_the_jar_file_created_after_building> 其中包含构建应用程序后创建的jar文件的路径。

例如,我的MCP服务器的名称是 spring_mcp.

4.测试MCP服务器

现在,开始 Claude Desktop 提示区域下方将出现一些新内容:

已安装的MCP服务器

可用的MCP工具

现在,在点击提示后,例如: Get me the information about Deepanshu Rawat,您将收到以下警报 third-party 正在使用的工具,只需接受当前聊天的提醒。 然后你会得到这样的回应: