Skip to main content
Glama

MySQL MCP Server

by QiPanTanYi
README.md4.8 kB
# MySQL MCP Server with Kimi AI 基于 NestJS + TypeScript + MySQL 的 MCP 服务器,集成 Kimi AI 实现自然语言数据库操作。 ## 功能特性 - ✅ 严格遵循 MCP 协议标准 - ✅ 支持数据库增删查改操作 - ✅ 集成 Kimi AI(通过 prompt 工程实现工具调用) - ✅ SSE 流式响应 - ✅ 生产级安全措施(SQL 注入防护、表白名单、查询限制) - ✅ 前端聊天测试界面 ## 项目结构 ``` mysql-mcp-server/ ├── src/ │ ├── main.ts # 应用入口 │ ├── app.module.ts # 根模块 │ ├── config/ # 配置模块 │ │ ├── config.module.ts │ │ └── config.service.ts │ ├── database/ # 数据库模块 │ │ ├── database.module.ts │ │ └── database.service.ts │ ├── mcp/ # MCP 服务模块 │ │ ├── mcp.module.ts │ │ └── mcp-server.service.ts │ └── chat/ # 聊天 API 模块 │ ├── chat.module.ts │ ├── chat.controller.ts │ ├── chat.service.ts │ └── kimi.service.ts ├── frontend/ # 前端测试界面 │ ├── index.html │ └── app.js ├── init-database.sql # 数据库初始化脚本 ├── .env # 环境变量配置 └── package.json ``` ## 快速开始 ### 1. 初始化数据库 ```bash mysql -u root -p123456 < init-database.sql ``` ### 2. 安装依赖 ```bash pnpm install ``` ### 3. 配置环境变量 已创建 `.env` 文件,包含: - 数据库连接信息 - Kimi API 密钥 - 安全配置 ### 4. 编译项目 ```bash pnpm run build ``` ### 5. 启动服务 #### 方式 A:Chat API 服务(带前端 SSE) ```bash pnpm start ``` 服务将启动: - Chat API: http://localhost:3000 - MCP Server: 自动启动(子进程) - 前端测试:打开 `frontend/index.html` #### 方式 B:独立 MCP Server(给 Kiro/Claude 用) ```bash pnpm run start:mcp ``` 这会启动一个通过 stdio 通信的 MCP Server,可以被 Kiro IDE、Claude Desktop 等 MCP 客户端调用。 详细配置请查看 [MCP-SETUP.md](./MCP-SETUP.md) ## MCP 工具列表 1. **list_tables** - 列出所有表 2. **get_schema** - 获取表结构 3. **query_database** - 执行 SELECT 查询 4. **insert_record** - 插入数据 5. **update_record** - 更新数据 6. **delete_record** - 删除数据 ## 安全特性 - ✅ SQL 注入防护(参数化查询) - ✅ 表权限控制(可配置允许访问的表和只读表) - ✅ 操作权限控制(可配置每个表允许的操作) - ✅ 查询结果限制(最多 1000 条) - ✅ 禁止危险 SQL 关键字(DROP TABLE, DROP DATABASE, TRUNCATE 等) - ✅ 审计日志(记录所有操作和数据变更) - ✅ 数据变更追踪(记录修改前后的数据对比) - ✅ 输入验证 详细配置请查看 [PERMISSIONS.md](./PERMISSIONS.md) ## 使用示例 在聊天界面中输入: - "查询所有用户" - "插入一个新用户,用户名是 test,邮箱是 test@example.com,年龄是 25" - "更新 id 为 1 的用户年龄为 30" - "删除 id 为 3 的用户" - "显示 users 表的结构" ## 架构说明 本项目采用真正的 MCP 协议架构: ``` ┌─────────────────┐ ┌──────────────────┐ │ MCP Server │ │ Chat API │ │ (独立进程) │←────────│ (NestJS) │ │ stdio 通信 │ MCP │ SSE to 前端 │ └─────────────────┘ Client └──────────────────┘ ↑ │ stdio ┌────┴─────┐ │ Kiro │ │ Claude │ └──────────┘ ``` - **MCP Server**:独立运行,通过 stdio 通信,符合 MCP 标准 - **Chat API**:作为 MCP Client,连接到 MCP Server - **前端 SSE**:通过 Chat API 获取流式响应 ## 技术栈 - NestJS 10.x - TypeScript 5.x - TypeORM 0.3.x - MySQL 8.x - @modelcontextprotocol/sdk(标准 MCP 协议) - Kimi API (Moonshot AI) ## 开发模式 ```bash pnpm run dev ``` ## 配置文档 - [MCP-SETUP.md](./MCP-SETUP.md) - MCP Server 配置指南(Kiro/Claude) - [PERMISSIONS.md](./PERMISSIONS.md) - 权限和安全配置 ## 注意事项 1. 确保 MySQL 服务已启动 2. 确保 Kimi API Key 有效 3. 生产环境请修改 API_KEY 和数据库密码 4. 可通过 `database-permissions.json` 调整表权限 5. 所有操作都会记录到 `logs/audit.log`

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/QiPanTanYi/mysql-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server