natural_language_usage.md•4 kB
# 自然语言MCP服务器使用指南
## 概述
自然语言MCP服务器支持使用中文自然语言进行数据库操作,包括建表、查询、插入和更新数据。无需编写SQL语句,只需用中文描述您的需求即可。
## 启动服务器
```bash
# 启动自然语言MCP服务器
python main_natural_language.py
```
## 可用工具
### 1. natural_language_query - 自然语言查询
使用中文描述进行数据查询。
**示例:**
- "查询所有年龄大于18的用户"
- "查找用户表中姓名为张三的记录"
- "搜索所有价格大于1000的产品"
### 2. natural_language_create_table - 自然语言建表
使用中文描述创建数据库表。
**示例:**
- "创建一个用户表,包含姓名、年龄、邮箱字段"
- "创建一个产品表,包含名称、价格、分类字段"
- "创建一个订单表,包含用户ID、产品ID、数量、总价字段"
### 3. natural_language_insert - 自然语言插入
使用中文描述插入数据。
**示例:**
- "向用户表插入一个叫张三的用户,年龄25岁"
- "向产品表插入一个叫笔记本电脑的产品,价格5999元"
- "向用户表插入一个叫李四的用户,年龄30岁,邮箱lisi@example.com"
### 4. natural_language_update - 自然语言更新
使用中文描述更新数据。
**示例:**
- "将用户张三的年龄改为26岁"
- "将产品笔记本电脑的价格改为5500元"
- "将用户李四的邮箱改为new_email@example.com"
### 5. sql_query - SQL查询
直接执行SQL查询语句。
### 6. sql_update - SQL更新
直接执行SQL更新语句。
### 7. list_tables - 列出表
显示数据库中的所有表。
### 8. describe_table - 描述表结构
显示指定表的详细结构信息。
### 9. create_table - 创建表
直接使用SQL语句创建表。
### 10. database_info - 数据库信息
获取数据库的基本统计信息。
## 自然语言建表示例
### 基本建表
```
描述: "创建一个用户表,包含姓名、年龄、邮箱字段"
```
生成的SQL:
```sql
CREATE TABLE 用户 (姓名 TEXT, 年龄 INTEGER, 邮箱 TEXT)
```
### 复杂建表
```
描述: "创建一个订单表,包含订单ID、用户ID、产品ID、数量、总价、创建时间字段"
```
生成的SQL:
```sql
CREATE TABLE 订单 (订单ID INTEGER PRIMARY KEY, 用户ID INTEGER, 产品ID INTEGER, 数量 INTEGER, 总价 REAL, 创建时间 TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
```
## 字段类型自动识别
系统会自动识别以下字段类型:
| 中文描述 | SQL类型 |
|---------|---------|
| 姓名、名字、名称、标题、描述、内容、地址、电话、手机、邮箱、邮件 | TEXT |
| 年龄、数量 | INTEGER |
| 价格、金额、分数 | REAL |
| 时间、日期、创建时间、更新时间 | TIMESTAMP |
## 使用建议
1. **表名描述**:使用"创建xxx表"的格式
2. **字段描述**:使用"包含xxx字段"或"有xxx字段"的格式
3. **数据插入**:使用"向xxx表插入"的格式
4. **数据更新**:使用"将xxx的xxx改为xxx"的格式
## 错误处理
如果自然语言解析失败,系统会返回详细的错误信息,帮助您调整描述格式。
## 与传统SQL的对比
| 操作 | 自然语言 | SQL |
|------|----------|-----|
| 建表 | "创建一个用户表,包含姓名、年龄、邮箱字段" | `CREATE TABLE users (name TEXT, age INTEGER, email TEXT)` |
| 查询 | "查询所有年龄大于18的用户" | `SELECT * FROM users WHERE age > 18` |
| 插入 | "向用户表插入一个叫张三的用户,年龄25岁" | `INSERT INTO users (name, age) VALUES ('张三', 25)` |
| 更新 | "将用户张三的年龄改为26岁" | `UPDATE users SET age = 26 WHERE name = '张三'` |
## 注意事项
1. 自然语言解析基于模式匹配,建议使用标准的描述格式
2. 复杂查询可能需要使用传统的SQL语句
3. 字段名会自动映射到英文,但表名保持中文
4. 系统会自动添加主键和时间戳字段(如果需要)