当前位置: 首页 > wzjs >正文

企业网站制作 南京百度推广的优化软件

企业网站制作 南京,百度推广的优化软件,c 网站开发部署,国内大型餐饮网站建设文章目录 项目简介GiteeMCP 简介环境要求项目代码核心实现代码MCP 服务端(批量注册 Tool)MCP 客户端(调用 DeepSeek) DeepSeek APIDockersse 连接http 连接 Cherry Studio配置模型配置 MCP调用 MCP 项目简介 在本项目中&#xff…

文章目录

  • 项目简介
  • Gitee
  • MCP 简介
  • 环境要求
  • 项目代码
  • 核心实现代码
    • MCP 服务端(批量注册 Tool)
    • MCP 客户端(调用 DeepSeek)
  • DeepSeek API
  • Docker
    • sse 连接
    • http 连接
  • Cherry Studio
    • 配置模型
    • 配置 MCP
    • 调用 MCP

项目简介

在本项目中,我们基于 Spring Boot 构建并使用 Docker 部署了 MCP 服务端与 MCP 客户端,通过 HTTP 协议 实现与现有项目的远程控制与集成。整个系统作为独立模块运行,服务端直连数据库,核心业务逻辑抽象于 tool 层中,具备良好的扩展性与解耦性。

此外,项目还支持通过 Cherry Studio 使用 SSE(Server-Sent Events) 与 MCP 服务端保持实时连接,进一步提升了消息推送与控制响应的实时性。本文将详解 Spring Boot 在 MCP 架构中的实践方案、Docker 部署过程、SSE 实现方式及与主业务的整合流程,助你快速构建一套灵活、高可维护的智能控制系统。

Gitee

  • https://gitee.com/wufengsheng/spring-mcp-server

MCP 简介

MCP 是一种开放协议,用于标准化应用程序如何向 LLM 提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。就像 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一种将 AI 模型连接到不同数据源和工具的标准化方式。
在这里插入图片描述

  • MCP 主机 (MCP Hosts):例如 Claude Desktop、IDE 或希望通过 MCP 访问数据的 AI 工具等程序
  • MCP 客户端 (MCP Clients):与服务器保持 1:1 连接的协议客户端
  • MCP 服务器 (MCP Servers):轻量级程序,每个程序通过标准化的模型上下文协议 (MCP) 公开特定的功能
  • 本地数据源 (Local Data Sources):您的计算机的文件、数据库和 MCP 服务器可以安全访问的服务
  • 远程服务 (Remote Services):可通过互联网访问的外部系统(例如,通过 API),MCP 服务器可以连接到这些系统

环境要求

  • Java 环境 >= JDK17
  • Spring Boot >= 3.x

在这里插入图片描述

项目代码

git clone https://gitee.com/wufengsheng/spring-mcp-server.git

注: Java 开发环境必须 >= JDK17,否则项目编译不过。

在这里插入图片描述

核心实现代码

  • MCP 依赖 jar 包
<dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-M7</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><!-- mcp 服务端引入 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webflux</artifactId></dependency><!-- mcp 客户端引入 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>...
</dependencies>

MCP 服务端(批量注册 Tool)

  • ToolCallbackProviderConfig.java
import lombok.AllArgsConstructor;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Map;@Configuration
@AllArgsConstructor
public class ToolCallbackProviderConfig {private final ApplicationContext applicationContext;@Beanpublic ToolCallbackProvider methodToolCallbackProvider() {Map<String, McpTool> mcpBeanMap = applicationContext.getBeansOfType(McpTool.class);return MethodToolCallbackProvider.builder().toolObjects(mcpBeanMap.values().toArray()).build();}}
  • McpDemoService.java
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.server.core.McpTool;
import com.server.module.demo.domain.Demo;
import com.server.module.demo.service.IDemoService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;@Slf4j
@Service
@AllArgsConstructor
public class McpDemoService implements McpTool {private final IDemoService demoService;@Tool(description = "根据年龄查询 Demo 列表")@Transactional(rollbackFor = {RuntimeException.class, Exception.class})public String queryDemoInfoByAge(@ToolParam(description = "年龄") Integer age) {Page<Demo> page = new Page<>(1, 10);List<Demo> demoList = demoService.list(page, Wrappers.<Demo>lambdaQuery().eq(Demo::getAge, age).orderByAsc(Demo::getName));return JSON.toJSONString(demoList);}}

MCP 客户端(调用 DeepSeek)

  • ChatService.java
import com.alibaba.fastjson2.JSON;
import io.modelcontextprotocol.client.McpSyncClient;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.mcp.SyncMcpToolCallbackProvider;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.stereotype.Service;import java.util.List;@Slf4j
@Service
public class ChatService {private final ChatClient chatClient;@Getterprivate final ToolCallback[] toolCallbacks;public ChatService(OpenAiChatModel openAiChatModel, List<McpSyncClient> mcpSyncClientList) {log.info("mcpSyncClientList={}", JSON.toJSONString(mcpSyncClientList));log.info("===============================================\n");for (McpSyncClient mcpSyncClient : mcpSyncClientList) {log.info("clientInfo={}", mcpSyncClient.getClientInfo());log.info("serverInfo={}", mcpSyncClient.getServerInfo());}log.info("===============================================\n");var mcpToolCallbackProvider = new SyncMcpToolCallbackProvider(mcpSyncClientList);toolCallbacks = mcpToolCallbackProvider.getToolCallbacks();log.info("toolCallbacks={}", JSON.toJSONString(toolCallbacks));log.info("===============================================\n");for (ToolCallback toolCallback : toolCallbacks) {log.info("toolCallback={}", JSON.toJSON(toolCallback.getToolDefinition()));}log.info("===============================================\n");this.chatClient = ChatClient.builder(openAiChatModel).defaultTools(mcpToolCallbackProvider).build();}public String askQuestion(String prompt) {return chatClient.prompt(prompt).call().content();}}
  • application.yml
spring:ai:openai:api-key: sk-xxxxxbase-url: https://api.deepseek.comchat:options:model: deepseek-chatmcp:client:type: syncname: spring-mcp-clientsse:connections:server1:url: http://localhost:9800

DeepSeek API

  • 申请 API_KEY:https://platform.deepseek.com/usage

Docker

  • 打包 jar 包并复制到 docker/app/ 对应目录中
  • start.sh 脚本按顺序先启动 mcp-server 再启动 mcp-client

在这里插入图片描述

  • 配置 API_KEY 与 DeepSeek 模型
cd docker/app/mcp-client
vim application-prod.yml
spring:ai:openai:api-key: sk-xxxxxbase-url: https://api.deepseek.comchat:options:model: deepseek-chat
cd docker
docker-compose up -d mcp-server
docker logs -f mcp-server

sse 连接

http://127.0.0.1:9800/sse

http 连接

http://127.0.0.1:9801/mcp/mcpClient/listTools

在这里插入图片描述

http://127.0.0.1:9801/mcp/mcpClient/chat?prompt=查询章若楠用户信息

在这里插入图片描述

Cherry Studio

  • 下载地址:https://cherry-ai.com/

配置模型

在这里插入图片描述

在这里插入图片描述

配置 MCP

在这里插入图片描述
在这里插入图片描述

调用 MCP

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/171504.html

相关文章:

  • axcure做网站ui网络营销策划的目的
  • 站长工具 怎么做网站地图百度手机助手下载正版
  • 深圳免费建站百度公司高管排名
  • 免费做ppt网站怎么优化推广自己的网站
  • 成都网站制作电话广告宣传方式有哪些
  • 做网站后台学什么专业外链服务
  • 恩施哪里有做网站的护肤品推广软文
  • 图书类网站开发的背景百度竞价登录入口
  • 网站建设的三网合一百度竞价排名机制
  • 我们不仅仅做网站更懂得网络营销郑州做网站最好的公司
  • 深圳建站服务公司有哪些搜索引擎网站
  • 2022腾讯云网站建设方案书寻找客户的渠道和方法
  • 国内移动端网站做的最好的seo优化网站技术排名百度推广
  • 海外医疗网站建设深圳网站推广公司
  • 百度推广要不要建网站深圳seo优化公司
  • 攸县网站制作公司信息流优化师面试常见问题
  • 用html5制作个人网站网络营销成功的品牌
  • 网站的静态资源服务器怎么做seo排名赚app靠谱吗
  • 为企业做优做强厦门seo外包
  • dw管理动态网站模板下载谷歌海外广告投放推广
  • 搭建一个网站的基本流程个人网站开发网
  • 做网站的没有进项票怎么办网络推广怎么做?
  • 用游戏人物做网站属于侵权吗百度客服电话是多少
  • 为违法网站做推广进去要几年网站搭建公司
  • 简要叙述如何规划建设一个企业网站优化关键词的方法正确的是
  • linux做网站的好处网页设计素材
  • 东莞网站的关键字推广搜索引擎营销方法有哪些
  • 网站建设有哪些平台百度推广客户端下载安装
  • 邯郸住房及城乡建设部网站百度站长平台提交网站
  • 长沙私人做网站宁波百度seo点击软件