内容
# 文档处理系统 DocMCP
企业级文档处理系统,支持MCP(模型上下文协议)和技能扩展。
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
## 概述
DocMCP 是一个生产级别的文档处理平台,旨在与AI编码助手(如Claude Code、Kimi Code CLI和Trae)无缝集成。通过提供统一、安全、强大的文档内容提取和操作接口,消除了处理二进制文档时对临时处理脚本的需求。
### 主要功能
| 功能 | 描述 |
|---------|-------------|
| **多格式支持** | 支持DOC、DOCX、PDF、XLS、XLSX、PPT、PPTX、TXT、MD、HTML和JSON等原生格式 |
| **MCP协议** | 完全实现了模型上下文协议,以实现AI助手集成标准化 |
| **技能系统** | 动态、可插拔的技能系统,用于自定义文档处理工作流 |
| **安全性优先** | 沙箱执行环境,资源限制,内容扫描和审计日志 |
| **高性能** | 异步处理引擎,连接池,缓存和速率限制 |
| **内容提取** | 完整的文档结构提取,包括文本,表格,图像和元数据 |
### 支持的文档格式
| 格式 | 扩展名 | 读取 | 写入 | 转换 | 备注 |
|--------|-----------|------|-------|---------|-------|
| Word文档 | .doc, .docx | 是 | 是 | 是 | 完整格式化支持 |
| PDF文档 | .pdf | 是 | 部分 | 是 | 需要LibreOffice创建 |
| Excel电子表格 | .xls, .xlsx | 是 | 是 | 是 | 多表支持 |
| PowerPoint | .ppt, .pptx | 是 | 是 | 是 | 幻灯片备注和图像 |
| 纯文本 | .txt | 是 | 是 | 是 | 通用格式 |
| Markdown | .md | 是 | 是 | 是 | 保留结构 |
| HTML | .html, .htm | 是 | 是 | 是 | 网页文档 |
| JSON | .json | 是 | 是 | 是 | 结构化数据 |
## 快速开始
### 安装
```bash
# 基本安装
pip install docmcp
# 完整安装,包含所有功能
pip install docmcp[all]
# 开发安装
pip install -e ".[dev]"
```
### 基本使用
```python
from docmcp import ProcessingEngine, DocumentFormat
# 初始化处理引擎
engine = ProcessingEngine()
# 处理文档
doc = engine.load_document("path/to/document.docx")
# 提取内容
content = await engine.extract_content(doc)
print(content.text)
print(content.tables)
print(content.metadata)
```
### 使用技能
```python
from docmcp.skills import SkillRegistry, SkillContext
# 创建技能注册表
registry = SkillRegistry()
# 执行内置技能
context = SkillContext(document=doc)
result = await registry.execute("extract_text", context)
print(result.data)
```
### MCP服务器
```python
from docmcp.mcp import MCPServer
# 启动MCP服务器
server = MCPServer(host="0.0.0.0", port=8080)
await server.start()
```
## 项目结构
```
docmcp/
├── docmcp/ # 主包
│ ├── core/ # 核心文档处理
│ │ ├── document.py # 文档抽象
│ │ ├── engine.py # 处理引擎
│ │ ├── pipeline.py # 处理管道
│ │ └── handlers/ # 格式处理器
│ │ ├── word_handler.py
│ │ ├── pdf_handler.py
│ │ ├── excel_handler.py
│ │ └── ppt_handler.py
│ ├── mcp/ # MCP协议实现
│ │ ├── protocol.py # 协议定义
│ │ ├── server.py # MCP服务器
│ │ └── client.py # MCP客户端
│ ├── skills/ # 技能系统
│ │ ├── base.py # 基础技能类
│ │ ├── registry.py # 技能注册表
│ │ ├── scheduler.py # 任务调度器
│ │ └── builtins/ # 内置技能
│ ├── security/ # 安全模块
│ │ ├── sandbox.py # 沙箱执行
│ │ ├── auth.py # 身份验证
│ │ └── scanner.py # 内容扫描
│ └── performance/ # 性能模块
│ ├── cache.py # 缓存
│ ├── pool.py # 连接池
│ └── limiter.py # 速率限制
├── tests/ # 测试套件
├── examples/ # 使用示例
└── skills/ # 附加技能目录
```
## 架构
### 核心组件
1. **文档抽象层**
- 所有文档类型的统一接口
- 自动格式检测
- 内容提取和操作
2. **处理引擎**
- 基于异步/等待的架构
- 基于插件的处理程序系统
- 管道处理支持
3. **技能系统**
- 动态加载和执行
- 依赖解析
- 沙箱执行环境
4. **MCP协议实现**
- 基于JSON-RPC 2.0的通信
- 方法路由和处理器
- 连接管理
5. **安全层**
- 进程隔离
- 资源限制(内存,CPU,时间)
- 内容验证和扫描
## 配置
DocMCP可以通过环境变量或配置文件进行配置:
```yaml
# config.yaml
app:
name: DocMCP
debug: false
sandbox:
max_memory_mb: 512
max_execution_time: 30
network_enabled: false
cache:
enabled: true
type: memory
ttl: 3600
```
### 环境变量
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `DOCMCP_DEBUG` | 启用调试模式 | `false` |
| `DOCMCP_SANDBOX_MAX_MEMORY` | 沙箱最大内存(MB) | `512` |
| `DOCMCP_SANDBOX_MAX_TIME` | 最大执行时间(秒) | `30` |
| `DOCMCP_CACHE_TYPE` | 缓存类型(memory/redis) | `memory` |
| `DOCMCP_LOG_LEVEL` | 日志级别 | `info` |
## 测试
运行测试套件:
```bash
# 运行所有测试
pytest tests/ -v
# 运行覆盖率测试
pytest tests/ --cov=docmcp --cov-report=html
# 运行特定测试类别
pytest tests/ -m "not slow"
pytest tests/ -m integration
pytest tests/ -m security
```
## 开发
### 设置开发环境
```bash
# 克隆仓库
git clone https://github.com/your-org/docmcp.git
cd docmcp
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
# 安装开发依赖
pip install -e ".[dev]"
# 安装预提交钩子
pre-commit install
```
### 代码风格
```bash
# 格式化代码
black docmcp/ tests/
# 排序导入
isort docmcp/ tests/
# 类型检查
mypy docmcp/
# linting
flake8 docmcp/
```
## 安全考虑
1. **沙箱执行**:所有用户提供的代码都在隔离的子进程中运行,资源限制严格
2. **内容验证**:使用魔术字节在处理前进行文件类型验证
3. **审计日志**:所有操作都记录下来以供安全审查
4. **网络隔离**:沙箱进程默认情况下无网络访问权限
## 贡献
1. 分叉仓库
2. 创建功能分支(`git checkout -b feature/amazing-feature`)
3. 提交更改(`git commit -m 'Add amazing feature'`)
4. 推送到分支(`git push origin feature/amazing-feature`)
5. 打开拉取请求
## 许可证
该项目根据MIT许可证授权 - 参见[LICENSE](LICENSE)文件了解详情。
## 致谢
- 为与AI编码助手无缝集成而构建
- 源于对AI工作流中健壮文档处理的需求
- 使用行业标准库支持文档格式
## 支持
对于问题和功能请求,请使用[GitHub问题跟踪器](https://github.com/your-org/docmcp/issues)。
## 路线图
- [ ] 增强的OCR支持,用于扫描文档
- [ ] 额外的输出格式(EPUB,MOBI)
- [ ] 云存储集成(S3,Azure Blob,GCS)
- [ ] 分布式处理支持
- [ ] 基于Web的管理界面