ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ai-guide 实战:用 Spring AI 从零开发 MCP 服务,打造 AI 面试搜题工具

2026/10/4 4:16:28 拓冰建站 浏览量
ai-guide 实战:用 Spring AI 从零开发 MCP 服务,打造 AI 面试搜题工具 文档教程知识库人工智能【免费下载链接】ai-guide程序员鱼皮的 AI 资源大全 Vibe Coding 零基础教程分享 OpenClaw 保姆级教程、大模型玩法DeepSeek / GPT / Gemini / Claude / GLM、最新 AI 资讯、Prompt 提示词大全、AI 知识百科Agent Skills / RAG / MCP / A2A、AI 编程教程Harness Engineering、AI 工具用法Cursor / Claude Code / TRAE / Codex / Copilot、AI 开发框架教程Spring AI / LangChain、AI 产品变现指南帮你快速掌握 AI 技术走在时代前沿。本项目为开源文档 aiguide已升级为鱼皮 AI 导航网站项目地址https://gitcode.com/GitHub_Trending/aig/ai-guide点击查看免费下载从零开始开发 MCP 服务理解模型上下文协议的核心价值与总体架构以 Spring AI 为技术栈分别实现基于 stdio 与 SSE 的 MCP 服务端和客户端并完成 Cherry Studio 接入与 MCP.so 平台发布。MCPModel Context Protocol模型上下文协议是近年来 AI 领域最火的概念之一它由 Anthropic 推出是一套开放标准目标是给大语言模型与 AI 助手提供统一、标准化的接口让 AI 能够轻松操作外部工具、访问外部数据。本指南将以程序员鱼皮给自家产品面试鸭开发的面试搜题 MCP 服务为完整案例带你从架构原理出发走完 MCP 服务端、客户端的开发全流程并演示如何让 Claude、Cherry Studio 等智能体接入你的 MCP 服务、如何将服务发布到 MCP 应用市场。读完本文你将具备独立开发一个可被任意 MCP 客户端调用的 AI 工具服务的能力。一、MCP 为什么如此重要在 MCP 出现之前想让 AI 处理我们的数据基本只能依赖两条路一是模型的预训练数据二是手动上传数据。这两种方式既麻烦又低效——再强大的 AI 模型也存在数据隔离问题无法直接访问新数据也就无法完成查询实时题库读取本地文件调用在线 API这类动态任务。MCP 恰恰解决了这个问题。它突破了模型对静态知识库的依赖让 AI 具备更强的动态交互能力能够像人类一样调用搜索引擎、访问本地文件、连接 API 服务甚至直接操作第三方库。更进一步只要大家都遵循 MCP 这一套协议AI 就能无缝连接本地数据、互联网资源、开发工具、生产力软件乃至整个社区生态实现真正的万物互联极大提升 AI 的协作和工作能力。从开发模式演进的角度看这一变化也符合 AI 应用开发的整体趋势。仓库中的 主流 AI 应用开发模式 一文指出AI 应用开发已从只调 API演进到 SDK 封装、开发框架、低代码平台等多种模式而 MCP 正是连接应用与外部工具/数据这一环节的标准化桥梁。二、MCP 总体架构MCP 的核心是客户端-服务器架构其中 MCP 客户端主机可以同时连接到多个服务器。三个关键角色各司其职Host客户端主机希望通过 MCP 访问数据的程序比如 Claude Desktop、IDE 或各类 AI 工具。它是用户交互的入口。ClientMCP 客户端内嵌于 Host 中负责与对应的 MCP Server 建立连接、发起调用请求。ServerMCP 服务器暴露数据资源、工具函数Tools和提示模板Prompts的服务端真正执行具体操作并返回结果。仓库中的行业科普文章 Model Context Protocol看这一篇就够了 用一个日常场景把这条调用链讲得很清楚假设你正在使用 Claude DesktopHost询问我桌面上有哪些文档——Claude 模型决定需要访问文件系统时Host 内置的 MCP Client 被激活连接文件系统 MCP ServerServer 执行扫描并返回文档列表模型再结合结果生成最终回答。整条链路即用户问题 → Host → 模型 → 需要外部信息 → MCP Client 连接 → MCP Server → 执行操作 → 返回结果 → 模型生成回答 → 展示给用户。这种架构设计带来一个关键收益模型通过工具的结构化描述prompt来选择调用哪个工具而非依赖特定平台的专有函数调用格式。从该文对官方 Python SDK 客户端示例的源码分析可以推断客户端会将所有工具的 name、description、参数 schema 格式化为文本注入 system prompt模型据此决定是否调用、调用哪个、传什么参数工具执行结果会被重新发回给模型用于生成最终回复。这也意味着精心编写工具的名称、docstring 和参数说明直接影响模型选工具的正确率——这一点在后文Tool注解的编写中会再次体现。三、MCP 服务端开发基于 stdio 标准流MCP 的使用分为两种模式STDIO 模式本地运行和SSE 模式远程服务。基于 stdio 的实现是最常见的 MCP 客户端方案它通过标准输入输出流与 MCP 服务器通信特别适用于本地部署的 MCP 服务器。本节以 Java Spring AI 为例逐步搭建一个根据搜索词查询面试题目的 MCP 服务端。3.1 引入依赖在 Maven 的pom.xml中引入 Spring AI 提供的 MCP 服务端 Starterdependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-mcp-server-spring-boot-starter/artifactId version1.0.0-M6/version /dependency3.2 配置 MCP 服务端在application.yml中完成服务端配置。注意三个关键点必须禁用 Web 应用类型stdio 模式下服务以进程方式运行不对外提供 HTTP 端口、关闭 Banner、开启 stdio 模式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 # 服务器版本其中spring.ai.mcp.server.name和spring.ai.mcp.server.version会被 MCP 协议用于握手阶段的服务标识客户端如 Claude、Cherry Studio在工具列表中展示的名称即来源于此。3.3 实现 MCP 工具Tool是 Spring AI MCP 框架中用于快速暴露业务能力为 AI 工具的核心注解。被注解的方法会由框架自动扫描并将其方法名、注解描述与参数 schema 注册为该 MCP Server 提供的一个工具。下面是一段示例代码/** * 根据搜索词搜索面试鸭面试题目 */ Tool(description 根据搜索词搜索面试鸭面试题目) public String callMianshiya(String searchText) { // 执行从面试鸭数据库中搜索题目的逻辑 System.out.println(用户要搜索 searchText); }结合前面提到的工具选择原理可以推断这里的description就是模型决策时看到的核心文本建议写成做什么 适用场景的自然语言描述方法参数searchText会作为工具的输入参数 schema 暴露给模型因此参数命名要语义清晰必要时可通过注解补充参数说明帮助模型正确传参。3.4 注册 MCP 工具定义好工具方法后需要通过ToolCallbackProvider将业务对象中的Tool方法批量注册给 MCP 框架Bean public ToolCallbackProvider serverTools(MianshiyaService mianshiyaService) { return MethodToolCallbackProvider.builder() .toolObjects(mianshiyaService) .build(); }MethodToolCallbackProvider.builder().toolObjects(...)会扫描传入对象中的所有Tool注解方法并转换为可被 MCP 协议调用的 Tool Callback。业务服务如MianshiyaService通过 Spring 依赖注入进入 Bean 方法保证了工具实现与业务逻辑解耦。3.5 运行服务端使用 Maven 打包即可得到可直接通过 stdio 启动的 jar 包mvn clean package -DskipTests打包后生成target/mcp-server-0.0.1-SNAPSHOT.jar后续无论是自研客户端还是第三方智能体都以命令行启动该 jar 并通过标准输入输出流通信的方式接入。四、MCP 客户端开发基于 stdio 标准流服务端就绪后再开发一个 MCP 客户端应用把搜题能力接入到自己产品的 AI 对话接口中。4.1 引入依赖dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-mcp-client-spring-boot-starter/artifactId version1.0.0-M6/version /dependency4.2 配置 MCP 服务器客户端通过 JSON 配置文件声明要连接的 MCP Server 及其启动命令spring: ai: mcp: client: stdio: servers-configuration: classpath:/mcp-servers-config.json其中mcp-servers-config.json的配置如下{ mcpServers: { mianshiyaServer: { command: java, args: [ -Dspring.ai.mcp.server.stdiotrue, -Dspring.main.web-application-typenone, -Dlogging.pattern.console, -jar, /yourPath/mcp-server-0.0.1-SNAPSHOT.jar ] } } }这份配置是客户端接入的关键commandargs组合指定了如何以子进程方式拉起服务端。这里通过命令行参数覆盖了服务端的三个启动项开启 stdio 模式、禁用 Web 应用类型、清空控制台日志格式避免日志污染标准输出流防止破坏 MCP 协议通信。/yourPath/mcp-server-0.0.1-SNAPSHOT.jar需替换为第 3.5 步打包产物的实际路径。4.3 初始化聊天客户端声明一个ChatClientBean并把 MCP 工具注入为它的默认工具集Bean public ChatClient initChatClient(ChatClient.Builder chatClientBuilder, ToolCallbackProvider mcpTools) { return chatClientBuilder.defaultTools(mcpTools).build(); }defaultTools(mcpTools)将 MCP Server 暴露的所有工具挂载到 ChatClient 上——模型在回答用户问题时会自动决定是否需要调用这些搜题工具。4.4 接口调用客户端应用只需一个 HTTP 接口即可把用户问题转发给大模型并在需要时自动触发 MCP 工具调用PostMapping(value /ai/answer) public String generate(RequestBody AskRequest request) { return chatClient.prompt() .user(request.getContent()) .call() .content(); }chatClient.prompt().user(...).call().content()是 Spring AI 的链式调用 API提交用户消息 → 模型判断是否调用 MCP 工具 → 拿到工具结果 → 生成最终回答。整个工具发现、调用、结果回填的过程被框架封装业务代码里无需手工拼接任何工具调用逻辑。五、MCP 服务端开发基于 SSE远程部署除了 stdioSpring AI 还提供基于Server-Sent EventsSSE的 MCP 方案。相较于 stdio 方式SSE 更适用于远程部署的 MCP 服务器——服务端以 HTTP 服务形式常驻客户端通过网络访问无需共享本地文件系统。5.1 引入依赖SSE 方案基于 WebFlux需引入对应的 Starterdependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-mcp-server-webflux-spring-boot-starter/artifactId version1.0.0-M6/version /dependency5.2 配置 MCP 服务端与 stdio 模式不同SSE 模式需要显式配置 HTTP 端口且不需要设置spring.main.web-application-type: none因为此时 Web 容器正是通信载体server: port: 8090 spring: ai: mcp: server: name: mcp-server version: 0.0.1server.port指定对外服务端口客户端连接远程服务器时即使用该端口访问 MCP 的 SSE 端点。5.3 运行服务端打包并以 jar 方式后台常驻运行mvn clean package -DskipTests java -jar target/mcp-server-0.0.1-SNAPSHOT.jar服务启动后监听8090端口即可被本地或远程的 MCP 客户端通过 HTTP SSE 接入。从仓库中 Spring AI - AI 超级智能体项目实战 的技术选型Java 21 Spring Boot 3 Spring AI并明确将 MCP 模型上下文协议列入核心技术栈可以看出SSE 服务端正是支撑AI 智能体调用外部服务这一能力落地的关键一环。六、软件直接使用 MCP 服务除了用程序调用 MCP 服务外MCP 服务端还支持任意支持 MCP 协议的智能体助手比如 Claude、Cursor 以及 Cherry Studio 等都可以快速接入。这意味着一个 MCP 服务开发完成后既能被自研产品调用也能立刻被市面上主流的 AI 客户端复用。以 Cherry Studio 为例接入流程如下打开 Cherry Studio 的设置点击MCP 服务器点击编辑 JSON将 MCP 配置添加到配置文件中在设置 模型服务里选择一个模型勾选工具函数调用功能进入聊天页面在输入框下面勾选开启 MCP 服务。配置完成后直接在对话中尝试搜索面试题目即可生效。该搜题 MCP 服务还能进行面经解析返回多个面试题目与答案的链接。正如原教程所展示的面试鸭官方产品也已实现同类功能用于帮助用户面试复盘——这正体现了MCP 服务一次开发、多端复用的工程价值。七、上传发布 MCP 服务和开发一个 APP 一样我们也可以把做好的 MCP 服务分享到第三方 MCP 服务平台。比如MCP.so可以把它理解为 MCP 服务的应用市场。发布流程非常简单点击平台头像左侧的提交按钮填写 MCP 服务的项目地址如 GitHub 仓库地址填写服务器配置实例即类似 4.2 节mcpServers中的command与args配置点击提交。提交完成后服务即可在 MCP.so 平台被搜索到其他开发者可以直接复制配置接入使用实现 MCP 服务的社区化传播。八、在 ai-guide 中继续深入 MCP本文是 ai-guide 仓库 Vibe Coding 零基础教程 中编程学习板块的核心实战内容MCP 的学习路径可以进一步延伸想补充 MCP 的行业背景、工具选择底层原理与 Python FastMCP 实现可阅读 Model Context Protocol看这一篇就够了其中还给出了用mcp dev启动 Inspector 调试服务端、通过claude_desktop_config.json接入 Claude Desktop 的完整流程想把 MCP 服务开发能力放到真实企业级应用中落地可参考 Spring AI - AI 超级智能体项目实战该项目以 Spring AI 为核心覆盖 Tool Calling 工具调用、MCP 模型上下文协议、ReAct Agent 智能体构建等完整链路想搞清楚 MCP 在 AI 应用开发全貌中的位置可阅读 主流 AI 应用开发模式理解 HTTP API、SDK、开发框架、低代码平台与智能体模式各自的适用场景。九、小结回顾整个 MCP 服务开发流程stdio 服务端负责把业务能力通过Tool注解暴露为标准工具并以进程方式运行stdio 客户端通过 JSON 配置拉起服务端子进程把工具挂载进ChatClient让模型在对话中自动决策调用SSE 服务端则将同样的能力以 HTTP 服务形态远程开放最后通过 Cherry Studio 等智能体直接接入、通过 MCP.so 发布共享一个 MCP 服务的完整生命周期就此闭环。开发 MCP 服务的三个关键心法值得牢记描述决定效果工具的名称、description与参数 schema 就是模型的使用说明书写得越清晰模型选对工具、传对参数的概率越高模式决定部署本地工具用 stdio远程服务用 SSE选择传输模式前先想清楚服务的部署形态协议决定生态只要遵循 MCP 标准同一份服务即可被任意支持 MCP 的客户端复用这正是 MCP 生态价值的来源。赞分享文档教程知识库人工智能【免费下载链接】ai-guide程序员鱼皮的 AI 资源大全 Vibe Coding 零基础教程分享 OpenClaw 保姆级教程、大模型玩法DeepSeek / GPT / Gemini / Claude / GLM、最新 AI 资讯、Prompt 提示词大全、AI 知识百科Agent Skills / RAG / MCP / A2A、AI 编程教程Harness Engineering、AI 工具用法Cursor / Claude Code / TRAE / Codex / Copilot、AI 开发框架教程Spring AI / LangChain、AI 产品变现指南帮你快速掌握 AI 技术走在时代前沿。本项目为开源文档 aiguide已升级为鱼皮 AI 导航网站项目地址https://gitcode.com/GitHub_Trending/aig/ai-guide点击查看免费下载相关推荐ai-guide Vibe Coding 实战从零用 AI 对话开发 4 个可用的 AI 应用ai guide Vibe Coding 实战从零用 AI 对话开发 4 个可用的 AI 应用 本篇文章是 ai guide 仓库中《Vibe Coding文档教程知识库人工智能Spring AI MCP 实战实现 CSDN 自动发帖 MCP 服务stdio 模式Spring AI MCP 实战实现 CSDN 自动发帖 MCP 服务stdio 模式 本文是《DeepSeek RAGMCP 增强检索知识库系统》第1文档教程后端ArchiveBox MCP 服务实战用 archivebox mcp 命令为 AI Agent 暴露完整 CLI 工具面ArchiveBox MCP 服务实战用 archivebox mcp 命令为 AI Agent 暴露完整 CLI 工具面 本篇技术指南围绕 ArchiveB后端数据工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考