
MCP 服务开发
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
