MCP Development Framework
by aigo666
# MCP开发框架
[](https://smithery.ai/server/@aigo666/mcp-framework)
一个强大的MCP(Model Context Protocol)开发框架,用于创建与大语言模型交互的自定义工具。该框架提供了一套完整的工具集,可以轻松地扩展Cursor IDE的功能,实现网页内容获取、文件处理(PDF、Word、Excel)等高级功能。
## 主要功能
本框架提供了以下核心功能:
### 1. 综合文件处理
使用`file`工具可以自动识别文件类型并选择合适的处理方式,支持PDF、Word和Excel文件。
- **用法**: `file /path/to/document`
- **支持格式**:
- PDF文件 (.pdf)
- Word文档 (.doc, .docx)
- Excel文件 (.xls, .xlsx, .xlsm)
- **参数**: `file_path` - 文件的本地路径
- **返回**: 根据文件类型返回相应的处理结果
### 2. PDF文档处理
使用`pdf`工具可以处理PDF文档,支持两种处理模式:
- **用法**: `pdf /path/to/document.pdf [mode]`
- **参数**:
- `file_path` - PDF文件的本地路径
- `mode` - 处理模式(可选):
- `quick` - 快速预览模式,仅提取文本内容
- `full` - 完整解析模式,提取文本和图片内容(默认)
- **返回**:
- 快速预览模式:文档的文本内容
- 完整解析模式:文档的文本内容和图片
- **特点**:
- 使用PyMuPDF提供高质量的文本提取和图像处理
- 自动处理大型文件
- 支持图片提取和保存
### 3. Word文档解析
使用`word`工具可以解析Word文档,提取文本、表格和图片信息。
- **用法**: `word /path/to/document.docx`
- **功能**: 解析Word文档并提取文本内容、表格和图片信息
- **参数**: `file_path` - Word文档的本地路径
- **返回**: 文档的文本内容、表格和图片信息
- **特点**: 使用python-docx库提供高质量的文本和表格提取
### 4. Excel文件处理
使用`excel`工具可以解析Excel文件,提供完整的表格数据和结构信息。
- **用法**: `excel /path/to/spreadsheet.xlsx`
- **功能**: 解析Excel文件的所有工作表
- **参数**: `file_path` - Excel文件的本地路径
- **返回**:
- 文件基本信息(文件名、工作表数量)
- 每个工作表的详细信息:
- 行数和列数
- 列名列表
- 完整的表格数据
- **特点**:
- 使用pandas和openpyxl提供高质量的表格数据处理
- 支持多工作表处理
- 自动处理数据类型转换
### 5. 网页内容获取
使用`url`工具可以获取任何网页的内容。
- **用法**: `url https://example.com`
- **参数**: `url` - 要获取内容的网站URL
- **返回**: 网页的文本内容
- **特点**:
- 完整的HTTP错误处理
- 超时管理
- 自动编码处理
## 技术特点
本框架采用了多种技术来优化文件处理性能:
1. **智能文件类型识别**
- 自动根据文件扩展名选择合适的处理工具
- 提供统一的文件处理接口
2. **高效的文档处理**
- PDF处理:支持快速预览和完整解析两种模式
- Word处理:精确提取文本、表格和图片
- Excel处理:高效处理大型表格数据
3. **内存优化**
- 使用临时文件管理大型文件
- 自动清理临时资源
- 分块处理大型文档
4. **错误处理**
- 完整的异常捕获和处理
- 详细的错误信息反馈
- 优雅的失败处理机制
## 文档处理技术细节
### PDF处理
1. **多层次处理策略**:
- 首先尝试使用PyMuPDF(fitz)提取内容(速度快、准确度高)
- 如果失败,回退到PymuPDF4llm(专为大语言模型优化)
- 最后尝试PyPDF2作为最终备用方案
2. **性能优化**:
- 限制处理的最大页数(完整模式: 30页,快速模式: 50页)
- 图片处理优化(DPI调整、大小限制)
- 多线程处理加速
3. **错误处理**:
- 详细的错误信息和提示
- 备用处理方法,确保服务稳定性
- 超时保护机制(5分钟超时设置)
### Word文档处理
1. **文档结构解析**:
- 提取文档属性(标题、作者、创建时间等)
- 段落内容提取,保留原始格式
- 表格转换为Markdown格式
2. **图片信息**:
- 提供文档中图片的数量信息
- 图片引用关系识别
## 项目结构
本框架采用模块化设计,便于扩展和维护:
```
mcp_tool/
├── tools/
│ ├── __init__.py # 定义工具基类和注册器
│ ├── loader.py # 工具加载器,自动加载所有工具
│ ├── file_tool.py # 综合文件处理工具
│ ├── pdf_tool.py # PDF解析工具
│ ├── word_tool.py # Word文档解析工具
│ ├── excel_tool.py # Excel文件处理工具
│ └── url_tool.py # URL工具实现
├── __init__.py
├── __main__.py
└── server.py # MCP服务器实现
```
## 开发指南
### 如何开发新工具
1. 在`tools`目录下创建一个新的Python文件,如`your_tool.py`
2. 导入必要的依赖和基类
3. 创建一个继承自`BaseTool`的工具类
4. 使用`@ToolRegistry.register`装饰器注册工具
5. 实现工具的`execute`方法
### 工具模板示例
```python
import mcp.types as types
from . import BaseTool, ToolRegistry
@ToolRegistry.register
class YourTool(BaseTool):
"""您的工具描述"""
name = "your_tool_name" # 工具的唯一标识符
description = "您的工具描述" # 工具的描述信息,将显示给用户
input_schema = {
"type": "object",
"required": ["param1"], # 必需的参数
"properties": {
"param1": {
"type": "string",
"description": "参数1的描述",
},
"param2": {
"type": "integer",
"description": "参数2的描述(可选)",
}
},
}
async def execute(self, arguments: dict) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]:
"""执行工具逻辑"""
# 参数验证
if "param1" not in arguments:
return [types.TextContent(
type="text",
text="Error: Missing required argument 'param1'"
)]
# 获取参数
param1 = arguments["param1"]
param2 = arguments.get("param2", 0) # 获取可选参数,提供默认值
# 执行工具逻辑
result = f"处理参数: {param1}, {param2}"
# 返回结果
return [types.TextContent(
type="text",
text=result
)]
```
## 部署指南
### Docker部署(推荐)
1. 初始设置:
```bash
# 克隆仓库
git clone https://github.com/your-username/mcp-framework.git
cd mcp-framework
# 创建环境文件
cp .env.example .env
```
2. 使用Docker Compose:
```bash
# 构建并启动
docker compose up --build -d
# 查看日志
docker compose logs -f
# 管理容器
docker compose ps
docker compose pause
docker compose unpause
docker compose down
```
3. 访问服务:
- SSE端点: http://localhost:8000/sse
4. Cursor IDE配置:
- 设置 → 功能 → 添加MCP服务器
- 类型: "sse"
- URL: `http://localhost:8000/sse`
### 传统Python部署
1. 安装系统依赖:
```bash
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y poppler-utils tesseract-ocr tesseract-ocr-chi-sim
# macOS
brew install poppler tesseract tesseract-lang
# Windows
# 1. 下载并安装Tesseract: https://github.com/UB-Mannheim/tesseract/wiki
# 2. 将Tesseract添加到系统PATH
```
2. 安装Python依赖:
```bash
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
.\venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
```
3. 启动服务:
```bash
python -m mcp_tool
```
## 配置
### 环境变量
在`.env`文件中配置:
- `MCP_SERVER_PORT`: 服务器端口(默认: 8000)
- `MCP_SERVER_HOST`: 绑定地址(默认: 0.0.0.0)
- `DEBUG`: 调试模式(默认: false)
- `MCP_USER_AGENT`: 自定义User-Agent
## 依赖项
主要依赖:
- `mcp`: Model Context Protocol实现
- `PyMuPDF`: PDF文档处理
- `python-docx`: Word文档处理
- `pandas`和`openpyxl`: Excel文件处理
- `httpx`: 异步HTTP客户端
- `anyio`: 异步I/O支持
- `click`: 命令行接口
## 贡献指南
1. Fork仓库
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开Pull Request
## 许可证
本项目采用MIT许可证 - 详情请参阅[LICENSE](LICENSE)文件。