File Converter MCP Server
by wowyuarm
Verified
# 文件转换 MCP 服务器
简体中文 | [English](README.md)
该 MCP 服务器提供多种文件转换工具,用于转换各种文档和图像格式。该项目基于 [Model Context Protocol(MCP)](https://modelcontextprotocol.io) 构建,旨在为需要文件转换功能的 AI 代理提供服务。
## 功能
- **DOCX 转 PDF**:将 Microsoft Word 文档转换为 PDF
- **PDF 转 DOCX**:将 PDF 文档转换为 Microsoft Word 格式
- **图像格式转换**:在各种图像格式之间转换(JPG、PNG、WebP 等)
- **Excel 转 CSV**:将 Excel 电子表格转换为 CSV 格式
- **HTML 转 PDF**:将 HTML 文件转换为 PDF 格式
- **Markdown 转 PDF**:将 Markdown 文档转换为 PDF,并应用适当的样式
- **通用转换**:一个多功能工具,可处理各种格式转换
## 技术架构
- Python 3.10+
- [Model Context Protocol(MCP)Python SDK](https://pypi.org/project/mcp/)
- 各种转换库:
- [docx2pdf](https://pypi.org/project/docx2pdf/) - 用于 DOCX 转 PDF
- [pdf2docx](https://pypi.org/project/pdf2docx/) - 用于 PDF 转 DOCX
- [Pillow](https://pypi.org/project/Pillow/) - 用于图像格式转换
- [pandas](https://pypi.org/project/pandas/) - 用于 Excel 转 CSV
- [pdfkit](https://pypi.org/project/pdfkit/) - 用于 HTML 转 PDF
- [markdown](https://pypi.org/project/markdown/) - 用于 Markdown 转 HTML
## 安装指南
1. **克隆代码仓库**
```bash
git clone https://github.com/wowyuarm/file-converter-mcp.git
cd file-converter-mcp
```
2. **创建虚拟环境(推荐)**
```bash
python -m venv venv
source venv/bin/activate # Unix系统下
venv\Scripts\activate # Windows系统下
```
3. **安装依赖**
使用 pip 安装所需包:
```bash
pip install mcp docx2pdf pdf2docx pillow pandas pdfkit markdown
```
或者,如果使用 [uv](https://docs.astral.sh/uv/):
```bash
uv add "mcp[cli]" docx2pdf pdf2docx pillow pandas pdfkit markdown
```
注意:某些转换库可能有额外的系统依赖。请查阅它们的文档了解详情。
## 使用方法
### 开发模式运行服务器
测试服务器,运行以下命令:
```bash
mcp dev file_converter_server.py
```
### 安装到 Claude Desktop
可选择将服务器安装到 Claude Desktop:
```bash
mcp install file_converter_server.py --name "File Converter"
```
### API / 工具
该 MCP 服务器暴露以下工具:
#### 基于路径的工具
##### docx2pdf
命令:`docx2pdf`
- **输入**:.docx 文件路径
- **输出**:转换后的 PDF 文件,以 Base64 编码字符串形式返回
##### pdf2docx
命令:`pdf2docx`
- **输入**:PDF 文件路径
- **输出**:转换后的 DOCX 文件,以 Base64 编码字符串形式返回
##### convert_image
命令:`convert_image`
- **输入**:
- 图像文件路径
- 目标格式(例如 "png"、"jpg"、"webp")
- **输出**:转换后的图像文件,以 Base64 编码字符串形式返回
##### excel2csv
命令:`excel2csv`
- **输入**:Excel 文件路径(.xls 或 .xlsx)
- **输出**:转换后的 CSV 文件,以 Base64 编码字符串形式返回
##### html2pdf
命令:`html2pdf`
- **输入**:HTML 或 Markdown 文件路径(.html、.md、.markdown)
- **输出**:转换后的 PDF 文件,以 Base64 编码字符串形式返回
##### convert_file(通用转换器)
命令:`convert_file`
- **输入**:
- 输入文件路径
- 源格式(例如 "docx"、"pdf"、"md")
- 目标格式(例如 "pdf"、"docx")
- **输出**:转换后的文件,以 Base64 编码字符串形式返回
#### 基于内容的工具
##### convert_content(通用内容转换器)
命令:`convert_content`
- **输入**:
- 输入文件的 Base64 编码内容
- 源格式(例如 "docx"、"pdf"、"md")
- 目标格式(例如 "pdf"、"docx")
- **输出**:转换后的文件,以 Base64 编码字符串形式返回
##### docx2pdf_content
命令:`docx2pdf_content`
- **输入**:DOCX 文件的 Base64 编码内容
- **输出**:转换后的 PDF 文件,以 Base64 编码字符串形式返回
##### pdf2docx_content
命令:`pdf2docx_content`
- **输入**:PDF 文件的 Base64 编码内容
- **输出**:转换后的 DOCX 文件,以 Base64 编码字符串形式返回
##### markdown2pdf_content
命令:`markdown2pdf_content`
- **输入**:Markdown 文件的 Base64 编码内容
- **输出**:转换后的 PDF 文件,以 Base64 编码字符串形式返回
## 文件处理
服务器包含强大的文件路径处理功能:
- 使用多阶段搜索策略查找文件
- 在常见位置(临时目录、当前目录)搜索上传的文件
- 尝试多种文件名变体(不区分大小写,带/不带扩展名)
- 提供详细日志以帮助排查文件位置问题
- 与通过 Claude 聊天界面上传的文件无缝协作
- 支持相对和绝对文件路径
- 在可能的情况下自动检测文件格式
### 直接内容转换
如果基于路径的方法失败,您可以使用基于内容的工具:
1. 将文件转换为 base64 编码
2. 使用 `*_content` 工具之一直接从文件内容进行转换
3. 这种方式可以绕过文件路径问题,在某些环境中更可靠
## 错误处理
- 每个工具都使用多种搜索策略验证文件是否存在
- 以结构化的 JSON 格式返回详细的错误信息:`{"success": false, "error": "错误信息"}`
- 成功转换返回:`{"success": true, "data": "base64编码的文件内容"}`
- 服务器包含全面的日志记录用于故障排除
- 服务器优雅地处理异常并返回信息丰富的错误消息
## 贡献指南
欢迎贡献代码!如果您想贡献,请遵循 [CONTRIBUTING.md](CONTRIBUTING.md) 中的指南(中文版:[贡献指南](CONTRIBUTING.md),英文版:[Contributing Guidelines](CONTRIBUTING_EN.md))。
## 许可证
本项目采用 MIT 许可证发布,详见 [LICENSE](LICENSE) 文件。
## GitHub 仓库
访问 GitHub 仓库:https://github.com/wowyuarm/file-converter-mcp