发现优秀的 MCP 服务器
通过 MCP 服务器扩展您的代理能力,拥有 14,364 个能力。
mcp-server
将之前的组件组合成服务器的主要 crate。
Palo Alto Networks MCP Server Suite
Python MCP Server Template
Python MCP 服务器的模板仓库
Filesystem MCP Server
镜子 (jìng zi)
CLI Integradora para Arcee, TESS e MCP
用于与 TESS API 集成的 MCP 服务器,允许通过 MCP 协议使用 TESS 代理。
MCP Server Meraki
用于 Meraki API 的 MCP 服务器 - 用于管理 Meraki 基础设施的标准化接口
Model Context Protocol (MCP) Servers
模型上下文协议(MCP)服务器集合
Hippycampus
一个基于 LangChain 的服务器,支持动态加载 OpenAPI 规范,并通过服务器发送事件 (SSE) 传输实现与 Web 服务的自然语言交互。
Apple Shortcuts MCP Server 🤖
镜子 (jìng zi)
SynoLink
Synology NAS MCP 服务器 - 将 AI 模型与您的 Synology NAS 连接
FireCrawl MCP Server
镜子 (jìng zi)
mcp-server-diff-python
镜子 (jìng zi)
Remote MCP Server on Cloudflare
MCP Server with Wikipedia Article Tool
一个轻量级的模型上下文协议 (MCP) 服务器实现,使用服务器发送事件 (Server-Sent Events)。 特色是维基百科文章解析器,可以将内容转换为 Markdown 格式。 演示了通过 HTTP 的客户端-服务器 MCP 通信。
MCP-Editor
PlayCanvas编辑器中用于自动化的MCP服务器
MCP Server SSH Client
MCP Server Template
镜子 (jìng zi)
Enjin API Tool MCP Server
一个允许与 Enjin 平台 API 交互的 MCP 服务器。
skykeep-mcp-server
天空之城应用程序的 MCP 服务器
Spring Ai Mcp Deepseek
好的,以下是将 Spring AI 与 MCP 服务(包括 MCP server 和 Deepseek client)整合的步骤和一些关键考虑因素: **理解 MCP 和 Deepseek** * **MCP (Model Control Plane):** 通常指的是一个用于管理、部署和监控机器学习模型的平台。它可能包含模型注册、版本控制、A/B 测试、监控等功能。 具体实现会因供应商而异。你需要了解你使用的 MCP 平台的具体 API 和协议。 * **Deepseek:** Deepseek 是一家提供大语言模型 (LLM) 服务的公司。 Deepseek Client 指的是用于与 Deepseek LLM API 交互的客户端库或 SDK。 **整合步骤 (通用指南)** 由于 MCP 和 Deepseek 的具体实现可能不同,以下是一个通用的整合指南,你需要根据你的具体环境进行调整: 1. **依赖管理:** * **Spring AI:** 在你的 `pom.xml` (Maven) 或 `build.gradle` (Gradle) 文件中添加 Spring AI 的依赖。 确保选择与你的 Spring Boot 版本兼容的 Spring AI 版本。 ```xml <!-- Maven --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-core</artifactId> <version>最新版本</version> <!-- 替换为实际版本 --> </dependency> <!-- 如果需要特定的 LLM 提供商集成,例如 OpenAI --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai</artifactId> <version>最新版本</version> <!-- 替换为实际版本 --> </dependency> ``` ```gradle // Gradle dependencies { implementation 'org.springframework.ai:spring-ai-core:最新版本' // 替换为实际版本 implementation 'org.springframework.ai:spring-ai-openai:最新版本' // 替换为实际版本 (如果需要) } ``` * **Deepseek Client:** 添加 Deepseek 提供的客户端库的依赖。 这可能是一个 Maven 或 Gradle 依赖,或者你需要手动下载 JAR 文件并添加到你的项目中。 查阅 Deepseek 的文档以获取正确的依赖信息。 ```xml <!-- Maven (示例,需要替换为 Deepseek 提供的实际依赖) --> <dependency> <groupId>com.deepseek</groupId> <artifactId>deepseek-client</artifactId> <version>版本号</version> <!-- 替换为实际版本 --> </dependency> ``` ```gradle // Gradle (示例,需要替换为 Deepseek 提供的实际依赖) dependencies { implementation 'com.deepseek:deepseek-client:版本号' // 替换为实际版本 } ``` * **MCP Client:** 添加 MCP 平台提供的客户端库的依赖。 这可能是一个 Maven 或 Gradle 依赖,或者你需要手动下载 JAR 文件并添加到你的项目中。 查阅 MCP 平台的文档以获取正确的依赖信息。 ```xml <!-- Maven (示例,需要替换为 MCP 提供的实际依赖) --> <dependency> <groupId>com.mcp</groupId> <artifactId>mcp-client</artifactId> <version>版本号</version> <!-- 替换为实际版本 --> </dependency> ``` ```gradle // Gradle (示例,需要替换为 MCP 提供的实际依赖) dependencies { implementation 'com.mcp:mcp-client:版本号' // 替换为实际版本 } ``` 2. **配置 Spring AI:** * **`application.properties` 或 `application.yml`:** 配置 Spring AI 以使用 Deepseek LLM。 这通常涉及设置 API 密钥、端点 URL 等。 Spring AI 可能没有直接支持 Deepseek 的集成,因此你可能需要创建一个自定义的 `ChatClient` 实现。 ```properties # application.properties (示例,需要根据 Deepseek 的要求进行调整) spring.ai.deepseek.api-key=你的Deepseek API密钥 spring.ai.deepseek.base-url=Deepseek API 的基本 URL ``` ```yaml # application.yml (示例,需要根据 Deepseek 的要求进行调整) spring: ai: deepseek: api-key: 你的Deepseek API密钥 base-url: Deepseek API 的基本 URL ``` 3. **创建自定义 `ChatClient` (如果 Spring AI 没有直接支持):** * 如果 Spring AI 没有内置的 Deepseek 集成,你需要创建一个自定义的 `ChatClient` 实现。 这涉及实现 `ChatClient` 接口,并使用 Deepseek Client 与 Deepseek API 进行交互。 ```java import org.springframework.ai.chat.ChatClient; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import com.deepseek.client.DeepseekApiClient; // 假设的 Deepseek Client 类 public class DeepseekChatClient implements ChatClient { private final DeepseekApiClient deepseekApiClient; public DeepseekChatClient(DeepseekApiClient deepseekApiClient) { this.deepseekApiClient = deepseekApiClient; } @Override public ChatResponse call(Prompt prompt) { // 1. 将 Spring AI 的 Prompt 转换为 Deepseek API 期望的格式 String deepseekPrompt = convertToDeepseekPrompt(prompt); // 2. 使用 Deepseek Client 调用 Deepseek API String deepseekResponse = deepseekApiClient.generate(deepseekPrompt); // 3. 将 Deepseek API 的响应转换为 Spring AI 的 ChatResponse ChatResponse chatResponse = convertToChatResponse(deepseekResponse); return chatResponse; } // 实现 convertToDeepseekPrompt 和 convertToChatResponse 方法 private String convertToDeepseekPrompt(Prompt prompt) { // 将 Spring AI 的 Prompt 对象转换为 Deepseek API 期望的字符串格式 // 这可能涉及提取消息、角色等信息,并将其格式化为 Deepseek API 要求的 JSON 或其他格式 return "Deepseek 格式的 Prompt"; } private ChatResponse convertToChatResponse(String deepseekResponse) { // 将 Deepseek API 返回的字符串响应转换为 Spring AI 的 ChatResponse 对象 // 这可能涉及解析 JSON 响应,提取文本内容,并将其封装到 ChatResponse 中 return new ChatResponse("Spring AI 格式的 ChatResponse"); } } ``` 4. **配置 MCP 集成:** * **获取模型信息:** 使用 MCP Client 从 MCP server 获取 Deepseek 模型的部署信息,例如端点 URL、模型版本等。 * **动态配置:** 根据从 MCP 获取的信息,动态配置 DeepseekChatClient 的连接参数。 这允许你根据 MCP 的管理来切换模型版本或端点。 ```java import com.mcp.client.McpClient; // 假设的 MCP Client 类 import com.mcp.client.ModelInfo; @Configuration public class AiConfig { @Autowired private McpClient mcpClient; @Bean public DeepseekChatClient deepseekChatClient() { // 从 MCP 获取模型信息 ModelInfo modelInfo = mcpClient.getModelInfo("deepseek-model"); // 替换为你的模型名称 // 根据模型信息配置 DeepseekApiClient DeepseekApiClient deepseekApiClient = new DeepseekApiClient(modelInfo.getEndpointUrl(), modelInfo.getVersion()); // 假设的 DeepseekApiClient 构造函数 // 创建 DeepseekChatClient return new DeepseekChatClient(deepseekApiClient); } } ``` 5. **使用 Spring AI:** * 在你的 Spring 组件中注入 `ChatClient` (或 `DeepseekChatClient`),并使用它来与 Deepseek LLM 进行交互。 ```java import org.springframework.ai.chat.ChatClient; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyService { @Autowired private ChatClient chatClient; // 或者 DeepseekChatClient public String generateResponse(String userPrompt) { Prompt prompt = new Prompt(userPrompt); ChatResponse response = chatClient.call(prompt); return response.getResult().getOutput().getContent(); } } ``` **关键考虑因素:** * **Deepseek Client API:** 仔细阅读 Deepseek Client 的文档,了解如何使用它来与 Deepseek API 进行交互。 你需要了解如何构建请求、处理响应、处理错误等。 * **MCP API:** 仔细阅读 MCP 平台的文档,了解如何使用 MCP Client 获取模型信息。 你需要了解如何认证、查询模型信息、处理错误等。 * **数据格式转换:** Spring AI 的 `Prompt` 和 `ChatResponse` 对象可能与 Deepseek API 期望的格式不同。 你需要实现适当的转换逻辑。 * **错误处理:** 实现健壮的错误处理机制,以处理 Deepseek API 和 MCP API 的错误。 * **安全性:** 安全地存储和管理 API 密钥和其他敏感信息。 考虑使用 Spring Cloud Config 或其他配置管理工具。 * **异步处理:** 如果 Deepseek API 调用是耗时的,考虑使用异步处理来避免阻塞你的应用程序。 可以使用 Spring 的 `@Async` 注解或 Reactive Streams。 * **监控和日志:** 添加监控和日志记录,以便跟踪 API 调用、性能和错误。 * **Spring AI 版本:** 确保你使用的 Spring AI 版本与你的 Spring Boot 版本兼容。 * **依赖冲突:** 注意依赖冲突,特别是当使用多个第三方库时。 **示例代码 (更详细的示例,但仍然需要根据你的具体环境进行调整):** ```java // DeepseekChatClient.java import org.springframework.ai.chat.ChatClient; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.Generation; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.util.Assert; import java.util.List; import java.util.Map; public class DeepseekChatClient implements ChatClient { private final DeepseekApi deepseekApi; public DeepseekChatClient(DeepseekApi deepseekApi) { Assert.notNull(deepseekApi, "DeepseekApi must not be null"); this.deepseekApi = deepseekApi; } @Override public ChatResponse call(Prompt prompt) { DeepseekApi.ChatCompletionRequest request = createRequest(prompt); DeepseekApi.ChatCompletionResponse response = this.deepseekApi.chatCompletion(request); return convertResponse(response); } private DeepseekApi.ChatCompletionRequest createRequest(Prompt prompt) { List<DeepseekApi.ChatMessage> messages = prompt.getInstructions().stream() .map(i -> new DeepseekApi.ChatMessage(i.getRole().name().toLowerCase(), i.getContent())).toList(); return new DeepseekApi.ChatCompletionRequest(messages); } private ChatResponse convertResponse(DeepseekApi.ChatCompletionResponse response) { Generation generation = new Generation(response.choices().get(0).message().content()); return new ChatResponse(List.of(generation)); } // 内部接口,用于模拟 Deepseek API 客户端 interface DeepseekApi { ChatCompletionResponse chatCompletion(ChatCompletionRequest request); record ChatCompletionRequest(List<ChatMessage> messages) { } record ChatMessage(String role, String content) { } record ChatCompletionResponse(List<Choice> choices) { } record Choice(ChatMessage message) { } } // 模拟 Deepseek API 客户端实现 @org.springframework.stereotype.Component static class DeepseekApiClient implements DeepseekApi { @org.springframework.beans.factory.annotation.Value("${deepseek.api.key}") private String apiKey; @Override public ChatCompletionResponse chatCompletion(ChatCompletionRequest request) { // 实际调用 Deepseek API 的代码 // 需要使用 Deepseek 提供的 SDK 或 HTTP 客户端 // 这里只是一个模拟实现 String responseContent = "模拟 Deepseek API 响应: " + request.messages().get(0).content(); ChatMessage chatMessage = new ChatMessage("assistant", responseContent); Choice choice = new Choice(chatMessage); ChatCompletionResponse response = new ChatCompletionResponse(List.of(choice)); return response; } } // 示例配置 @org.springframework.context.annotation.Configuration static class DeepseekConfig { @org.springframework.context.annotation.Bean public DeepseekChatClient deepseekChatClient(DeepseekApi deepseekApi) { return new DeepseekChatClient(deepseekApi); } } public static void main(String[] args) { // 示例用法 org.springframework.context.annotation.AnnotationConfigApplicationContext context = new org.springframework.context.annotation.AnnotationConfigApplicationContext(DeepseekConfig.class); ChatClient chatClient = context.getBean(ChatClient.class); PromptTemplate promptTemplate = new PromptTemplate("请用中文回答: {question}"); Prompt prompt = promptTemplate.create(Map.of("question", "What is Spring AI?")); ChatResponse response = chatClient.call(prompt); System.out.println("Response: " + response.getResult().getOutput().getContent()); } } ``` **总结** 整合 Spring AI 与 MCP 和 Deepseek 需要仔细的规划和实施。 你需要了解每个组件的 API 和协议,并实现适当的转换和错误处理逻辑。 希望这些步骤和考虑因素能帮助你成功地整合这些服务。 请务必查阅 Deepseek 和 MCP 平台的官方文档以获取更详细的信息。
Cursor Resources
.cursorrules、MCP 和 MCP 服务器、提示、技巧
Cleric
牧師 (Cleric) - 通過簡單的圖形用戶界面 (GUI) 為 MCP 服務器配置 Claude 設置。 (Alternative, more literal translation): 牧師 (Cleric) - 通過一個簡單的 GUI 配置 MCP 服務器的 Claude 設置。
MCP Demo Server
具有高级功能的模型上下文协议 (MCP) 服务器的演示实现
MCP Hub Documentation
MCP Hub 是一个综合框架,用于构建、管理和部署模型上下文协议 (MCP) 客户端和服务器。它提供工具和配置,以实现端到端 MCP 工作流程的无缝集成和执行。
Supabase MCP Server 🚀
镜子 (jìng zi)
Firecrawl Simple MCP Server
用于 Firecrawl Simple 的 MCP 服务器——Firecrawl Simple 是一款网络抓取和站点地图工具,使 LLM 能够访问和处理网络内容。
mcp-server-chatsum
镜子 (jìng zi)
MCP Outlook - Microsoft Outlook Integration for Claude
用于 Microsoft Outlook 集成的 MCP 服务器和 CLI (Yòng yú Microsoft Outlook jíchéng de MCP fúwùqì hé CLI)
Coding Prompt Engineer MCP Server
使用 Prompt Engineer MCP 服务器编写提示词,可以提升提示词质量 10 倍。 (This translation aims for a concise and direct translation of the original English sentence.)
OpenAPI MCP Server
这是一个骨架项目,你可以用它作为构建你自己的 MCP 服务器的起点。示例的加法函数演示了如何在所有三个协议中实现处理程序。