spring ai 开发MCP服务器(stdio)

spring ai 开发MCP服务器(stdio)

一、什么是MCP(Model Context Protocol)

MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
spring ai 官网介绍 https://docs.spring.io/spring-ai/reference/1.0/api/mcp/mcp-overview.html
看到网上有很多node和python写的MCP服务器,我突发奇想,java是不是也可以写,就去研究了一下。

二、依赖及插件引入pom

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M7</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

M7版本在我写博客的时候 webmvc和sse的功能似乎存在问题,并不能正常调用。JDK注意要使用17及以上的,官方的sdk就是需要17及以上的。

三、启动类编写注册工具

@SpringBootApplication
public class AiApplication {

    public static void main(String[] args) {
        SpringApplication.run(AiApplication.class, args);
    }


//注册工具
    @Bean
    public ToolCallbackProvider CalculateTools (Calculate calculate) {
        return MethodToolCallbackProvider.builder().toolObjects(calculate).build();
    }



}

服务类

@Service
public class Calculate {
    //工具示例
    @Tool(description = "加法计算器")
    public String add(
            @ToolParam(description = "加数1", required = false) double a,
            @ToolParam(description = "加数2", required = false) double b
    ) {
        return String.valueOf(a + b);
    }


}

yaml文件

spring:
  ai:
    mcp:
      server:
        name: stdio-mcp-server
        version: 1.0.0
        type: SYNC

这样一个简单的MCP服务端就完成了
直接maven打包

接下去用cherrystudio进行测试
https://cherry-ai.com/
根据cherry的官网先配置好MCP的环境

MCP服务器配置如下图所示

在这里插入图片描述
cherry似乎不会去读系统环境变量直接绝对路径使用就行
C:\Users\49651.jdks\corretto-17.0.14\bin\java

-jar
-Dfile.encoding=UTF-8
E:\owind-git\ai_mcp_server\target\aicode-0.0.1-SNAPSHOT.jar
选择刚刚配置的MCP服务器
在这里插入图片描述
结果:
在这里插入图片描述
这个MCP实现的是一个简单的加法功能,可以看到大模型正确的去调用了这个MCP

### Spring与阿里云MCPAI应用程序中的集成 Spring框架及其生态系统提供了丰富的工具集来构建分布式微服务架构,而阿里云MCP(Microservice Control Plane)则专注于为企业提供全面的服务治理能力。两者结合可以显著提升AI应用开发效率和服务质量。 #### 使用Spring Boot简化AI应用开发 通过Spring Boot自动配置特性,开发者能够快速搭建起基于Java的应用程序骨架结构[^1]。对于机器学习模型部署而言,这意味着更少的手动设置工作量以及更高的灵活性: ```java @SpringBootApplication public class AiApplication { public static void main(String[] args) { SpringApplication.run(AiApplication.class, args); } } ``` #### 利用Alibaba Cloud MCP实现高效服务管理 针对大规模生产环境下的复杂需求场景,借助于阿里云MCP所提供的流量控制、熔断降级等功能模块,可有效保障线上业务稳定运行的同时支持弹性伸缩机制[^2]。具体到AI领域,则体现在以下几个方面: - **灰度发布**:允许新版本逐步替换旧版API接口,在不影响现有用户体验的前提下完成迭代升级; - **限流策略**:防止突发请求洪峰冲击导致系统崩溃,特别适用于预测类高并发调用场合; - **链路追踪**:配合Jaeger/Zipkin等开源组件记录每一次跨服务交互过程,便于定位性能瓶颈并优化整体响应时间; #### 实现端到端的安全性和可观测性 为了确保整个系统的安全性及透明度,建议采用如下措施加强防护力度: - 集成OAuth2.0认证授权协议保护敏感数据访问权限; - 开启日志审计功能跟踪异常行为模式变化趋势; - 结合Prometheus+Grafana监控平台实时展示各项指标状态图表。 综上所述,利用Spring生态体系搭配阿里云MCP不仅能满足现代企业对智能化转型过程中提出的多样化诉求,而且有助于打造更加健壮可靠的云端基础设施底座。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值