317 查看 · 2026-07-07 更新
Lulu Print MCP 服务器
一个提供与 Lulu 打印 API 集成的 Model Context Protocol (MCP) 服务器,通过 Claude Desktop 和其他 MCP 客户端为按需打印服务。
功能
📚 打印作业管理
- 创建和管理书籍及其他印刷材料的打印作业
- 从创建到交付跟踪订单状态
- 在下单前计算成本
- 支持每个订单中的多个项目行
📄 文件验证
- 在打印前验证内部 PDF 文件
- 通过尺寸检查验证封面 PDF 文件
- 根据页数计算所需的封面尺寸
- 获取详细的验证状态和错误报告
💰 成本计算
- 根据规格计算产品成本
- 包含运费和税费计算
- 支持不同的运输级别(从 MAIL 到 EXPRESS)
- 获取详细的成本明细
🚚 运输管理
- 按目的地检索可用的运输选项
- 支持国际运输
- 从标准邮件到快递的不同服务级别
🔔 Webhooks
- 订阅打印作业状态变更
- 管理 webhook 终端
- 测试 webhook 传递
- 查看 webhook 提交历史记录
安装
全局安装
bash
全局安装包
npm install -g @devlimelabs/lulu-print-mcp
启动服务器
lulu-print-mcp
本地开发
bash
克隆仓库
git clone https://github.com/devlimelabs/lulu-print-mcp.git cd lulu-print-mcp
安装依赖
npm install
设置开发环境
npm run setup:dev
启动开发服务器
npm run dev
Docker 安装
bash
使用 Docker Compose 构建并运行
docker-compose up -d
或者直接构建并运行 Docker 镜像
docker build -t lulu-print-mcp . docker run -p 3000:3000 lulu-print-mcp
配置
1. 获取 Lulu API 凭证
- 在 https://developers.lulu.com/ 注册 Lulu 开发者账户
- 为了测试,在 https://developers.sandbox.lulu.com/ 创建沙盒账户
- 导航到您的 API Keys 页面
- 复制您的客户端密钥和客户端密文
2. 配置环境变量
bash
创建配置文件
cp .env.example .env
编辑 .env 文件以包含您的 Lulu API 凭证:
必填:您的 Lulu API 凭证
LULU_CLIENT_KEY=your_client_key_here LULU_CLIENT_SECRET=your_client_secret_here
可选:API 端点(已提供默认值)
LULU_API_URL=https://api.lulu.com LULU_SANDBOX_API_URL=https://api.sandbox.lulu.com LULU_AUTH_URL=https://api.lulu.com/auth/realms/glasstree/protocol/openid-connect/token LULU_SANDBOX_AUTH_URL=https://api.sandbox.lulu.com/auth/realms/glasstree/protocol/openid-connect/token
使用沙盒环境进行测试(默认:false)
LULU_USE_SANDBOX=false
启用调试日志(默认:false)
DEBUG=false
与 Claude Desktop 一起使用
将此 MCP 服务器添加到您的 Claude Desktop 配置文件中:
bash
运行 Claude Desktop 设置脚本
npm run setup:claude
按照说明更新您的 Claude Desktop 配置文件。该脚本将生成类似以下的配置:
json { "mcpServers": { "lulu-print": { "command": "lulu-print-mcp", "env": { "LULU_CLIENT_KEY": "your_client_key", "LULU_CLIENT_SECRET": "your_client_secret" } } } }
与 Cursor 一起使用
将此 MCP 服务器添加到您的 Cursor 配置文件中:
- 打开 Cursor 设置 (
Cursor → Settings或在 Mac 上Cmd+,) - 导航到功能部分
- 找到“Model Context Protocol”设置
- 添加以下配置:
json { "mcpServers": { "lulu-print": { "command": "node", "args": ["/path/to/global/lulu-print-mcp/dist/index.js"], "env": { "LULU_CLIENT_KEY": "your_client_key", "LULU_CLIENT_SECRET": "your_client_secret" } } } }或者如果全局安装:
json { "mcpServers": { "lulu-print": { "command": "lulu-print-mcp", "env": { "LULU_CLIENT_KEY": "your_client_key", "LULU_CLIENT_SECRET": "your_client_secret" } } } }
使用Windsurf
将此MCP服务器添加到您的Windsurf配置中:
- 在项目目录中创建或编辑
.windsurf/config.json文件 - 添加以下配置:
json { "mcpServers": { "lulu-print": { "command": "lulu-print-mcp", "env": { "LULU_CLIENT_KEY": "your_client_key", "LULU_CLIENT_SECRET": "your_client_secret" } } } }
对于使用Windsurf的开发设置:
json { "mcpServers": { "lulu-print": { "command": "tsx", "args": ["src/index.ts"], "cwd": "/path/to/lulu-print-mcp", "env": { "LULU_CLIENT_KEY": "your_client_key", "LULU_CLIENT_SECRET": "your_client_secret" } } } }
可用工具
成本计算
calculate-print-job-cost
计算打印作业的成本而不创建它:
calculate-print-job-cost line_items: 要定价的项目数组 - pod_package_id: 产品SKU(例如:"0600X0900BWSTDPB060UW444MXX") - page_count: 页数 - quantity: 副本数量 shipping_address: 交货地址 - street1: 街道地址 - city: 城市名称 - country_code: 两位ISO国家代码 - postcode: 邮政编码 - phone_number: 联系电话 shipping_option: MAIL | PRIORITY_MAIL | GROUND | EXPEDITED | EXPRESS
打印作业管理
create-print-job
创建一个新的打印作业订单:
create-print-job line_items: 要打印的书籍数组 - title: 书名 - cover_url: 封面PDF的URL - interior_url: 内页PDF的URL - pod_package_id: 产品SKU - quantity: 副本数量 shipping_address: 交货地址 - name: 收件人姓名 - street1: 街道地址 - city: 城市 - country_code: 两位ISO代码 - postcode: 邮政编码 - phone_number: 电话 contact_email: 订单通信邮箱 shipping_level: MAIL | PRIORITY_MAIL | GROUND | EXPEDITED | EXPRESS external_id: 您的订单参考(可选)
list-print-jobs
列出打印作业,可选过滤器:
list-print-jobs page: 页码(可选) page_size: 每页结果数(可选) status: 按状态过滤(可选) created_after: 按创建日期过滤(可选) created_before: 按创建日期过滤(可选)
get-print-job
获取特定打印作业的详细信息:
get-print-job id: 打印作业ID
update-print-job
更新打印作业(仅在付款前):
update-print-job id: 打印作业ID external_id: 新参考(可选) contact_email: 新邮箱(可选)
cancel-print-job
取消打印作业(仅当未付款时):
cancel-print-job id: 打印作业ID
get-print-job-status
获取打印作业的当前状态:
get-print-job-status id: 打印作业ID
get-print-job-costs
获取打印作业的详细成本:
get-print-job-costs id: 打印作业ID
get-print-job-statistics
获取一段时间内的打印作业统计信息:
get-print-job-statistics start_date: 开始日期 (YYYY-MM-DD)(可选) end_date: 结束日期 (YYYY-MM-DD)(可选) group_by: DAY | WEEK | MONTH(可选)
文件验证
validate-interior-file
验证内页PDF文件:
validate-interior-file file_url: 内页PDF的URL pod_package_id: 产品SKU(可选,用于标准化)
get-interior-validation
检查验证状态:
get-interior-validation validation_id: 来自validate-interior-file的ID
calculate-cover-dimensions
计算所需的封面尺寸:
calculate-cover-dimensions pod_package_id: 产品SKU page_count: 内页页数 unit: IN | MM | PT(可选,默认:PT)#### validate-cover-file 验证封面PDF文件:
validate-cover-file file_url: 封面PDF的URL pod_package_id: 产品SKU page_count: 内页页数
get-cover-validation
检查封面验证状态:
get-cover-validation validation_id: 从validate-cover-file获取的ID
运输
get-shipping-options
获取可用的运输选项:
get-shipping-options country_code: 2位ISO国家代码 state_code: 州/省代码(可选) quantity: 物品数量(可选) pod_package_id: 产品SKU(可选) page_count: 页数(可选) level: 按特定级别筛选(可选)
Webhooks
create-webhook
创建Webhook订阅:
create-webhook url: Webhook端点URL topics: 事件数组(当前支持["PRINT_JOB_STATUS_CHANGED"])
list-webhooks
列出所有Webhook订阅:
list-webhooks
get-webhook
获取Webhook详情:
get-webhook id: Webhook ID
update-webhook
更新Webhook:
update-webhook id: Webhook ID url: 新URL(可选) topics: 新主题(可选) is_active: 启用/禁用(可选)
delete-webhook
删除Webhook:
delete-webhook id: Webhook ID
test-webhook
发送测试Webhook:
test-webhook id: Webhook ID topic: PRINT_JOB_STATUS_CHANGED
list-webhook-submissions
列出Webhook交付尝试:
list-webhook-submissions webhook_id: 按Webhook过滤(可选) page: 页码(可选) page_size: 每页结果数(可选)
Lulu 产品SKU
Lulu使用27个字符的SKU系统来标识产品:
格式: Trim Size + Color + Print Quality + Bind + Paper + PPI + Finish + Linen + Foil
常见示例
| SKU | 描述 |
|---|---|
0850X1100BWSTDLW060UW444MNG | 8.5" x 11" 黑白标准亚麻封面,海军蓝亚麻和金色烫金 |
0600X0900FCSTDPB080CW444GXX | 6" x 9" 全彩标准平装书,光面封面 |
0700X1000FCPRECO060UC444MXX | 7" x 10" 全彩高级线圈装订,哑光封面 |
0600X0900BWSTDPB060UW444MXX | 6" x 9" 黑白标准平装书,哑光封面 |
使用Lulu定价计算器生成符合您需求的SKU。
使用沙盒进行测试
要使用Lulu沙盒环境进行测试:
- 在https://developers.sandbox.lulu.com/创建一个沙盒账户
- 获取您的沙盒API凭据
- 在您的
.env文件中设置LULU_USE_SANDBOX=true - 或者在运行CLI时使用
--sandbox标志:lulu-print-mcp --sandbox
在沙盒模式下:
- 使用测试信用卡号码进行支付
- 订单不会被发送到实际生产环境
- 非常适合开发和测试
命令行选项
bash lulu-print-mcp [options]
选项: -s, --sandbox 使用Lulu沙盒环境而不是生产环境 -d, --debug 启用调试日志 -h, --help 显示帮助 -V, --version 显示版本
故障排除
身份验证问题
- 确认您的客户端密钥和密钥是否正确
- 检查您是否使用了正确的环境(生产环境与沙盒环境)
- 确保您的API凭据具有必要的权限
文件验证错误
- 确保PDF文件可以通过URL公开访问
- 检查Lulu文档中的文件格式要求
- 确认页数和尺寸与产品规格匹配
网络问题
- 检查您的互联网连接
- 确认防火墙设置允许HTTPS连接到api.lulu.com
- 启用调试模式以查看详细的请求/响应日志
贡献
欢迎贡献!请随时提交Pull Request。
许可证
MIT
服务配置
[{'mcpServers': {'lulu-print': {'command': 'lulu-print-mcp', 'env': {'LULU_CLIENT_KEY': 'your_client_key', 'LULU_CLIENT_SECRET': 'your_client_secret'}}}}, {'mcpServers': {'lulu-print': {'args': ['/path/to/global/lulu-print-mcp/dist/index.js'], 'command': 'node', 'env': {'LULU_CLIENT_KEY': 'your_client_key', 'LULU_CLIENT_SECRET': 'your_client_secret'}}}}, {'mcpServers': {'lulu-print': {'command': 'lulu-print-mcp', 'env': {'LULU_CLIENT_KEY': 'your_client_key', 'LULU_CLIENT_SECRET': 'your_client_secret'}}}}, {'mcpServers': {'lulu-print': {'command': 'lulu-print-mcp', 'env': {'LULU_CLIENT_KEY': 'your_client_key', 'LULU_CLIENT_SECRET': 'your_client_secret'}}}}, {'mcpServers': {'lulu-print': {'args': ['src/index.ts'], 'command': 'tsx', 'cwd': '/path/to/lulu-print-mcp', 'env': {'LULU_CLIENT_KEY': 'your_client_key', 'LULU_CLIENT_SECRET': 'your_client_secret'}}}}]
来源
- 来源:github
- 链接:https://github.com/devlimelabs/lulu-print-mcp