人工智能(九)- Spring AI MCP客户端开发

人工智能(八)- Spring AI 开发MCP Server(Streamable HTTP)完整开发与测试

一、MCP 客户端

上一篇我们开发了MCP Server,现在来开发MCP Client。

通过 MCP Client 向服务器请求工具列表,服务器返回所有工具的详细信息,客户端可直接用于 function calling。

步骤一:引入pom 依赖
xml 复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-client</artifactId>
</dependency>
步骤二:开发 McpClient
java 复制代码
package org.devpotato.client;

import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.McpSyncClient;
import io.modelcontextprotocol.client.transport.HttpClientStreamableHttpTransport;
import io.modelcontextprotocol.spec.McpSchema;

import java.time.Duration;
import java.util.HashMap;

public class McpClient {

    public static void main(String[] args) {
        // 创建Streamable HTTP Client
        McpSyncClient httpClient = createStreamableHttpClient();

        McpSchema.ListToolsResult toolsResult = httpClient.listTools();
        System.out.println("工具列表: " + toolsResult);

        McpSchema.CallToolRequest request = McpSchema.CallToolRequest.builder()
                .name("getWeather")
                .arguments(new HashMap<>() {{
                    put("city", "西安");
                }})
                .build();

        McpSchema.CallToolResult result = httpClient.callTool(request);
        System.out.println("工具列表调用结果: " + result);
    }

    /**
     * 创建Streamable HTTP类型的Client
     */
    private static McpSyncClient createStreamableHttpClient() {
        HttpClientStreamableHttpTransport transport = HttpClientStreamableHttpTransport
                .builder("http://localhost:8080")
                .endpoint("/mcp")
                .build();

        McpSyncClient client = McpClient.sync(transport)
                .clientInfo(new McpSchema.Implementation("http-client", "1.0.0"))
                .requestTimeout(Duration.ofSeconds(60))
                .build();

        client.initialize();

        return client;
    }
}

运行结果

csharp 复制代码
工具列表调用结果: CallToolResult[content=[TextContent[annotations=null, text="城市: 西安, 温度: 25°C, 天气: 晴", meta=null]], isError=false, structuredContent=null, meta=null]

二、MCP SDK 与 OpenAI SDK 协作流程

MCP SDK 与 OpenAI SDK 协作流程:

  • 客户端用 MCP SDK 连接服务器,获取工具列表。
  • 客户端用 OpenAI SDK 把用户输入和工具列表发给大模型。
  • 大模型(通过 OpenAI SDK)决定是否需要调用工具。
  • 如果需要,客户端用 MCP SDK 远程调用服务端工具,拿到结果。
  • 客户端再用 OpenAI SDK 把工具结果发给大模型,生成最终回复。

随着MCP协议的普及,越来越多的AI IDE和平台支持作为MCP客户端,极大提升了工具集成和用户体验。现代AI IDE如Cursor、Claude Desktop等为开发者和非开发者都带来了全新的交互体验。

除了Cursor,Claude Desktop、Windsurf、LibreChat、MCP Inspector等也都可以作为MCP客户端。它们支持自动发现和调用MCP服务器上的工具,适合不同的团队协作和AI工作流场景。未来还会有更多AI IDE和平台支持MCP协议,MCP工具生态将更加繁荣。

相关推荐
你不是我我1 天前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
雪碧聊技术1 天前
大模型爆火!Java后端如何抓住Agent全栈开发的风口
java·大模型·agent·全栈开发
逻辑驱动的ken1 天前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 天前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D1 天前
Java 面向对象高级 接口
java·开发语言
逸Y 仙X1 天前
文章二十七:ElasticSearch ES查询模板(Search Template)高效复用实战
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
二哈赛车手1 天前
新人笔记---Spring AI的Advisor以及其底层机制讲解(涉及源码),包含一些遇见的Spring AI的Advisor缺陷问题的解决方案
java·人工智能·spring boot·笔记·spring
AC赳赳老秦1 天前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw