Metadata-Version: 2.4
Name: yhtool-mcp-server
Version: 0.0.26053112
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-05-30
---

# 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中读取数据
- 查询内容分类提示词和示例API
- 写入内容API

## 2. 安装配置

### 前置要求
uv 管理（推荐）

**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": "uvx",
      "args": [
        "yhtool-mcp-server"
      ],
      "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",
        "CONTENT_URL": "https://your-domain.com",
        "CONTENT_RULE_ROUTE": "/api/content_example",
        "CONTENT_ADD_ROUTE": "/api/add_content",
        "CONTENT_AUTH_USER": "admin",
        "CONTENT_AUTH_SECRET": "123456"
      }
    }
  }
}
```

### 环境变量配置

| 环境变量 | 说明 | 默认值 |
| -------------- | ----------------------------------------------- | ------------------------------------------------------------- |
| `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，[需注册](https://s.ee/zh-CN/)，有免费额度。 | `your-api-key-here` |
| `CONTENT_URL` | 内容服务的基础 URL | `https://domain.cn` |
| `CONTENT_RULE_ROUTE` | 查询内容规则的路由路径 | `/api/content_example` |
| `CONTENT_ADD_ROUTE` | 添加内容的路由路径 | `/api/add_content` |
| `CONTENT_AUTH_USER` | 内容服务的 Auth 用户名 | `admin` |
| `CONTENT_AUTH_SECRET` | 内容服务的 Auth 密码 | `123456` |

**注意**：
1. 环境变量值需要 JSON 格式的字符串，注意字符转义；
2. 如果MCP工具调用失败，可重启IDE客户端后重试。



## 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
```

### 示例8：查询内容分类提示词

```
请帮我查询 blog 分类的内容提示词和示例
```

### 示例9：添加内容到博客

```
请帮我添加一条博客内容：
标题：我的第一篇博客
内容：今天开始我的博客之旅，记录生活和技术学习。
标签：["说说", "生活"]
```


## 4. 工具API参考（非开发人员可忽略后续内容）

### 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="htdb",
    tbname="test_table",
    upt_cate="insert into"
)
```

### 3.3 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.4 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.5 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.6 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)
```

### 3.6 query_content_rules - 查询内容分类提示词

查询指定分类内容的提示词和示例数据，用于指导内容生成。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| cate | string | ✅ | 内容分类 |

**示例：**

```python
# 调用示例
query_content_rules(cate="blog")
```

### 3.7 add_content - 写入内容数据

写入内容数据到 content ，支持分类。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| cate | string | ✅ | 内容分类 |
| title | string | ❌ | 标题，默认空字符串 |
| subtitle | string | ❌ | 副标题，默认空字符串 |
| author | string | ❌ | 作者名，默认使用认证用户名 |
| article | string | ❌ | 文章正文内容，默认空字符串 |
| tags | array | ❌ | 标签列表，JSON数组格式，默认["bot"] |
| tips | string | ❌ | 附加提示信息，默认空字符串 |

**示例：**

```python
# 调用示例 - 添加博客
add_content(
    cate="blog",
    title="我的博客",
    article="今天的学习记录...",
    tags=["技术", "学习"]
)

# 调用示例 - 添加工具
add_content(
    cate="tool",
    title="实用小工具",
    author="工具作者",
    tips="https://example.com/tool"
)
```


## 5. 注意事项

1. **数据库配置**：推荐通过环境变量 `CONSTR_MYSQL` 配置
2. **邮件配置**：推荐通过环境变量 `EMAIL_PARAMS` 配置
3. **编码问题**：CSV 默认使用 utf-8 编码，如需要 gbk 可在调用时指定 encoding="gbk"
4. **环境变量**：环境变量值需要 JSON 格式的字符串
5. **内容服务配置**：使用内容相关工具前需配置 `CONTENT_*` 环境变量

## 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

---



