一个跨平台的打印机AI MCP服务器,支持Windows、macOS和Linux系统,提供打印机管理、状态查询和文件打印功能。
- 🌍 跨平台支持: Windows、macOS、Linux
- 🖨️ 打印机管理: 获取打印机列表、状态查询
- 📄 文件打印: 支持多种文件格式打印
- 🔧 打印机属性: 获取详细打印机配置信息
- 📊 任务管理: 打印任务状态查询和取消
- 🚀 MCP协议: 基于FastMCP构建,支持AI助手集成
- Python 3.10+
- Windows: 建议Windows 10以上
- macOS/Linux: CUPS支持
# 克隆项目
git clone https://github.com/NullYing/printer-ai-mcp.git
cd printer-ai-mcp
# 安装依赖
uv syncdocker compose up -dpython main.pyget_printer_list() -> dict返回系统中所有可用的打印机列表。
printer_status(index: int = None) -> dict获取指定打印机的状态信息。如果不指定index,则返回默认打印机状态。
printer_attrs(index: int = None) -> dict获取打印机的详细配置属性(仅macOS/Linux支持)。
print_file(index: int = None, file_path: str = None, options: dict = None) -> dict使用指定打印机打印文件。支持自定义打印选项。
参数说明:
index: 打印机索引(从1开始)。如果为None,使用默认打印机file_path: 要打印的文件路径options: 打印选项字典(可选),不同平台格式不同:
🪟 Windows 选项 — DEVMODE 文档
Windows 使用 Device Mode (DEVMODE) 参数,以 dm 为前缀:
{
"dmCopies": 2,
"dmOrientation": 1,
"dmColor": 2,
"dmPaperSize": 9,
"dmDuplex": 1,
"dmDefaultSource": 7,
"dmMediaType": 0,
"dmPrintQuality": -4,
"dmCollate": 1
}| 选项 | 类型 | 说明 |
|---|---|---|
dmCopies |
int | 打印份数 |
dmOrientation |
int | 1 = 纵向,2 = 横向 |
dmColor |
int | 1 = 黑白,2 = 彩色 |
dmPaperSize |
int | 纸张大小常量(1 = Letter,5 = Legal,8 = A3,9 = A4,11 = A5) |
dmDuplex |
int | 1 = 单面,2 = 长边翻转,3 = 短边翻转 |
dmDefaultSource |
int | 纸盒来源 |
dmMediaType |
int | 介质类型 |
dmPrintQuality |
int | 打印质量(-4 = 默认,正数值 = DPI) |
dmCollate |
int | 1 = 逐份打印,0 = 不逐份 |
🐧🍎 Linux / macOS 选项 — CUPS/IPP 格式
Linux 和 macOS 使用 CUPS IPP 标准选项:
{
"copies": "2",
"media": "A4",
"orientation_requested": "3",
"print_color_mode": "color",
"sides": "one-sided",
"print_quality": "4",
"page_ranges": "1-5,10-15",
"number_up": "1"
}| 选项 | 类型 | 说明 |
|---|---|---|
copies |
str | 打印份数 |
media |
str | 纸张大小(如 A4、Letter、Legal) |
orientation_requested |
str | 3 = 纵向,4 = 横向 |
print_color_mode |
str | monochrome(黑白)或 color(彩色) |
sides |
str | one-sided(单面)、two-sided-long-edge(长边双面)、two-sided-short-edge(短边双面) |
print_quality |
str | 3 = 草稿,4 = 普通,5 = 高质量 |
page_ranges |
str | 页面范围(如 1-5,10-15) |
number_up |
str | 每页合并页数 |
所有API都返回统一格式的响应:
{
"code": 200,
"msg": "success",
"data": {
// 具体数据内容
}
}在你的MCP配置文件中添加:
{
"mcpServers": {
"printerAIMcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {}
}
}
}printer-ai-mcp/
├── main.py # MCP服务器主文件
├── local_printer/ # 本地打印机模块
│ ├── __init__.py
│ ├── cups.py # macOS/Linux CUPS支持
│ └── windows.py # Windows打印机支持
├── network_printer/ # 网络打印机模块(待开发)
│ └── __init__.py
├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker Compose部署配置
├── pyproject.toml # 项目配置
└── README.md # 项目说明
我们欢迎社区贡献!您可以通过以下方式帮助我们:
- ⭐ 给项目点星 表示您的支持,帮助其他人发现这个项目
- 🐛 报告Bug 通过提交详细的issue来报告问题
- 💡 建议新功能 或改进,通过GitHub issues提出
- 🔧 提交Pull Request 修复bug或添加新功能
- 📖 改进文档 帮助其他用户更好地理解项目
- 🧪 在不同平台测试 并报告兼容性问题
您的贡献让这个项目变得更好。感谢您的支持!
MIT License
如果你更喜欢 CLI + AI Skill 的方式,而不是运行 MCP 服务器,可以看看 printer-ai-skills。它提供了一个独立的 printer-ai CLI 工具,AI 助手(OpenClaw / Cursor / Claude)可以通过 SKILL.md 直接驱动——无需启动服务进程。同样的跨平台打印能力,更轻量的部署方式。