MCP DeepSeek 演示项目
好的,这是一个 DeepSeek 结合 MCP (Message Channel Protocol) 的最小用例,包括客户端和服务器端,用 Python 编写。这个例子展示了如何使用 DeepSeek 的模型进行简单的文本生成,并通过 MCP 在客户端和服务器之间传递请求和响应。 **注意:** 这个例子假设你已经安装了 DeepSeek 的 Python SDK 和 MCP 的相关库 (例如 `mcp` 或类似的库,具体取决于你选择的 MCP 实现)。 你需要根据你的实际环境安装这些依赖。 由于 MCP 的具体实现有很多种,这里提供的是一个概念性的例子,你需要根据你使用的 MCP 库进行调整。 **1. 服务器端 (server.py):** ```python # server.py import mcp # 假设你使用了一个名为 'mcp' 的库 import deepseek_ai # 假设你已经安装了 DeepSeek 的 SDK # DeepSeek API Key (替换成你自己的 API Key) DEEPSEEK_API_KEY = "YOUR_DEEPSEEK_API_KEY" # 初始化 DeepSeek 客户端 deepseek = deepseek_ai.DeepSeek(api_key=DEEPSEEK_API_KEY) # MCP 服务器配置 SERVER_ADDRESS = ('localhost', 8080) # 服务器地址和端口 # 处理 DeepSeek 请求的函数 def handle_deepseek_request(prompt): """ 接收 prompt,调用 DeepSeek 模型生成文本,并返回结果。 """ try: response = deepseek.completions.create( model="deepseek-chat", # 或者你想要使用的其他模型 prompt=prompt, max_tokens=50, # 限制生成文本的长度 temperature=0.7, # 控制生成文本的随机性 ) generated_text = response.choices[0].text.strip() return generated_text except Exception as e: print(f"DeepSeek API 调用失败: {e}") return "DeepSeek API 调用失败" # MCP 服务器处理函数 def handle_client_request(request): """ 接收客户端请求,调用 DeepSeek 处理函数,并返回结果。 """ try: prompt = request.decode('utf-8') # 将请求解码为字符串 print(f"收到客户端请求: {prompt}") generated_text = handle_deepseek_request(prompt) print(f"DeepSeek 生成的文本: {generated_text}") return generated_text.encode('utf-8') # 将结果编码为字节流 except Exception as e: print(f"处理客户端请求失败: {e}") return "服务器处理失败".encode('utf-8') # 创建 MCP 服务器 server = mcp.Server(SERVER_ADDRESS, handle_client_request) # 启动服务器 print(f"服务器启动,监听地址: {SERVER_ADDRESS}") server.run() ``` **2. 客户端 (client.py):** ```python # client.py import mcp # 假设你使用了一个名为 'mcp' 的库 # MCP 服务器配置 SERVER_ADDRESS = ('localhost', 8080) # 服务器地址和端口 # 客户端请求 prompt = "请用一句话描述 DeepSeek。" # 你想要发送给 DeepSeek 的 prompt # 创建 MCP 客户端 client = mcp.Client(SERVER_ADDRESS) # 发送请求并接收响应 try: response = client.send_request(prompt.encode('utf-8')) # 将 prompt 编码为字节流 generated_text = response.decode('utf-8') # 将响应解码为字符串 print(f"服务器返回的文本: {generated_text}") except Exception as e: print(f"客户端请求失败: {e}") # 关闭客户端 client.close() ``` **代码解释:** * **服务器端 (server.py):** * 导入 `mcp` 和 `deepseek_ai` 库。 * 使用你的 DeepSeek API Key 初始化 DeepSeek 客户端。 * 定义 `handle_deepseek_request` 函数,该函数接收一个 prompt,调用 DeepSeek 模型生成文本,并返回结果。 这个函数处理与 DeepSeek API 的交互。 * 定义 `handle_client_request` 函数,该函数接收客户端的请求,调用 `handle_deepseek_request` 函数处理请求,并将结果返回给客户端。 这个函数是 MCP 服务器的核心逻辑。 * 创建一个 MCP 服务器,并指定服务器地址和端口,以及处理客户端请求的函数。 * 启动服务器,开始监听客户端请求。 * **客户端 (client.py):** * 导入 `mcp` 库。 * 定义服务器地址和端口。 * 定义要发送给 DeepSeek 的 prompt。 * 创建一个 MCP 客户端,并指定服务器地址和端口。 * 发送请求给服务器,并接收服务器返回的响应。 * 将服务器返回的响应打印到控制台。 * 关闭客户端。 **运行步骤:** 1. **安装依赖:** 确保你已经安装了 `deepseek_ai` 和你选择的 MCP 库。 例如,如果 `mcp` 是一个实际存在的库,你可以使用 `pip install deepseek_ai mcp` 安装。 如果 `mcp` 只是一个占位符,你需要替换成你实际使用的 MCP 库,并安装它。 2. **替换 API Key:** 将 `server.py` 中的 `YOUR_DEEPSEEK_API_KEY` 替换成你自己的 DeepSeek API Key。 3. **运行服务器:** 在终端中运行 `python server.py`。 4. **运行客户端:** 在另一个终端中运行 `python client.py`。 **预期结果:** 客户端会向服务器发送一个 prompt,服务器会调用 DeepSeek 模型生成文本,并将生成的文本返回给客户端。客户端会将服务器返回的文本打印到控制台。 **重要注意事项:** * **MCP 实现:** 这个例子中使用了一个名为 `mcp` 的占位符库。 你需要根据你实际使用的 MCP 库进行调整。 常见的 MCP 实现包括 ZeroMQ, RabbitMQ, Redis Pub/Sub 等。 你需要选择一个适合你的需求的 MCP 实现,并根据该实现的 API 修改代码。 * **错误处理:** 这个例子包含了一些基本的错误处理,但你可以根据你的需求添加更完善的错误处理机制。 * **安全性:** 在生产环境中,你需要考虑安全性问题,例如身份验证和授权。 * **异步处理:** 如果 DeepSeek API 的调用时间较长,你可以考虑使用异步处理来提高服务器的性能。 * **模型选择:** `model="deepseek-chat"` 只是一个示例,你可以根据你的需求选择其他 DeepSeek 模型。 * **DeepSeek API Key:** 请妥善保管你的 DeepSeek API Key,不要将其泄露给他人。 这个最小用例提供了一个基本的框架,你可以根据你的实际需求进行扩展和修改。 希望这个例子能够帮助你理解如何将 DeepSeek 与 MCP 结合使用。
Ulanxx
README
MCP DeepSeek 演示项目
<p align="center"> <img src="https://img.shields.io/badge/状态-开发中-blue" alt="状态开发中"> <img src="https://img.shields.io/badge/版本-0.1.0-green" alt="版本0.1.0"> <img src="https://img.shields.io/badge/语言-TypeScript-blue" alt="语言TypeScript"> <img src="https://img.shields.io/badge/框架-Next.js-black" alt="框架Next.js"> </p>
项目概述
MCP DeepSeek 演示项目是一个基于 Model Context Protocol (MCP) 的客户端应用,用于与 DeepSeek AI 模型进行交互。该项目展示了如何将 MCP 协议与 DeepSeek API 集成,实现工具调用和实时通信。
项目采用了 monorepo 结构,包含两个主要组件:
- mcp-client: 基于 Next.js 的前端应用,提供了用户界面和与 DeepSeek API 的集成
- mcp-sse-server: 基于 SSE (服务器发送事件) 的 MCP 服务器,提供工具调用功能
功能特点
- 现代化的中文用户界面
- 实时聊天与 AI 助手交互
- 支持多种工具调用,如产品查询、库存管理等
- 基于 SSE 的实时通信
- 自动重连机制
- 响应式设计,适配不同设备
开始使用
前置条件
- Node.js 16+ 和 npm/yarn/pnpm
- DeepSeek API 密钥
安装
- 克隆仓库
git clone https://github.com/yourusername/mcp-deepseek-demo.git
cd mcp-deepseek-demo
- 安装依赖
pnpm install
- 配置环境变量
在 mcp-client 目录下创建 .env 文件,并添加以下配置:
# MCP服务器配置
MCP_SERVER_URL=http://localhost:8083/sse
# AI提供商配置
DEEPSEEK_API_KEY=sk-...
DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
# 默认使用的AI模型
DEFAULT_MODEL=deepseek-chat
在 mcp-sse-server 目录下创建 .env 文件,并添加以下配置:
# 服务器配置
PORT=8083
ALLOWED_ORIGINS=http://localhost:3000,https://yourdomain.com
LOG_LEVEL=info
HEARTBEAT_INTERVAL=30000
启动服务
- 启动 MCP SSE 服务器 和 客户端应用
pnpm run dev
- 打开浏览器访问
http://localhost:3000
项目结构
mcp-deepseek-demo/
├── packages/
│ ├── mcp-client/ # Next.js 客户端应用
│ │ ├── app/ # Next.js 页面和路由
│ │ ├── components/ # React 组件
│ │ ├── lib/ # 工具函数和服务
│ │ └── public/ # 静态资源
│ └── mcp-sse-server/ # MCP 服务器
│ ├── src/ # 服务器源代码
│ ├── services/ # 服务实现
│ └── files/ # 文件操作相关功能
├── package.json # 项目配置
└── README.md # 项目文档
使用指南
-
连接到服务器
- 启动应用后,客户端会自动尝试连接到 MCP 服务器
- 连接状态会在页面顶部显示
-
与 AI 助手对话
- 在聊天输入框中输入消息并发送
- AI 助手会分析您的请求并响应
-
使用工具
- 左侧面板显示可用的工具
- 您可以在聊天中直接要求 AI 使用特定工具
- 例如,可以输入“获取所有产品”来使用 getProducts 工具
工具列表
当前系统支持以下工具:
- getProducts: 获取所有产品信息[mock]
- getInventory: 获取库存信息[mock]
- getOrders: 获取订单信息[mock]
- purchase: 创建购买订单[mock]
- 你可以问他购买一个商品,他会调用 purchase 工具
- getFiles: 获取指定文件夹下的文件列表
- 你可以问他获取 /xxx 目录下的文件列表,他会调用 getFiles 工具
技术栈
- 前端: Next.js, React, TypeScript, Tailwind CSS
- 后端: Node.js, TypeScript
- 通信: Server-Sent Events (SSE)
- API: DeepSeek API, Model Context Protocol (MCP)
贡献指南
欢迎贡献代码或提出问题!请遵循以下步骤:
- Fork 该仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request
许可证
MIT
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。
Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。
Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。