Metadata-Version: 2.4
Name: yhtool-mcp-server
Version: 0.0.26032411
Summary: yhtool MCP Server - 提供数据查询、数据保存和邮件发送功能
Project-URL: Homepage, https://github.com/FullerYu/yhtool-mcp-server
Project-URL: Repository, https://github.com/FullerYu/yhtool-mcp-server
Author-email: Fuller <opencode@88.com>
License: MIT
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp[cli]>=1.0.0
Requires-Dist: openpyxl>=3.1.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: pymysql>=1.0.0
Requires-Dist: requests>=2.32.0
Requires-Dist: setuptools>=65.0.0
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: yagmail==0.15.293
Description-Content-Type: text/markdown

---
tags:
  - mcp
  - python
  - 数据库
  - 邮件
aliases:
  - yhtool-mcp
  - 数据库工具
date: 2026-04-15
---

# yhtool MCP Server 使用文档

## 1. 简介
“一会”工具，让AI干啥都一会。
致力成为适配80%工作场景的综合工具。

yhtool MCP Server 是一个 MCP 服务器，提供数据查询，数据保存和邮件发送功能。

**特点：**
1. 节省token，只保留日常使用频率较高的tool，避免启动太多MCP Server，占据太多上下文；
2.  一个基础助手Agent只勾选一个MCP工具，yhtool；
3. 不求最细，但求最全。只追求能覆盖8成工作中的使用最多的场景，剩下2成有其它垂直MCP完成；

**核心功能：**
- 数据保存到 CSV 文件
- 数据保存到 MySQL 数据库
- 邮件发送功能
- 图片上传获取链接（SM.MS）
- 从csv、excel、sql中读取数据

## 2. 安装配置

### 前置要求
uv 包管理器（推荐）
[[uv开发管理#2. 安装命令]]
**Windows 安装（PowerShell）：**
```powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
```

**macOS/Linux 安装：**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

验证安装：
```bash
uv --version
```

### MCP 客户端配置

以TRAE为例，点击界面右上⚙️‘设置’，选择‘MCP’，‘添加’，‘手动配置’；
修改下面配置json的环境变量信息，主要是你的数据库连接、邮箱smtp配置、图床key。复制粘贴到配置窗口即可。

在你的 MCP 客户端配置中添加：

```json
{
  "mcpServers": {
    "yhtool": {
      "command": "uv",
      "args": [
        "run",
        "d:\\yhtool-mcp-server\\server.py"
      ],
      "env": {
        "CONSTR_MYSQL": "mysql+pymysql://user:pass@host:port/database",
        "EMAIL_PARAMS": "[\"user@example.com\",\"password\",\"smtp.example.com\",587]",
        "SMMS_KEY": "your-api-key"
      }
    }
  }
}
```

### 环境变量配置

| 环境变量           | 说明                                  | 默认值                                            |
| -------------- | ----------------------------------- | ---------------------------------------------- |
| `CONSTR_MYSQL` | MySQL 连接字符串                         | `mysql+pymysql://user:password@host:port/database`  |
| `EMAIL_PARAMS` | 邮件参数（JSON 数组）支持SSL587和TLS465两种协议端口； | `["user@example.com","your-password","smtp.example.com",587]` |
| `SMMS_KEY`     | SM.MS API Key                       | `your-api-key-here`                     |

**注意**：
- 环境变量值需要 JSON 格式的字符串，注意字符转义；



## 3. 使用示例

### 示例1：保存数据到 CSV

```
请帮我保存以下数据到 CSV 文件：
[
    {"日期": "2026-04-01", "数值": 100},
    {"日期": "2026-04-02", "数值": 200}
]
```

### 示例2：保存数据到数据库

```
请帮我保存以下数据到 MySQL 数据库 db1.test_table：
[
    {"日期": "2026-04-01", "数值": 100},
    {"日期": "2026-04-02", "数值": 200}
]
```

### 示例3：发送邮件

```
请帮我发送一封邮件：
收件人：user@example.com
主题：测试邮件
内容：这是一封测试邮件
```

### 示例4：上传图片获取链接

```
请帮我上传这张图片并获取链接：
图片路径：C:\Users\Desktop\test.png
```

```
请帮我上传这张网络图片并获取链接：
图片URL：https://example.com/image.png
```

### 示例5：读取 CSV 数据

```
请帮我读取这个 CSV 文件：
文件路径：C:\Users\Desktop\test.csv
```

### 示例6：读取 Excel 数据

```
帮我读取excel中的前5条数据，文件路径"D:\\2025_rlt.xlsx"
```

### 示例7：读取 SQL 数据

```
请帮我执行这个 SQL 查询并返回前100条：
SQL语句：SELECT * FROM table_name
限制条数：100
```


## 4. 可用工具（非开发人员后续内容忽略即可）

### 3.1 seq_save_csv - 保存到 CSV

将数据保存到 CSV 文件。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| data | array | ✅ | 数据列表，每个元素是一个字典 |
| file_path | string | ❌ | CSV 文件路径，可选 |
| encoding | string | ❌ | 文件编码，默认 utf-8 |

**示例：**

```python
# 调用示例
data = [
    {"name": "张三", "age": 25},
    {"name": "李四", "age": 30}
]
seq_save_csv(data=data, file_path="C:\\Users\\Desktop\\test.csv")
```

### 3.2 seq_save_db - 保存到数据库

将数据保存到 MySQL 数据库。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| data | array | ✅ | 数据列表，每个元素是一个字典 |
| dbname | string | ❌ | 数据库名，默认 test |
| tbname | string | ❌ | 表名，可选 |
| upt_cate | string | ❌ | 更新方式：insert into、insert ignore、replace into，默认 insert into |
| chunksize | integer | ❌ | 每次更新条数，默认 1000 |
| constr | string | ❌ | 数据库连接字符串，可选 |

**示例：**

```python
# 调用示例
data = [
    {"name": "张三", "age": 25},
    {"name": "李四", "age": 30}
]
seq_save_db(
    data=data,
    dbname="hfdb",
    tbname="test_table",
    upt_cate="insert into"
)
```

### 3.6 seqSave - 底层保存函数（开发者）

底层数据保存函数，接收 JSON 格式的数据。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| dfjson | string | ✅ | JSON 格式的数据，如 `[{"col1": "value1","col2": null}]` |
| cate | string | ❌ | 保存类型：csv 或 db，默认 csv |
| fp | string | ❌ | CSV 文件路径，可选 |
| encoding | string | ❌ | 文件编码，默认 utf8 |
| dbname | string | ❌ | 数据库名，默认 test |
| tbname | string | ❌ | 表名，可选 |
| upt_cate | string | ❌ | 更新方式：insert into、insert ignore、replace into |
| chunksize | integer | ❌ | 每次更新条数，默认 1000 |
| constr | string | ❌ | 数据库连接字符串，可选 |

**示例：**

```python
# 调用示例
data_json = '[{"name": "张三", "age": 25}, {"name": "李四", "age": 30}]'
seqSave(data_json, cate="csv", fp="C:\\Users\\Desktop\\test.csv")
```

### 3.3 send_email - 发送邮件

发送邮件。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| to | array | ❌ | 收件人地址列表，默认 同配置的邮箱 |
| cc | array | ❌ | 抄送地址列表，默认 [] |
| subject | string | ❌ | 邮件主题，默认 "邮件测试" |
| contents | string | ❌ | 邮件内容，默认 "测试内容，请忽略" |
| attachments | array | ❌ | 附件文件路径列表，默认 None |

**示例：**

```python
# 调用示例
send_email(
    to=["user1@example.com", "user2@example.com"],
    subject="测试邮件",
    contents="这是一封测试邮件",
    attachments=["C:\\Users\\Desktop\\test.pdf"]
)
```

### 3.4 get_pic_link - 图片上传获取链接

上传图片或网络链接，获取图片链接（SM.MS 图床）。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| imgfp | string | ✅ | 图片的绝对路径或网络图片URL |
| print_img_html | boolean | ❌ | 是否打印 HTML 标签代码，默认 True |

**示例：**

```python
# 调用示例 - 本地图片
get_pic_link(imgfp="C:\\Users\\Desktop\\test.png")

# 调用示例 - 网络图片
get_pic_link(imgfp="https://example.com/image.png")
```

### 3.5 read_data - 读取数据

读取 CSV、Excel 或 SQL 数据，返回 JSON 格式。

**参数：**

| 参数         | 类型      | 必填  | 说明                           |
| ---------- | ------- | --- | ---------------------------- |
| cate       | string  | ❌   | 读取类型：csv、excel、sql，默认 csv    |
| fp         | string  | ❌   | 文件路径（csv/excel 时必填）          |
| encoding   | string  | ❌   | 文件编码，默认 utf8                 |
| sheet_name | string  | ❌   | Excel sheet 名（excel 时可选），默认0 |
| sqlstr     | string  | ❌   | SQL 查询语句（sql 时必填）            |
| constr     | string  | ❌   | 数据库连接字符串（sql 时可选）            |
| limit_rows | integer | ❌   | 限制读取条数，默认 None               |

**示例：**

```python
# 调用示例 - 读取 CSV
read_data(cate="csv", fp="C:\\Users\\Desktop\\test.csv")

# 调用示例 - 读取 Excel
read_data(cate="excel", fp="C:\\Users\\Desktop\\test.xlsx", sheet_name="Sheet1")

# 调用示例 - 读取 SQL
read_data(cate="sql", sqlstr="SELECT * FROM table", limit_rows=100)
```


## 5. 注意事项

1. **数据库配置**：推荐通过环境变量 `CONSTR_MYSQL` 配置，也可以使用默认配置
2. **邮件配置**：推荐通过环境变量 `EMAIL_PARAMS` 配置，也可以使用默认配置
3. **数据格式**：传入的 data 必须是字典列表格式
4. **编码问题**：CSV 默认使用 utf-8 编码，如需要 gbk 可在调用时指定 encoding="gbk"
5. **环境变量**：环境变量值需要 JSON 格式的字符串

## 6. 依赖项

- pandas>=2.0.0
- yagmail==0.15.293
- requests>=2.32.0
- sqlalchemy>=2.0.0
- pymysql>=1.0.0
- mcp[cli]>=1.0.0
- httpx>=0.27.0
- setuptools>=65.0.0
- openpyxl>=3.1.0

---



