Lulu Print MCP 서버
Claude Desktop 및 기타 MCP 클라이언트를 통한 주문형 인쇄 서비스를 위한 Lulu Print API와의 통합을 제공하는 MCP(Model Context Protocol) 서버입니다.
특징
📚 인쇄 작업 관리
📄 파일 검증
💰 비용 계산
🚚 배송 관리
🔔 웹훅
인쇄 작업 상태 변경 구독
웹훅 엔드포인트 관리
웹훅 전달 테스트
웹훅 제출 내역 보기
Related MCP server: Fused MCP Agents
설치
글로벌 설치
지엑스피1
지역 개발
# Clone the repository
git clone https://github.com/devlimelabs/lulu-print-mcp.git
cd lulu-print-mcp
# Install dependencies
npm install
# Set up development environment
npm run setup:dev
# Start the development server
npm run dev
도커 설치
# Build and run with Docker Compose
docker-compose up -d
# Or build and run the Docker image directly
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 키 페이지로 이동하세요
클라이언트 키와 클라이언트 비밀번호를 복사하세요
2. 환경 변수 구성
# Create a configuration file
cp .env.example .env
Lulu API 자격 증명으로 .env 파일을 편집합니다.
# Required: Your Lulu API credentials
LULU_CLIENT_KEY=your_client_key_here
LULU_CLIENT_SECRET=your_client_secret_here
# Optional: API endpoints (defaults are provided)
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
# Use sandbox environment for testing (default: false)
LULU_USE_SANDBOX=false
# Enable debug logging (default: false)
DEBUG=false
Claude Desktop과 함께 사용
Claude Desktop 구성 파일에 이 MCP 서버를 추가하세요.
# Run the Claude Desktop setup script
npm run setup:claude
지침에 따라 Claude Desktop 구성 파일을 업데이트하세요. 스크립트는 다음과 유사한 구성을 생성합니다.
{
"mcpServers": {
"lulu-print": {
"command": "lulu-print-mcp",
"env": {
"LULU_CLIENT_KEY": "your_client_key",
"LULU_CLIENT_SECRET": "your_client_secret"
}
}
}
}
커서를 사용한 사용
커서 구성 파일에 이 MCP 서버를 추가합니다.
커서 설정 열기( Cursor → Settings 또는 Mac에서는 Cmd+, )
기능 섹션으로 이동
"모델 컨텍스트 프로토콜" 설정 찾기
다음 구성을 추가합니다.
{
"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"
}
}
}
}
또는 글로벌하게 설치된 경우:
{
"mcpServers": {
"lulu-print": {
"command": "lulu-print-mcp",
"env": {
"LULU_CLIENT_KEY": "your_client_key",
"LULU_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Windsurf와 함께 사용
Windsurf 구성에 이 MCP 서버를 추가하세요:
프로젝트 디렉토리에서 .windsurf/config.json 파일을 생성하거나 편집하세요.
다음 구성을 추가합니다.
{
"mcpServers": {
"lulu-print": {
"command": "lulu-print-mcp",
"env": {
"LULU_CLIENT_KEY": "your_client_key",
"LULU_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Windsurf를 사용한 개발 설정:
{
"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
line_items: Array of items to price
- pod_package_id: Product SKU (e.g., "0600X0900BWSTDPB060UW444MXX")
- page_count: Number of pages
- quantity: Number of copies
shipping_address: Delivery address
- street1: Street address
- city: City name
- country_code: 2-letter ISO country code
- postcode: Postal code
- phone_number: Contact phone
shipping_option: MAIL | PRIORITY_MAIL | GROUND | EXPEDITED | EXPRESS
인쇄 작업 관리
인쇄 작업 생성
새로운 인쇄 작업 주문을 만듭니다.
create-print-job
line_items: Array of books to print
- title: Book title
- cover_url: URL to cover PDF
- interior_url: URL to interior PDF
- pod_package_id: Product SKU
- quantity: Number of copies
shipping_address: Delivery address
- name: Recipient name
- street1: Street address
- city: City
- country_code: 2-letter ISO code
- postcode: Postal code
- phone_number: Phone
contact_email: Email for order communication
shipping_level: MAIL | PRIORITY_MAIL | GROUND | EXPEDITED | EXPRESS
external_id: Your order reference (optional)
목록 인쇄 작업
선택적 필터를 사용하여 인쇄 작업 나열:
list-print-jobs
page: Page number (optional)
page_size: Results per page (optional)
status: Filter by status (optional)
created_after: Filter by creation date (optional)
created_before: Filter by creation date (optional)
인쇄 작업 가져오기
특정 인쇄 작업에 대한 세부 정보를 얻으세요:
get-print-job
id: Print job ID
업데이트-인쇄-작업
인쇄 작업 업데이트(결제 전에만):
update-print-job
id: Print job ID
external_id: New reference (optional)
contact_email: New email (optional)
인쇄 작업 취소
인쇄 작업 취소(미납인 경우에만):
cancel-print-job
id: Print job ID
인쇄 작업 상태 가져오기
인쇄 작업의 현재 상태를 가져옵니다.
get-print-job-status
id: Print job ID
인쇄 작업 비용 가져오기
인쇄 작업에 대한 자세한 비용을 알아보세요.
get-print-job-costs
id: Print job ID
인쇄 작업 통계 가져오기
특정 기간 동안의 인쇄 작업에 대한 통계를 얻으세요.
get-print-job-statistics
start_date: Start date (YYYY-MM-DD) (optional)
end_date: End date (YYYY-MM-DD) (optional)
group_by: DAY | WEEK | MONTH (optional)
파일 검증
내부 파일 검증
내부 PDF 파일 검증:
validate-interior-file
file_url: URL to interior PDF
pod_package_id: Product SKU (optional, for normalization)
내부 검증 받기
유효성 검사 상태 확인:
get-interior-validation
validation_id: ID from validate-interior-file
덮개 치수 계산
필요한 커버 치수를 계산하세요:
calculate-cover-dimensions
pod_package_id: Product SKU
page_count: Number of interior pages
unit: IN | MM | PT (optional, default: PT)
검증-커버-파일
표지 PDF 파일 검증:
validate-cover-file
file_url: URL to cover PDF
pod_package_id: Product SKU
page_count: Number of interior pages
커버 검증 받기
커버 유효성 검사 상태 확인:
get-cover-validation
validation_id: ID from validate-cover-file
해운
배송 옵션 받기
이용 가능한 배송 옵션을 확인하세요:
get-shipping-options
country_code: 2-letter ISO country code
state_code: State/province code (optional)
quantity: Number of items (optional)
pod_package_id: Product SKU (optional)
page_count: Number of pages (optional)
level: Filter by specific level (optional)
웹훅
웹훅 생성
웹훅 구독 만들기:
create-webhook
url: Webhook endpoint URL
topics: Array of events (currently supports ["PRINT_JOB_STATUS_CHANGED"])
웹훅 목록
모든 웹훅 구독 나열:
get-webhook
웹훅 세부 정보 받기:
get-webhook
id: Webhook ID
업데이트-웹훅
웹훅 업데이트:
update-webhook
id: Webhook ID
url: New URL (optional)
topics: New topics (optional)
is_active: Enable/disable (optional)
웹훅 삭제
웹훅 삭제:
delete-webhook
id: Webhook ID
테스트 웹훅
테스트 웹훅 보내기:
test-webhook
id: Webhook ID
topic: PRINT_JOB_STATUS_CHANGED
웹훅 제출 목록
웹훅 전달 시도 목록:
list-webhook-submissions
webhook_id: Filter by webhook (optional)
page: Page number (optional)
page_size: Results per page (optional)
Lulu 제품 SKU
Lulu는 27자로 구성된 SKU 시스템을 사용하여 제품을 식별합니다.
형식 : Trim Size + Color + Print Quality + Bind + Paper + PPI + Finish + Linen + Foil
일반적인 예
상품코드 | 설명 |
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
샌드박스 모드에서:
결제 시 테스트 신용 카드 번호를 사용하세요
주문은 실제 생산으로 전송되지 않습니다.
개발 및 테스트에 적합합니다
명령줄 옵션
lulu-print-mcp [options]
Options:
-s, --sandbox Use Lulu sandbox environment instead of production
-d, --debug Enable debug logging
-h, --help Display help
-V, --version Display version
문제 해결
인증 문제
클라이언트 키와 비밀번호가 올바른지 확인하세요.
올바른 환경(프로덕션 대 샌드박스)을 사용하고 있는지 확인하세요.
API 자격 증명에 필요한 권한이 있는지 확인하세요.
파일 유효성 검사 오류
URL을 통해 PDF 파일에 공개적으로 액세스할 수 있는지 확인하세요.
Lulu 문서에서 파일 형식 요구 사항을 확인하세요.
페이지 수와 치수가 제품 사양과 일치하는지 확인하세요.
네트워크 문제
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
특허
MIT