Unofficial / Open Source / MCP Server

送り状印刷を、
Claude からひとつのコマンドで。

ヤマトB2クラウドで発行した送り状PDFを、小さなRaspberry Piに繋いだサーマルプリンタへ直接流し込むMCPサーバー。デスクの上で、ラベルだけが、静かに流れ出す。

// print shipping labels from Claude.ai to your WS-420B thermal printer,
// hosted on a 10-gram Raspberry Pi Zero 2 W with WiFi.

はじめかた View on GitHub
!
非公式プロジェクト (Unofficial) — このソフトウェアはヤマト運輸株式会社およびヤマトホールディングス株式会社とは一切関係がありません。"YAMATO"、"ヤマト"、"クロネコ"、"宅急便"、"B2クラウド"はヤマトホールディングス株式会社またはその関連会社の商標または登録商標です。本プロジェクトは、自分で入手した送り状PDFを自分のプリンタで印刷するための汎用ユーティリティです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OK
宅急便 ヤマト運輸
SLIP-TYPE-230 / 17.8×10.8cm
FROM:東京 品川区
TO:埼玉 川口市
SIZE:60サイズ
COOL:
COD:
DATE:2026-04-16
JOB:job_af3b21
**1234567890**
1234-5678-9012

"この送り状、印刷しといて"
と頼むだけ。

Claude.ai に接続した MCP サーバーが、PDFをラスタライズし、ディザ処理で1bit化し、TSPL言語に変換し、USBプリンタに直接書き込みます。業務系の"印刷ボタン"を押す手間が、会話ひとつに置き換わります。

対応送り状は 宅急便(230)・コレクト(241)・タイムサービス(203)・ネコポス・クロネコゆうパケット・クロネコゆうメール の6種類。カスタムサイズも指定可能。

/ 10-gram device. Zero port forwarding. Full open source.
203tests
All passing
88%
Line coverage
7tools
MCP tools
10g
Pi Zero 2 W
// 01    MCP Tools

Claude から呼べる
7 つの機能

MCP / 01

print_uploaded

/upload エンドポイントに送信済みの PDF を file_id 指定で印刷します。B2クラウドからDLしたファイルをそのまま食わせる、いちばんシンプルな流れ。

MCP / 02

print_url

S3 presigned URL、Cloudflare R2、公開URLから直接取得して印刷。業務システムが生成したPDFをストレージに置くだけで連携可能。

MCP / 03

list_uploads

現在サーバーに残っているアップロード済みPDFを一覧表示。TTL 30分で自動削除されるので溜まっていきません。

MCP / 04

list_jobs

過去の印刷ジョブをSQLiteから取得。ファイル名・送り状種別・ステータス・バイト数・時刻すべて記録。

MCP / 05

get_job_status

特定ジョブの状態とエラー内容を取得。completed/failed/printing いずれの場合も詳細が返ります。

MCP / 06

validate_print_options

実印刷前に slip_type やカスタムサイズの妥当性、プリンタデバイスのアクセス可否を検査。ドライランに最適。

MCP / 07

list_slip_types

サポートする送り状プリセットと用紙サイズ、使い方の例を返します。未対応品番のリクエストを防ぐ。

CORE PIPELINE

pdf → TSPL

PyMuPDFではなく Node.js の pdf-to-img + sharp で1bitディザ化 → 自前のBITMAPパッキング → TSPL出力。Pi Zero 2 Wでも数秒以内。

// 02    How it works

4ステップで印刷される
仕組み。

01
Upload

PDFをアップロード

curl で /upload に POST。サーバーは file_id を返し、/tmp に30分保持します。

02
MCP Call

print_uploaded 呼び出し

Claude から file_id と slip_type を指定。Cloudflare Tunnel 経由で MCP サーバーへ到達。

03
Convert

PDF → TSPL

ラスタライズ → リサイズ → 1bitディザ → MSBファースト パッキング → TSPL BITMAPコマンド生成。

04
Print

/dev/usb/lp0 へ

Linuxカーネルのusblpドライバ経由で直接書き込み。WS-420Bが数秒でラベルを吐き出します。

// 03    Quick start

3分で動かす。

Raspberry Pi Zero 2 W + WS-420B が手元にある前提で、セットアップは以下の3ステップ。はじめての人でも作れるようさらに詳しいガイドも用意しています。

STEP 01 / Clone and setup
pi@raspberrypi:~
# リポジトリをクローン
git clone https://github.com/DaisukeHori/yamato-printer-mcp-server.git
cd yamato-printer-mcp-server

# セットアップスクリプト実行 (Node.js/依存/systemd/cloudflared 全部込み)
sudo ./scripts/setup-pi.sh --longevity
STEP 02 / Cloudflare Tunnel 設定
cloudflared setup
cloudflared tunnel login
cloudflared tunnel create yamato-printer
cp cloudflared/config.yml.example ~/.cloudflared/config.yml
# config.yml のTUNNEL-UUIDを書き換え
cloudflared tunnel route dns yamato-printer yamato-printer.yourdomain.com
sudo systemctl enable --now cloudflared
STEP 03 / Claude.ai に接続
Claude.ai / Settings → Connectors
# URL を登録するだけ
https://yamato-printer.yourdomain.com/mcp?key=<MCP_API_KEY>

# 使ってみる (Claude との会話内で)
"この送り状PDFを印刷して" (PDFファイル添付)
→ print_uploaded が呼ばれ、数秒でラベルが出力される
// 04    Hardware

必要なもの
(総額 1万円前後)。

Raspberry Pi Zero 2 W RPI-0-2-W

¥2,500 - ¥3,500

クアッドコア Cortex-A53 (1GHz) + 512MB RAM + WiFi 2.4GHz内蔵。サイズ 65×30mm、10グラム。スイッチサイエンス等で購入可能。

WS-420B サーマルプリンタ TSPL-compat

¥8,000 - ¥12,000

和信テック製 (XprinterのOEM)。USB接続でTSPL/EPL/ZPL対応。203dpi、最大幅108mmでヤマト送り状にピッタリ。

microSDカード High Endurance

¥1,500 - ¥3,000

防犯カメラ・ドラレコ用の高耐久 (32GB〜64GB推奨)。24時間365日稼働に耐えるモデルを選ぶと長寿命。

電源 (5V/2.5A) Micro-USB

¥500 - ¥1,000

Micro USB の電源アダプタ。データポートは別USBなので、AC/USBから給電すればよい。

USB OTG ケーブル Micro-B→A

¥300 - ¥800

Pi Zero のMicro USB データポートとプリンタのUSB-Aを繋ぐためのOTG変換。100円ショップでも入手可。

ヤマト送り状ロール #230 / #10230004

ヤマトから無料受領

ヤマトビジネスメンバーズに加入すれば、プリンタ対応の送り状ロールが無料で届きます。

Step-by-step / Absolute beginners welcome

ゼロから作る、
超詳細ガイド

プログラミングもLinuxもやったことない人 を対象にしたガイド。書いてある通りに順番にコピペしていけば、誰でもAIから送り状が印刷できる環境が完成します。各ステップをクリックすると詳細が展開されます。

所要時間: 初回 2〜3時間 / 2回目以降 30分
予算: 約13,000円〜18,000円
前提知識: なし
00

買い物リスト

Shopping / 約13,000円〜

絶対に必要なもの

名前値段何に使う
Raspberry Pi Zero 2 W2,500〜3,500円コンピュータ本体
microSDカード 32GB (防犯カメラ用)1,500〜2,000円OSを入れる
Micro USB 電源 5V/2.5A500〜1,000円電気をあげる
Micro USB ⇔ USB-A OTGケーブル300〜800円プリンタ接続
WS-420B サーマルプリンタ8,000〜12,000円印字する装置
送り状ロール紙無料印刷する紙(ヤマトビジネスメンバーズから取得)
どこで買う? Raspberry Pi は スイッチサイエンス秋月電子 が確実。プリンタとOTGケーブルはAmazonで。SDカードは家電量販店でもOK。
01

microSDカードに OS を書き込む

Install OS / 10〜15分

1-1. Raspberry Pi Imager をダウンロード

専用アプリをダウンロード → https://www.raspberrypi.com/software/

自分のPCに合わせて選んでインストール:

  • Mac: "Download for macOS"
  • Windows: "Download for Windows"
  • Linux: apt または dnf でインストール

1-2. microSDカードをPCに挿す

⚠️ 注意 microSDの中身は書き込むと全部消えます。大事なデータがあれば先にバックアップを。

1-3〜1-6. Raspberry Pi Imager で選択

  1. CHOOSE DEVICE」→ Raspberry Pi Zero 2 W
  2. CHOOSE OS」→ Raspberry Pi OS (other)Raspberry Pi OS Lite (64-bit)
  3. CHOOSE STORAGE」→ 挿した microSDカード
💡 なぜ "Lite" ? Lite版は画面(デスクトップ)がない軽量OS。Pi Zero 2 W はメモリが512MBしかないので、Liteでないと重くて動きません。

1-7〜1-8. カスタマイズ (EDIT SETTINGS)

「NEXT」→ 必ず「EDIT SETTINGS」をクリック。

GENERAL タブ:

Set hostnameyamato-printer
Usernamepi
Password覚えやすいパスワード(8文字以上)
SSID家のWiFiの名前
WiFi Password家のWiFiパスワード
Wireless LAN countryJP
Time zoneAsia/Tokyo

SERVICES タブ: Enable SSH にチェック → "Use password authentication" を選択

1-9. 書き込み

「SAVE」→ "Would you like to apply..." で「YES」→ 警告で「YES」→ 5〜10分待つ。
「Write Successful」が出たら完了。SDカードを取り出します。

02

電源を入れて接続確認

Power-on / 5分

2-1. microSDをRaspberry Piに挿す

本体の裏側にスロットがあります。金属端子が見える側を上にして、カチッと音がするまで押し込みます。

2-2. 電源を繋ぐ

Raspberry Pi Zero 2 W には Micro USBポートが2つあります:

[HDMI] [USB DATA] [USB POWER] ↑ ↑ ↑ 使わない ← 左 右 → 電源
⚠️ 右側の「USB POWER」に挿す! 左側は STEP 5 でプリンタを繋ぐためのデータポートなので、間違えないこと。

2-3. 起動を待つ

緑色のLEDが点滅します。初回起動は3〜5分。気長に待ちましょう。

03

SSH で Raspberry Pi に接続

SSH / 5分

3-1. IPアドレスを調べる

自分のPCから「おーい、どこー?」と呼びかけます。

Mac / Linux ターミナルで:

ping yamato-printer.local

Windows コマンドプロンプトで同じく:

ping yamato-printer.local

返事が来たらIPアドレス (192.168.x.x) をメモ。Ctrl+Cで停止。

3-2. SSH接続

ssh pi@yamato-printer.local

初回は yes → パスワード入力(STEP 1-8 で決めたもの)。打ち込んだ文字は画面に表示されないが、打てています。

成功すると:

pi@yamato-printer:~ $

これが Linux のコマンド画面。ここから全部この画面で作業します。

💡 SSHって? 「離れた場所にあるコンピュータに遠隔ログインする仕組み」。画面もキーボードもRaspberry Piには繋がないので、自分のPCから操作します。
04

このプロジェクトをインストール

Install / 20〜30分

4-1. 必要な道具を入れる

sudo apt update sudo apt install -y git

4-2. プロジェクトをダウンロード

cd ~ git clone https://github.com/DaisukeHori/yamato-printer-mcp-server.git cd yamato-printer-mcp-server

4-3. セットアップスクリプトを実行

sudo ./scripts/setup-pi.sh --longevity

20〜30分かかります。コーヒー休憩に最適。

💡 --longevity オプション 「microSDカードが長持ちするように設定してね」のオプション。24時間稼働させる予定なら必ず付ける。

4-4. MCP_API_KEY をメモする

完了画面の中に MCP_API_KEY を自動生成しました: ... が出ます。この ... の部分をメモ。あとでClaude.aiの設定で使います。

見逃したら:

grep MCP_API_KEY ~/yamato-printer-mcp-server/.env

4-5. 再起動

sudo reboot

SSH接続が切れるので、1〜2分後に再接続:

ssh pi@yamato-printer.local
05

プリンタ接続とテスト印刷

Printer setup / 10分

5-1. プリンタを準備

WS-420B の電源ケーブルをコンセントに挿して電源ON。ロール紙をセット(プリンタ付属説明書に従う)。

5-2. プリンタとRaspberry Piを繋ぐ

OTGケーブルを使って:

  • プリンタのUSBケーブル(USB-A) → OTGケーブルのメス端子
  • OTGケーブルのMicro USB → Raspberry Piの左側 "USB DATA"
⚠️ 間違えないで! STEP 2 で電源を繋いだのは右側(POWER)。プリンタを繋ぐのは左側(DATA)

5-3. 認識確認

dmesg | tail -10

以下のような行が出ればOK:

[XXX.XXX] usblp0: USB Bidirectional printer dev X if 0 alt 0 proto 2 vid 0x... pid 0x...

usblp0」が見えたら成功。

ls -la /dev/usb/lp0

5-4. テスト印刷(ドキドキの初印刷)

cd ~/yamato-printer-mcp-server npm run print-sample:test

ラベルが1枚出てきたら大成功!「HELLO WS-420B」と印字されています。

5-5. PDF印刷もテスト

npm run print-sample:pdf

PDF→TSPL変換パイプライン全体の動作確認ができます。

06

Cloudflare Tunnel でインターネット公開

Expose to internet / 30分

ここまでは家のWiFi内からしか使えません。Cloudflare Tunnelで外からもアクセスできるようにします(無料、ルーター設定不要)。

6-1. Cloudflare アカウント作成

Cloudflareサインアップ でメール登録 → 確認メールのリンクをクリック。

6-2. 独自ドメインを取得

Cloudflare Tunnelには独自ドメインが必要です:

取得したドメインをCloudflareに登録(Cloudflare公式ガイドに従う)。

6-3. Zero Trustダッシュボードでトンネル作成

  1. Cloudflare Zero Trust にログイン
  2. 左メニュー「Networks」→「Tunnels」→「Create a tunnel」
  3. Tunnel type: Cloudflared を選択
  4. Tunnel name: yamato-printer
  5. 「Save tunnel」をクリック

6-4. cloudflared のトークン認証 (Pi側)

Cloudflare画面に表示されるコマンドをSSH画面で実行:

sudo cloudflared service install eyJhIjoiXXX...

(eyJh...の部分はCloudflare画面のトークンに置き換え)

6-5. ドメインとトンネルの紐付け

Cloudflare画面で「Next」→ Public Hostname設定:

Subdomainyamato-printer
Domain取得したドメイン
TypeHTTP
URLlocalhost:8719

6-6. 動作確認

ブラウザで:

https://yamato-printer.あなたのドメイン/health

JSONが表示され "available": true ならOK。

07

Claude.ai と繋げる

Connect Claude / 5分

7-1. Claude.ai にログイン

https://claude.ai/

7-2. 設定画面を開く

右下の自分のアイコン → 「Settings」→「Connectors」→「Add custom connector」

7-3. コネクタ情報を入力

NameYamatoPrinter
URLhttps://yamato-printer.ドメイン/mcp?key=XXXXX
🔑 MCP_API_KEY URLの XXXXX を STEP 4-4 でメモした MCP_API_KEY に置き換え。

例:

https://yamato-printer.example.com/mcp?key=a1b2c3d4e5f6g7h8i9j0...

7-4. 動作確認

Claude.aiの新チャットで「利用可能なMCPツールを教えて」と聞いて、print_uploadedprint_urlなどが出てきたら成功。

08

実際に送り状を印刷

First real print / 5分

8-1. ヤマトB2クラウドで送り状PDF作成

B2クラウドで送り状を作成し、PDFをダウンロード。

8-2. Claude.aiにPDFアップロード

Claude.aiチャット画面でクリップボタンからPDFをアップロード。

8-3. 印刷指示

この送り状PDFを印刷してください。 宅急便の用紙を使います。

Claudeが自動的に print_uploaded を呼び出し、数秒後にプリンタからラベルが出てきます

🎉 完成!

お疲れ様でした。これで「AIに話しかけて送り状印刷」が完成です。業務で日常的に使うなら、validate_print_optionslist_jobsなども試してみてください。

うまくいかない時の救急箱

// Troubleshooting
ping が通らない Pi Zero 2 W は 2.4GHz のみ。5GHz に繋ごうとしていないか確認。ルーターのゲストネットワーク設定もチェック。
SSHでパスワード弾かれる 日本語入力 OFF にして、STEP 1-8 で決めたパスワードを慎重に打つ。ダメなら SDカード書き込みからやり直し。
setup-pi.sh がエラー 赤色 [ERROR] を読む。Unable to locate package なら sudo apt update を再実行。
dmesgにusblp出ない プリンタ電源ON、OTGケーブル確認(Pi左側)、sudo modprobe usblpで手動ロード。
印刷が真っ黒/真っ白 .env の DITHER_THRESHOLD=128 を100や180に調整。ロール紙の裏表確認(熱で黒くなる面が表)。
Cloudflare Tunnelが繋がらない sudo systemctl status cloudflared で確認。journalctl -u cloudflared -n 50 でログを見る。
Claude.aiでコネクタ見つからない ブラウザで /health 開いて接続確認。URLの ?key=XXX が .env の MCP_API_KEY と完全一致しているか確認。
Piが勝手に再起動する 電源が非力(古いスマホ充電器NG)。5V/2.5A以上のMicro USB電源を使う。

さあ、机の上の
"印刷ボタン"を消そう。

MIT License. 203件のテストが通過済み。
クラスA操作・読取10Mリクエスト・エグレス無料のCloudflare Tunnelでどこからでも到達可能。

GitHub で見る

関連 MCP サーバー

堀が公開している MCP サーバー群。すべて Claude.ai / Cursor 等から利用可能。

サーバーツール説明
b2cloud-api14ヤマト B2クラウド送り状発行 API/MCP
cloudflare-mcp69Cloudflare 統合(Tunnel/DNS/Workers/Pages/R2/KV/SSL/Access)
hubspot-ma-mcp128HubSpot MA(CRM/Marketing/Knowledge Store)
msgraph-mcp-server48Microsoft Graph API(Exchange/Teams/OneDrive/SharePoint)
playwright-devtools-mcp57Playwright + Chrome DevTools(ブラウザ自動化)
proxmox-mcp-server35Proxmox VE 仮想化基盤操作
printer-mcp-serverCUPS ネットワークプリンタ制御(Kyocera TASKalfa)
yamato-printer-mcp-server ← 今ここヤマト送り状サーマルプリンタ(ラズパイ + WS-420B)
ssh-mcp-server10SSH クライアント(セッション管理/非同期コマンド)
mac-remote-mcp34macOS リモート制御(Shell/GUI/ファイル/アプリ)
gemini-image-mcp4Gemini/Imagen 画像生成
runpod-mcp36RunPod GPU FaaS(Pods/Endpoints/Jobs)
firecrawl-mcpFirecrawl セルフホスト Web スクレイピング
ad-ops-mcp62広告運用自動化(Google Ads/Meta/GBP/X)