一个强大的MCP(模型上下文协议)开发框架,用于创建与大型语言模型交互的自定义工具。该框架提供了一整套工具,可以轻松扩展光标IDE的功能,支持高级功能如网页内容检索、文件处理(PDF、Word、Excel、CSV、Markdown)以及AI对话。它具有强大的MCP工具扩展能力,使开发者能够快速构建和集成各种自定义工具。
<a href="https://glama.ai/mcp/servers/@aigo666/mcp-framework"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=3872302720,1309051052&fm=3081&app=3081&f=PNG?w=760&h=400" /> </a> <details> <summary>🔥 最新特性:文档图片内容显示与理解</summary>最新版本现在支持直接返回原始图像内容和PDF及Word文档处理中的OCR识别,使大型语言模型同时理解文档中的文本和图像内容。
这使得AI模型能够更全面地理解和分析文档内容,特别是对于包含图表、表单、流程图或其他视觉信息的文档非常有价值。
</details>此框架提供了以下核心功能:
使用parse_file工具可以自动识别文件类型并选择适当的处理方法,支持PDF、Word、Excel、CSV和Markdown文件。
parse_file /path/to/documentfile_path - 文件的本地路径使用parse_pdf工具可以处理PDF文档,并支持两种处理模式:
parse_pdf /path/to/document.pdf [mode]file_path - PDF文件的本地路径mode - 处理模式(可选):
quick - 快速预览模式,仅提取文本内容full - 完整解析模式,提取文本、图像内容和OCR文本(默认)使用parse_word工具可以解析Word文档,提取文本、表格和图像信息。
parse_word /path/to/document.docxfile_path - Word文档的本地路径使用parse_excel工具可以解析Excel文件,并提供完整的表格数据和结构信息。
parse_excel /path/to/spreadsheet.xlsxfile_path - Excel文件的本地路径使用parse_csv工具可以解析CSV文件,并提供完整的数据分析和预览功能。
parse_csv /path/to/data.csvfile_path - CSV文件的本地路径encoding - 文件编码格式(可选,默认自动检测)使用parse_markdown工具可以解析Markdown文件,提取文本内容、标题结构和列表等信息。
parse_markdown /path/to/document.mdfile_path - Markdown文件的本地路径使用url工具可以检索任何网页的内容。
url https://example.comurl - 获取内容的网站URL使用maxkb工具可以通过与MaxKB API交互来实现智能对话功能。
maxkb "您的问题或指令"message - 要发送的消息内容(必需)re_chat - 是否重新开始对话(可选,默认false)stream - 是否使用流式响应(可选,默认为true)此框架采用各种技术以优化文件处理性能:
智能文件类型识别
高效的文档处理
强大的MCP工具扩展能力
内存优化
错误处理
此框架采用模块化设计,便于扩展和维护:
mcp_tool/
├── tools/
│ ├── __init__.py # 定义工具基类和注册器
│ ├── loader.py # 工具加载器,自动加载所有工具
│ ├── file_tool.py # 综合文件处理工具
│ ├── pdf_tool.py # PDF解析工具
│ ├── word_tool.py # Word文档解析工具
│ ├── excel_tool.py # Excel文件处理工具
│ ├── csv_tool.py # CSV文件处理工具
│ ├── markdown_tool.py # Markdown文件解析工具
│ ├── url_tool.py # URL工具实现
│ └── maxkb_tool.py # MaxKB AI对话工具
├── __init__.py
├── __main__.py
└── server.py # MCP服务器实现
tools目录下创建一个新的Python文件,例如your_tool.pyBaseTool的工具类别@ToolRegistry.register装饰器注册工具execute方法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
)]
在.env文件中配置以下环境变量:
# 服务器配置
MCP_SERVER_PORT=8000 # 服务器端口
MCP_SERVER_HOST=0.0.0.0 # 服务器主机
# 鉴权配置
MCP_AUTH_URL=http://170.106.105.206:4000/users # 鉴权服务地址
# MaxKB配置
MAXKB_HOST=http://host.docker.internal:8080 # MaxKB API主机地址
MAXKB_CHAT_ID=your_chat_id_here # MaxKB聊天ID
MAXKB_APPLICATION_ID=your_application_id_here # MaxKB应用ID
MAXKB_AUTHORIZATION=your_authorization_key # MaxKB授权密钥
# 调试模式
DEBUG=false # 是否启用调试模式
# 用户代理
MCP_USER_AGENT="MCP Test Server (github.com/modelcontextprotocol/python-sdk)"
# 本地目录挂载配置
HOST_MOUNT_SOURCE=/path/to/your/local/directory # 本地目录路径
HOST_MOUNT_TARGET=/host_files # 容器内挂载路径
框架支持将本地目录挂载到容器中,以便工具可以访问本地文件。配置方法:
.env文件中设置HOST_MOUNT_SOURCE和HOST_MOUNT_TARGET环境变量HOST_MOUNT_SOURCE是您本地机器上的目录路径HOST_MOUNT_TARGET是容器内的挂载路径(默认为)/host_files)使用工具时,可以直接引用本地文件路径,框架会自动将其转换为容器内的路径。例如:
# 使用PDF工具处理本地文件
pdf "/Users/username/Documents/example.pdf"
# 框架会自动将路径转换为容器内路径
# 例如:"/host_files/example.pdf"
这样,您可以轻松访问本地文件而无需修改工具代码。
# 克隆仓库
git clone https://github.com/aigo666/mcp-framework.git
cd mcp-framework
# 创建环境文件
cp .env.example .env
# 构建并启动
docker compose up --build -d
# 查看日志
docker compose logs -f
# 管理容器
docker compose ps
docker compose pause
docker compose unpause
docker compose down
访问服务:
Cursor IDE配置:
http://localhost:8000/sse?token=<your-token>(替换)<your-token>为您的JWT TokenSSE服务现在支持API认证机制,每个请求都需要携带有效的认证信息:
配置认证服务地址:
.env文件中设置MCP_AUTH_URL环境变量(默认为)http://170.106.105.206:4000/users此认证地址仅供测试使用,不保证长期稳定性。建议使用以下项目进行自行部署客户端配置:
token查询参数http://your-server:8000/sse?token=<your-token>Bearer <your-token>格式发送给认证服务认证过程:
Authorization: Bearer <your-token>头部推荐JWT认证服务:
# 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
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
.\venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
python -m mcp_tool
主要依赖项:
mcp - 模型上下文协议的实现PyMuPDF - PDF文档处理python-docx - Word文档处理pandas 和 openpyxl - Excel文件处理httpx - 异步HTTP客户端anyio - 异步I/O支持click - 命令行界面git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目采用MIT许可证 - 请参阅详细信息许可证文档。