本地数据处理工作流实战
本节通过三个完整的真实场景,展示如何把文件系统 MCP + SQLite MCP + 代码执行能力组合成高效的数据处理工作流。
场景一:批量 CSV 数据分析
需求:每周收到 10+ 个部门的 CSV 销售报表,需要合并、清洗、生成摘要。
工具组合:Filesystem MCP + SQLite MCP
sequenceDiagram
participant U as 运营人员
participant C as Claude
participant F as Filesystem MCP
participant DB as SQLite MCP
U->>C: "分析 ~/reports/2026-03/ 下的所有 CSV,
找出销售额最高的5个产品" C->>F: list_directory("~/reports/2026-03/") F-->>C: [dept_A.csv, dept_B.csv, dept_C.csv, ...] C->>F: read_multiple_files([所有CSV路径]) F-->>C: 各CSV内容 C->>DB: create_table("CREATE TABLE sales (...)") C->>DB: write_query("INSERT INTO sales ...") C->>DB: read_query("SELECT product, SUM(amount) ...") DB-->>C: 查询结果 C->>F: write_file("summary_2026_03.md", 格式化报告) C-->>U: 分析完成,报告已保存
找出销售额最高的5个产品" C->>F: list_directory("~/reports/2026-03/") F-->>C: [dept_A.csv, dept_B.csv, dept_C.csv, ...] C->>F: read_multiple_files([所有CSV路径]) F-->>C: 各CSV内容 C->>DB: create_table("CREATE TABLE sales (...)") C->>DB: write_query("INSERT INTO sales ...") C->>DB: read_query("SELECT product, SUM(amount) ...") DB-->>C: 查询结果 C->>F: write_file("summary_2026_03.md", 格式化报告) C-->>U: 分析完成,报告已保存
关键提示词技巧:
提示:
1. 读取 ~/ai-workspace/reports/ 下所有 .csv 文件
2. 检查每个文件的列名,识别产品名、数量、金额列
3. 合并所有数据到内存中的 SQLite 表
4. 查询:按产品汇总销售额,取 TOP 10
5. 生成 Markdown 格式报告,保存到 ~/ai-workspace/output/weekly_summary.md
6. 告诉我每个文件的行数和是否有缺失值
这种结构化的分步提示让 Claude 有清晰的执行路径,减少猜测。
场景二:代码库文档自动生成
需求:为遗留代码库自动生成 API 文档和函数说明。
工具组合:Filesystem MCP + Git MCP
提示:
1. 读取 src/api/ 目录下所有 .py 文件
2. 提取每个函数的签名、参数和现有注释
3. 对没有文档的函数,根据函数名和代码逻辑生成描述
4. 将文档以 Markdown 格式写入 docs/api-reference.md
5. 对比 git diff 确认只修改了文档文件
工作流执行步骤:
graph LR
A["list_directory
(src/api/)"] --> B["read_multiple_files
(*.py)"] B --> C["分析函数签名
和注释"] C --> D["生成文档内容"] D --> E["write_file
(docs/api-reference.md)"] E --> F["git_diff
验证只改了文档"] style A fill:#4A90D9,color:#fff style E fill:#27AE60,color:#fff style F fill:#F39C12,color:#fff
(src/api/)"] --> B["read_multiple_files
(*.py)"] B --> C["分析函数签名
和注释"] C --> D["生成文档内容"] D --> E["write_file
(docs/api-reference.md)"] E --> F["git_diff
验证只改了文档"] style A fill:#4A90D9,color:#fff style E fill:#27AE60,color:#fff style F fill:#F39C12,color:#fff
场景三:多格式报告的批量转换
需求:将 100+ 个 JSON 数据文件转换成人类可读的 Markdown 报告。
工具组合:Filesystem MCP + 代码执行
提示结构:
我有 ~/ai-workspace/raw-data/ 目录下的 JSON 文件,格式如下:
{
"order_id": "...",
"customer": {...},
"items": [...],
"total": ...
}
请:
1. 列出所有 JSON 文件
2. 读取前3个验证格式一致性
3. 如果格式一致,批量转换所有文件
4. 每个 JSON 生成一个对应的 .md 文件,包含:
- 订单摘要表格
- 商品列表
- 异常标记(如:缺少必填字段)
5. 最后生成 conversion_report.md 说明转换结果
处理异常文件的策略:
# Claude 在处理过程中会自动生成类似这样的错误处理逻辑:
results = []
for file in json_files:
try:
data = parse_json(file)
markdown = convert_to_markdown(data)
write_file(f"output/{file.stem}.md", markdown)
results.append({"file": file, "status": "success"})
except Exception as e:
results.append({"file": file, "status": "error", "reason": str(e)})
# 生成转换报告
write_summary(results)
本地工作流的性能优化
当处理大量文件时,合理使用 read_multiple_files(批量读取)比逐个调用 read_file 效率高得多:
# ❌ 低效:逐个读取
for file in files:
content = read_file(file)
# ✅ 高效:批量读取
all_contents = read_multiple_files(files) # 单次工具调用
对于超大文件(>1MB),建议先用 get_file_info 检查大小,避免把整个文件加载到上下文:
提示:先用 get_file_info 检查每个文件大小,
超过 500KB 的文件只读取前 100 行,
然后问我是否需要完整内容
工作流模板:数据处理标准流程
可以将以下模板保存为 Claude Desktop 的自定义提示:
## 本地数据处理模式
每次处理数据文件时,遵循以下步骤:
1. **探索**:先列出目录,了解文件数量和格式
2. **采样**:读取1-3个文件验证格式
3. **确认**:告诉用户将处理哪些文件,等待确认
4. **执行**:批量处理
5. **验证**:抽检3个输出文件
6. **报告**:生成处理摘要(成功数/失败数/跳过数)
输出文件始终保存在 ~/ai-workspace/output/ 目录,
不修改原始文件
本节执行清单
- [ ] 搭建
~/ai-workspace/{reports,raw-data,output,temp}标准目录结构 - [ ] 测试场景一(CSV 分析)的完整流程
- [ ] 在提示词中明确输入目录和输出目录,减少 AI 猜测
- [ ] 对大批量处理任务,使用"探索→采样→确认→执行"四步流程