MCP Invoice
一个用于发票和收据处理的 Python MCP 服务器,它使用 OCR 技术从 PDF 和图像中提取数据,并为 AI 助手提供处理、从发票文档中提取文本以及合并发票文档的能力。 (Alternatively, a slightly more formal translation:) 一个基于 Python 的 MCP 服务器,用于发票和收据处理。该服务器利用 OCR 技术从 PDF 和图像中提取数据,并为 AI 助手提供处理发票文档、提取文本以及合并文档的功能。
README
MCP 发票
这是一个使用 Python 开发的 MCP (Model Context Protocol) 服务器项目,专注于发票和收据处理的工具集合。该项目利用 OCR 技术实现发票识别、数据提取和 PDF 处理功能,为 AI 助手提供发票处理能力。
功能特点
- 发票和收据 OCR 处理:
- 使用 macOS Vision framework 进行高精度文本识别
- 支持处理单个 PDF 或图片文件(JPEG、PNG)
- 支持批量处理目录下的所有发票和收据文件
- 支持中英文 OCR 识别,适用于各类发票格式
- 提供结构化数据提取,方便后续分析
- PDF合并和管理功能:
- 支持将多个发票或收据 PDF 文件合并为一个
- 支持将多张发票图片(JPEG、PNG)合并为一个 PDF 文件
- 支持混合合并不同格式的发票和收据
- 高效的内存处理方式,减少磁盘 I/O,提高处理速度
MCP 部署指南
环境要求
- macOS 系统(支持 Vision framework)
- Python 3.10 或更高版本
- uv 依赖管理工具
从 GitHub 安装
- 确保已安装 uv:
pip install uv
- 从 GitHub 克隆项目并安装依赖:
git clone https://github.com/[username]/mcp-invoice.git
cd mcp-invoice
uv venv
source .venv/bin/activate
uv pip install -e .
安装 PDF 处理依赖
pdf2image 需要系统上安装 Poppler:
brew install poppler
部署为 MCP 服务
有两种方式部署 MCP 服务:
1. 直接运行服务器
# 标准模式
mcp-invoice
# 或启用调试模式(包含文本位置信息)
MCP_INVOICE_DEBUG=true mcp-invoice
2. 使用 invoice_server.py 脚本
# 标准模式
python invoice_server.py
# 或启用调试模式
MCP_INVOICE_DEBUG=true python invoice_server.py
配置为系统服务
可以将 MCP 服务配置为系统服务,使其在系统启动时自动运行:
- 创建 LaunchAgent plist 文件:
mkdir -p ~/Library/LaunchAgents
cat > ~/Library/LaunchAgents/com.user.mcp-invoice.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.mcp-invoice</string>
<key>ProgramArguments</key>
<array>
<string>$(which python)</string>
<string>$(pwd)/invoice_server.py</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>$(pwd)/logs/mcp-invoice.log</string>
<key>StandardErrorPath</key>
<string>$(pwd)/logs/mcp-invoice-error.log</string>
<key>WorkingDirectory</key>
<string>$(pwd)</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
</dict>
</plist>
EOF
# 创建日志目录
mkdir -p logs
# 加载服务
launchctl load ~/Library/LaunchAgents/com.user.mcp-invoice.plist
- 启动服务:
launchctl start com.user.mcp-invoice
- 停止服务:
launchctl stop com.user.mcp-invoice
AI 编辑器集成
在 Cursor 中配置 MCP
在 Cursor 编辑器中,可以通过以下配置添加 MCP Invoice 服务:
-
打开 Cursor 的 MCP 配置文件:
- macOS:
$HOME/Library/Application Support/Cursor/tools/tools.json - Linux:
$HOME/.config/Cursor/tools/tools.json - Windows:
%APPDATA%\Cursor\tools\tools.json
- macOS:
-
在
tools.json文件中添加 MCP Invoice 服务配置:
{
"tools": {
"invoice": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-invoice",
"run",
"invoice_server.py"
],
"env": {
"MCP_INVOICE_DEBUG": "false"
},
"alwaysAllow": [
"process_file",
"process_directory",
"merge_pdfs"
]
}
}
}
- 重启 Cursor 后,你可以在 AI 助手中直接请求使用功能,例如: "请使用 OCR 工具读取文件:/path/to/document.pdf" "请合并这些 PDF 文件:/path/to/file1.pdf, /path/to/file2.pdf"
在 Cline 中配置 MCP
Cline 与 MCP 集成方法类似于 Cursor:
- 更新 Cline 配置文件来添加此 MCP 工具
- 重启 Cline 客户端
- 使用与 Cursor 相同的方式来请求处理发票文件
在 Roocode 中配置 MCP
在 Roocode 中集成 MCP Invoice 服务:
- 按照 Roocode 文档配置外部工具
- 指向已部署的 MCP Invoice 服务
- 在 Roocode 中使用自然语言请求处理发票文件
MCP 服务调试
- 启用详细日志:
MCP_INVOICE_DEBUG=true mcp-invoice
- 检查服务是否正常运行:
ps aux | grep mcp-invoice
- 查看日志:
tail -f logs/mcp-invoice.log
使用方法
MCP 服务器提供以下主要工具:
-
process_file: 处理单个文件并提取文本- 参数:
file_path- 文件的绝对路径 - 返回:包含文件路径和提取文本的字典
- 参数:
-
process_directory: 处理一个目录中的所有 PDF 和图片文件- 参数:
directory_path- 目录的绝对路径 - 返回:包含每个文件路径和提取文本的字典列表
- 参数:
-
merge_pdfs: 合并多个PDF和/或图片文件为一个PDF- 参数:
file_paths- 要合并的文件路径列表 - 参数:
output_path- 输出PDF的路径 - 返回:合并后PDF的路径
- 参数:
开发和扩展
本项目使用 uv 进行依赖管理,使用 hatch 进行构建。
开发环境设置
- 创建虚拟环境:
uv venv
source .venv/bin/activate
- 安装开发依赖:
uv pip install -e ".[dev]"
故障排除
-
Vision framework 错误
- 确保使用 macOS 系统
- 确保已安装 pyobjc-framework-vision 11.0 或更高版本
-
UTF-8 编码问题
- 所有 OCR 结果均使用 UTF-8 编码处理,确保多语言文本正确显示
-
PDF 转换错误
- 确保已安装 poppler
- 检查 PDF 文件是否有权限访问和可读
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器