MCP 服务开发PDF下载

MCP 服务开发

by 编程导航 下载量 8
针对 AI 工具调用本地数据难、协议不统一的痛点,基于 Spring AI 快速搭建 MCP 服务端(STDIO/SSE 双模式),以面试鸭搜题为实战案例,实现 `@Tool` 注解一键暴露业务能力;客户端通过 JSON 配置自动拉起 JAR 进程,无缝对接 Claude、Cherry Studio...

MCP 服务开发保姆级教程

从零开始开发 MCP 服务

你好,我是程序员鱼皮。

有个 AI 相关的概念特别火,叫 MCP,全称模型上下文协议(Model Context Protocol)。这是由 Anthropic 推出的一项开放标准,目标是为大型语言模型和 AI 助手提供一个统一、标准化的接口,使 AI 能够轻松操作外部工具并完成更复杂的任务。

这篇文章,就带大家速通 MCP,了解其核心概念,并且以我们给自己产品 面试鸭 开发的面试搜题 MCP 服务为例,带大家实战 MCP 服务端和客户端的开发!

开源指路:https://github.com/yuyuanweb/mcp-mianshiya-server

一、MCP 为啥如此重要?

以前,如果想让 AI 处理我们的数据,基本只能靠预训练数据或者上传数据,既麻烦又低效。而且,就算是很强大的 AI 模型,也会有数据隔离的问题,无法直接访问新数据。

现在,MCP 解决了这个问题,它突破了模型对静态知识库的依赖,使其具备更强的动态交互能力,能够像人类一样调用搜索引擎、访问本地文件、连接 API 服务,甚至直接操作第三方库。

更重要的是,只要大家都遵循 MCP 这套协议,AI 就能无缝连接本地数据、互联网资源、开发工具、生产力软件,甚至整个社区生态,实现真正的 "万物互联",这将极大提升 AI 的协作和工作能力,价值不可估量。

二、MCP 总体架构

MCP 的核心是 "客户端 - 服务器" 架构,其中 MCP 客户端主机可以连接到多个服务器。客户端主机是指希望通过 MCP 访问数据的程序,比如 Claude Desktop、IDE 或 AI 工具。

三、MCP 开发

MCP 的使用分为两种模式,STDIO 模式(本地运行)和 SSE 模式(远程服务)。

MCP 服务端(基于 stdio 标准流)

基于 stdio 的实现是最常见的 MCP 客户端方案,它通过标准输入输出流与 MCP 服务器进行通信。特别适用于本地部署的 MCP 服务器。

1、引入依赖

▼
xml
复制代码
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId> <version>1.0.0-M6</version> </dependency>

2、配置 MCP 服务端

▼
yaml
复制代码
spring: application: name: mcp-server main: web-application-type: none # 必须禁用web应用类型 banner-mode: off # 禁用banner ai: mcp: server: stdio: true # 启用stdio模式 name: mcp-server # 服务器名称 version: 0.0.1 # 服务器版本

3、实现 MCP 工具

@Tool 是 Spring AI MCP 框架中用于快速暴露业务能力为 AI 工具的核心注解。下面是一段示例代码:

▼
java
复制代码
/** * 根据搜索词搜索面试鸭面试题目 */ @Tool(description = "根据搜索词搜索面试鸭面试题目") public String callMianshiya(String searchText) { // 执行从面试鸭数据库中搜索题目的逻辑 System.out.println("用户要搜索:" + searchText); }

4、注册 MCP 工具

▼
java
复制代码
@Bean public ToolCallbackProvider serverTools(MianshiyaService mianshiyaService) { return MethodToolCallbackProvider.builder() .toolObjects(mianshiyaService) .build(); }

5、运行服务端

▼
bash
复制代码
mvn clean package -DskipTests

MCP 客户端(基于 stdio 标准流)

1、引入依赖

▼
xml
复制代码
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId> <version>1.0.0-M6</version> </dependency>

2、配置 MCP 服务器

▼
yaml
复制代码
spring: ai: mcp: client: stdio: servers-configuration: classpath:/mcp-servers-config.json

其中 mcp-servers-config.json 的配置如下:

▼
json
复制代码
{ "mcpServers": { "mianshiyaServer": { "command": "java", "args": [ "-Dspring.ai.mcp.server.stdio=true", "-Dspring.main.web-application-type=none", "-Dlogging.pattern.console=", "-jar", "/yourPath/mcp-server-0.0.1-SNAPSHOT.jar" ] } } }

3、初始化聊天客户端

▼
java
复制代码
@Bean public ChatClient initChatClient(ChatClient.Builder chatClientBuilder, ToolCallbackProvider mcpTools) { return chatClientBuilder.defaultTools(mcpTools).build(); }

4、接口调用

▼
java
复制代码
@PostMapping(value = "/ai/answer") pub
下载 APP