Provides SQL Chat functionality with AI-powered natural language to SQL conversion, allowing users to query MySQL databases using conversational language with schema awareness and intelligent query generation.
Provides SQL Chat functionality with AI-powered natural language to SQL conversion, allowing users to query PostgreSQL databases using conversational language with schema awareness and intelligent query generation.
Manages user sessions, authentication tokens, and API quota systems for the MCP server's access control and rate limiting functionality.
MCPDemo - AI驱动的数据可视化与SQL Chat平台
本项目是一个基于**模���上下文协议(Model Context Protocol, MCP)**的综合性数据服务平台,集成了数据可视化、SQL智能查询和链接管理功能。通过 AI 驱动的自然语言处理,让数据查询和可视化变得更加简单高效。
📚 目录
🚀 核心功能
1. MCP 服务能力
📊 数据可视化工具(MCP Tool:
create_visualization_chart)支持 8+ 种图表类型:折线、柱状、饼、散点、雷达、面积、气泡、热力图
智能图表推荐(chartType=auto)
4 种主题风格:default/dark/business/colorful
强大的数据类型识别(货币、百分比、日期、布尔)
🔗 临时链接管理(PanelManager)
add_panel: 生成带有效期的短链get_panel_info: 查询短链信息、访问次数支持 OSS 托管与本地预览
🌐 统一的 HTTP MCP 端点(
/mcp)兼容本地常驻服务与云函数部署
支持 SSE 流式响应
AccessID/AccessKey 认证
2. SQL Chat 智能查询系统 🆕
🤖 AI SQL 生成
集成 DeepSeek-V3 模型(魔塔社区 ModelScope API)
自然语言转 SQL,支持中英文
Schema 感知:自动获取表结构信息
置信度检查:防止执行错误或危险的 SQL
缓存机制:相同请求快速响应
💾 多数据库支持
MySQL 8.0+
PostgreSQL 12+
连接池管理,高效稳定
连接测试与错误处理
📝 智能代码编辑器
Monaco Editor 集成(VS Code 级体验)
SQL 语法高亮与智能补全
快捷键:Ctrl+Enter 执行,Ctrl+Shift+F 格式化
实时错误提示
📊 结果展示与分析
表格化数据展示
执行统计:查询时间、影响行数
SQL 解释与置信度评分
友好的错误提示与建议
🔒 安全特性
AccessID/AccessKey 双重验证
只读 SQL 强制(防止数据修改)
多语句禁止(防 SQL 注入)
请求频率限制
📍 在线访问
MCP 端点:http://mcp.zha-ji.cn/mcp
SQL Chat:http://mcp.zha-ji.cn/sql(需认证)
1. 快速开始(Quick Start)
系统要求
Node.js >= 18
npm >= 8
MySQL 8.0+ 或 PostgreSQL 12+(SQL Chat 功能必需)
Redis(用户会话和配额管理)
安装与启动
默认端口配置:
后端 API:3000(可通过 PORT/HTTP_PORT 配置)
前端开发:5173(Vite 默认)
生产环境:后端服务静态托管前端文件
环境配置(.env 示例)
2. SQL Chat 使用指南 📊
2.1 认证设置
首先需要获取 AccessID 和 AccessKey:
启动服务并确保 MySQL/Redis 可用
注册新用户:
保存返回的
access_id和accessKey
2.2 SQL Chat 功能
数据库连接管理
连接配置:支持 MySQL 和 PostgreSQL ✅
连接测试:一键测试数据库可达性
安全存储:连接信息本地加密存储
AI SQL 生成
自然语言输入:支持中英文查询描述
智能 SQL 生成:基于 DeepSeek-V3 模型
Schema 感知:自动获取表结构信息
查询解释:提供 SQL 语句解释和置信度评分
代码编辑体验
Monaco Editor:VS Code 级代码编辑器
语法高亮:SQL 语法识别和高亮
智能补全:SQL 关键字、函数提示
快捷键:Ctrl+Enter 执行,Ctrl+Shift+F 格式化
结果展示
表格展示:清晰的数据表格
执行统计:查询时间、影响行数
错误处理:友好的错误提示和建议
3. MCP 数据可视化功能
3.1 通用数据可视化工具(create_visualization_chart)
该工具可将二维数组 + Schema 描述转为可交互的 HTML 报告,支持智能图表推荐与主题样式。
主要特性:
支持折线、柱状、饼、散点、雷达、面积、气泡、热力图
chartType=auto 时按数据自动推荐
主题与样式可定制(default/dark/business/colorful)
可在 OSS 托管并返回 Panel 短链,或本地生成 HTML 并自动打开浏览器
强力的数据类型识别(货币、百分比、多日期格式、布尔别名等)
输入数据结构:
data:二维数组,如 [["学生1", 85], ["学生2", 92]]。第一列常用于类别或时间,第二列为数值。
schema:与 data 列对应的字段定义 [{ name, type } ...],type ∈ { string, number, date, boolean }
可选参数:chartType、title、axisLabels、style.theme、style.customColors 等
输入示例(工具 arguments):
返回结果:包含一段说明文本,内含 Panel 短链(云端/自托管)或本地 file:// 路径。
3.2 临时链接管理(PanelManager)
add_panel:为指定 OSS 路径生成带有效期的短链,默认私有
get_panel_info:查询短链信息(创建/过期时间、访问次数、是否缓存等)
访问形态:
{BASE_URL}/panel/{id}(云函数环境不拼接内部端口)
4. 如何调用 MCP(HTTP /mcp)
服务对外暴露统一端点:POST {BASE_URL}:{PORT}/mcp(生产:http://mcp.zha-ji.cn/mcp)
必须的请求头:
Content-Type: application/json
Accept: application/json, text/event-stream(两者都需要以通过 SDK 校验)
AccessID: <你的访问ID>
AccessKey: <你的访问密钥> 或
Bearer <访问密钥>
获取 AccessID/AccessKey(一次性明文回显):
启动服务并确保 MySQL/Redis 可用
注册用户(仅示例):
响应 data 中包含 access_id 和一次性 accessKey,请妥善保存。随后可用 /api/auth/access-key/rotate 轮换密钥(需邮箱+密码)。
Windows PowerShell 建议先导出为环境变量:
5. 数据输入与写入说明(重点)
数据写入位置:所有数据通过 MCP 工具调用(tools/call)的
params.arguments进行输入写入。create_visualization_chart 所需:
data:二维数组,每行代表一条记录,列顺序与 schema 对齐
schema:字段定义数组(必须与 data 列数一致),type 取值:string | number | date | boolean
可选:chartType(auto/line/bar/pie/scatter/radar/area/heatmap/bubble)、title、axisLabels、style
add_panel 所需:
osspath:目标资源路径(完整 URL 或相对路径),默认生成 7 天有效期短链
数据清洗与识别:
数值支持科学计数法、百分比(10%)、常见货币格式(¥/$/€/£)
日期支持 YYYY-MM-DD、YYYY/MM/DD、MM/DD/YYYY、中文“YYYY年M月D日”、ISO 等
布尔支持 true/false/yes/no/y/n/是/否/1/0
6. Cherry Studio 配置(可选)
URL:
http://mcp.zha-ji.cn/mcp(生产)或http://localhost:3000/mcp(本地)Transport:选择 URL/HTTP 传输(SSE/Streamable HTTP)
Headers:
Content-Type: application/json
Accept: application/json, text/event-stream
AccessID / AccessKey:与你注册账号对应的凭据
超时:建议 30–60s(兼容冷启动)
更多云函数适配与排障,请参考 docs/cherry-mcp-integration-notes.md。
7. 常见问题(FAQ)
406 Not Acceptable:检查 Accept 是否同时包含 application/json 与 text/event-stream。
JSON 解析错误(PowerShell):请使用
--data-binary @file.json,确保 Body 是“真 JSON”。未找到认证用户信息:确认已在请求头中提供 AccessID 与 AccessKey,并在数据库中创建了用户。
短链打开 404:确认
BASE_URL与部署网关域一致,且未拼接内部端口。
开发指令
技术栈
后端技术
🟢 运行时: Node.js 18+ + TypeScript 5.8+
🚀 Web 框架: Express 5.1 + CORS
💾 数据库:
MySQL 8.0+ (mysql2 ^3.15.0)
PostgreSQL 12+ (pg ^8.16.3)
Redis 5.6+ (会话管理 + 配额系统)
🔐 安全:
Argon2 ^0.41.1 (密码哈希)
express-rate-limit + rate-limiter-flexible (API 限流)
📁 文件存储: Ali OSS ^6.23.0
📝 日志: Pino ^9.9.5 + pino-pretty
📧 短信: tencentcloud-sdk-nodejs-sms ^4.1.71
前端技术
⚛️ 框架: React 18+ + TypeScript
⚡ 构建工具: Vite 5+
🎨 样式: Tailwind CSS 3+
📦 状态管理: Zustand
📝 代码编辑: Monaco Editor (内置)
🌐 HTTP 客户端: Fetch API
AI 服务
🤖 模型: DeepSeek-V3 (魔塔社区 ModelScope API)
🧠 功能: 自然语言转 SQL + 置信度评估
💡 特性: Schema 感知 + 缓存机制
部署环境
☁️ 云平台: 腾讯云 SCF (云函数)
📁 对象存储: 腾讯云 COS / 阿里云 OSS
🌐 域名: http://mcp.zha-ji.cn
🐳 容器化: Dockerfile 支持
8. 贡献指南
欢迎贡献!如果你想为该项目贡献代码,请:
Fork 该仓库
创建功能分支 (
git checkout -b feature/AmazingFeature)提交你的修改 (
git commit -m 'Add some AmazingFeature')推送到分支 (
git push origin feature/AmazingFeature)发起 Pull Request
使用 TypeScript 编写代码
遵循 ESLint 和 Prettier 配置
确保所有测试通
9. 联系与支持
项目地址: GitHub
在线演示: http://mcp.zha-ji.cn
问题反馈: 请在 GitHub Issues 中提出
常见问题解决
如果遇到问题,请先查阅上方的 常见问题(FAQ) 部分,或者:
检查环境变量配置是否正确
确认数据库和 Redis 服务正常运行
查看后端日志输出 (Pino)
检查浏览器控制台错误信息
10. 许可证
ISC License
Copyright (c) 2025 MCPDemo Contributors
11. 致谢
感谢以下开源项目和服务:
Model Context Protocol (MCP) - 核心协议
DeepSeek - AI 模型支持
ModelScope - AI 模型推理平台
Monaco Editor - 代码编辑器
Express - 后端框架
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
An AI-driven data visualization and SQL chat platform that enables natural language to SQL conversion, interactive chart generation, and database querying through a comprehensive MCP interface. Supports multiple databases, intelligent chart recommendations, and secure data management with temporary link sharing.