SSE微信小程序

by shareAI-lab

473 downloads
Not rated
GitHub

About

通过SSE的方式实现小程序对MCP Server调用的chatbox,包含一个MCP Client的部署与分享

Details

Author
shareAI-lab
Downloads
473
Categories
Other

- 社区精选页面:展示MCP应用和热门推荐
- 聊天页面:基于SSE的实时聊天,支持高德地图等工具
- 个人信息页面:微信登录、登出及聊天次数管理
- SSE实时通信:服务器主动推送消息至客户端
- 工具调用流程:完整识别、解析、执行和结果渲染
- 用户认证系统:微信账户登录,赠送并消耗聊天次数

1. 启动后端服务器:运行 npm run start-server(默认端口3091)。2. 使用微信开发者工具打开项目,在“详情”→“本地设置”中勾选“不校验合法域名”。3. 确保服务器运行正常,即可在模拟器或真机中预览。需配置 .env 中的 OPENAI_API_KEYWX_APPID 等环境变量。

SSE微信小程序

基于SSE服务的微信小程序客户端,提供社区精选、聊天和个人信息等功能。

项目概述

本项目是一个基于微信小程序的SSE(Server-Sent Events)客户端,主要包括三个核心页面:社区精选页面、聊天页面和个人信息页面。

功能特点

- 社区精选页面:展示各类精选的MCP应用和热门推荐
- 聊天页面:实现基于SSE的实时聊天功能,支持高德地图等MCP服务
- 个人信息页面:用户微信账户登录、登出及聊天次数管理
- SSE实时通信:支持服务器与客户端的实时消息推送
- 工具调用流程:实现完整的工具识别、参数解析、调用执行和结果处理流程
- 用户认证系统:支持微信账户登录,管理用户聊天次数

技术实现

- 使用微信小程序原生开发框架
- SSE服务端基于Express框架实现
- 聊天功能使用SSE技术实现服务器与客户端实时通信
- 集成高德地图API,实现地图相关功能
- 使用OpenAI接口处理自然语言请求和工具调用识别
- 遵循微信小程序的设计规范和开发最佳实践

项目结构

.
├── miniprogram/                # 微信小程序客户端
│   ├── app.js                  # 小程序入口文件
│   ├── app.json                # 小程序配置文件
│   ├── app.wxss                # 全局样式文件
│   ├── images/                 # 图片资源
│   ├── pages/                  # 页面文件
│   │   ├── community/          # 社区精选页面
│   │   │   ├── index.js       # 社区页面逻辑
│   │   │   ├── index.json     # 页面配置
│   │   │   ├── index.wxml     # 页面结构
│   │   │   └── index.wxss     # 页面样式
│   │   ├── chat/              # 聊天页面
│   │   │   ├── index.js       # 聊天页面逻辑
│   │   │   ├── index.json     # 页面配置
│   │   │   ├── index.wxml     # 页面结构
│   │   │   └── index.wxss     # 页面样式
│   │   ├── profile/           # 个人信息页面
│   │   │   ├── index.js       # 个人页面逻辑
│   │   │   ├── index.json     # 页面配置
│   │   │   ├── index.wxml     # 页面结构
│   │   │   └── index.wxss     # 页面样式
│   │   └── travel-guide/      # 出行攻略渲染页面
│   │       ├── index.js       # 攻略页面逻辑
│   │       ├── index.json     # 页面配置
│   │       ├── index.wxml     # 页面结构
│   │       └── index.wxss     # 页面样式
│   └── utils/                  # 工具函数
│       ├── sseClient.js        # SSE客户端服务
│       ├── markdown.js         # Markdown解析工具
│       └── mcpConfig.js/         # MCP SSE 配置的地方(Server id可从Cherry Studio获取)
├── server_back/package/             # SSE服务器
│   ├── sse_proxy_server.ts          # SSE中转服务器主文件
│   ├── package.json            # 服务器依赖配置
│   └── .env                    # 环境变量配置
├── package.json                # 项目依赖配置
├── deploy.sh                    # 部署脚本
├── 微信开发者工具配置.md          # 配置说明文档
└── README.md                   # 项目说明文档

SSE服务端

SSE服务端基于Express实现,提供以下功能:

- SSE实时通信:维持与客户端的长连接,实时推送消息
- AI聊天能力:集成OpenAI API,提供智能对话功能

中转服务器

位置:server_back/package/sse_proxy_server.ts

API接口

- POST /sse-chat:创建SSE连接,用于实时聊天
- POST /chat:常规聊天API,不使用SSE连接
- GET /status:获取服务器状态

工具调用示例

以下是系统处理高德地图天气查询的实际案例:

收到SSE聊天请求
OpenAI响应: 工具调用请求 mcp_amap_maps_maps_weather
处理工具调用: mcp_amap_maps_maps_weather
工具调用参数: { city: '深圳市' }
工具调用结果: {
  "status": "1",
  "count": "1",
  "info": "OK",
  "lives": [
    {
      "province": "广东",
      "city": "深圳市",
      "adcode": "440300",
      "weather": "阴",
      "temperature": "26",
      "winddirection": "西南",
      "windpower": "≤3",
      "humidity": "69",
      "reporttime": "2025-04-09 11:00:36"
    }
  ]
}
最终响应: 深圳市昨天的天气状况是阴天,气温为26°C,西南风风力≤3级,湿度为69%。

SSE客户端

SSE客户端在微信小程序中实现,提供以下功能:

- 分块接收数据:模拟SSE的数据接收方式
- 事件处理:解析和处理服务器发送的各类事件
- 工具调用:支持高德地图等工具的调用和结果展示
- 实时渲染:将服务器返回的信息实时渲染到聊天界面

客户端API

- createSseConnection():创建SSE连接
- sendChatMessage():发送常规聊天消息
- checkServerStatus():检查服务器状态

启动方式

启动服务器

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.