mcpField
P
pixelletter-mcp

pixelletter-mcp

ローカル
github.com/bitterdevコミュニケーション01 週間前に更新

pixelletter-mcp について

pixelletter-mcpは、PixelLetterのHTTPSインターフェースで実物のレターやファクスを送るローカルMCPサーバーです。注文のキャンセル、アカウント情報の取得、電子請求書の署名にも対応し、送信操作ではテストモードを明示します。

主な機能

  1. 01ファイルまたはテキストからレターを送信
  2. 02ファクス送信
  3. 03書留オプション
  4. 04送信済み注文のキャンセル
  5. 05アカウント情報と残高の取得
  6. 06電子請求書署名の送信

活用シーン

  1. 01生成済みPDFレターの郵送
  2. 02文書のファクス送信
  3. 03発送前の注文テスト
  4. 04注文IDを使った注文キャンセル

MCP 対応

PixelLetterのレター送信、ファクス、キャンセル、アカウント照会、請求書署名、インターフェース参照のツールをMCPクライアントに公開します。送信ツールではtestModeの明示が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"bitterdev-pixelletter": {
"command": "npx",
"args": [
"-y",
"pixelletter-mcp"
],
"env": {
"PIXELLETTER_EMAIL": "<PIXELLETTER_EMAIL>",
"PIXELLETTER_PASSWORD": "<PIXELLETTER_PASSWORD>",
"PIXELLETTER_DEFAULT_DESTINATION": "<PIXELLETTER_DEFAULT_DESTINATION>",
"PIXELLETTER_FORCE_TEST_MODE": "<PIXELLETTER_FORCE_TEST_MODE>"
}
}
}
}
起動コマンドnpx -y pixelletter-mcp
設定が必要な環境変数
PIXELLETTER_EMAILE-mail address the PixelLetter account is registered with
PIXELLETTER_PASSWORDシークレットPixelLetter account password
PIXELLETTER_DEFAULT_DESTINATIONDefault destination country as a two letter ISO code, for example DE
PIXELLETTER_FORCE_TEST_MODEForce test mode for every order, so nothing is printed, sent or charged

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmpixelletter-mcp1.0.3

ツール

6

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
textstringいいえHTML を含まない手紙のプレーンテキスト。長文は自動的に複数ページにわたり、差出人住所は PixelLetter によって追加されます。単独の行にある "%Unterschrift%" は、PixelLetter アカウントに保存された署名を挿入します。
filesarrayいいえ送信する文書の絶対パス。例:pdf-letter-mcp が書き出した PDF。複数のファイルはこの順序で変換され、1 通の手紙に結合されます。使用可能な形式:.pdf、.doc、.xls、.ppt、.rtf、.wpd、.psd。常に確実に動作する形式は PDF のみです。
duplexbooleanいいえ両面印刷(true、PixelLetter のデフォルト)または片面印刷(false、制御値 NODUPLEX として送信)。手紙のみ。
addressarrayいいえ宛先住所。配列の各要素を 1 行とし、国名も含めます。PixelLetter が組版します。ファイルを送信しない場合は必須です。
controlstringいいえインターフェースの control フィールドに指定する生の値。公開用途で使われる値は NODUPLEX のみで、duplex パラメーターが設定するため、PixelLetter から別のトークンが返された場合にのみ指定してください。
goGreenbooleanいいえGoGreen、CO2 ニュートラル郵便(追加オプション 44)。手紙のみ。
subjectstringいいえ手紙の件名。
locationenumいいえ発送センター:1 = Munich (DE)、2 = Hausleiten near Vienna (AT)、3 = Hamburg (DE)。API のデフォルトは 1 です。1 | 2 | 3
testModebooleanはいテストモード。true の場合、実際の注文と同様に処理されますが、PixelLetter は印刷、送信、課金を行いません。false の場合、実際に手紙を送信します。誤送信を防ぐため、常に必須です。
faxNumberstringいいえ国際形式のファクス番号。例:"+49 89 72448483"。alsoSendFax を使用する場合のみ必要です。
colorPrintbooleanいいえ白黒ではなくカラーで印刷します(追加サービス 33)。手紙のみが対象で、すべての発送センターで利用できるわけではありません。エラー 038 を参照してください。
registeredbooleanいいえ書留(コード 27)。ドイツ国内のみです。
alsoSendFaxbooleanいいえ同じ文書をファクスでも送信します。faxNumber が必要です。追加サービスは引き続き手紙のみに適用されます。
destinationstringいいえ宛先国の 2 文字の ISO コード。例:DE、AT、CH。手紙では必須です。コードが間違っていると郵送料も誤ります。
inlineFilesarrayいいえパスではなく base64 で渡す文書です。
transactionstringいいえ独自のトランザクション ID または短いメモです。PixelLetter はこの値を応答に含めて返します。
returnAddressstringいいえインターフェースの returnaddress フィールドに指定する生の値です。公開ハンドブックには記載されていません。
returnReceiptbooleanいいえ受領証(コード 28)。registered と併用する場合のみ指定できます。
cashOnDeliveryobjectいいえ代金引換用の銀行情報です。このブロックを設定すると、追加サービス 31 が追加されます。
cashOnDelivery.namestringはい受取人。1~27 文字です。
cashOnDelivery.amountstringはい金額は XXXX,XX 形式で、3,00~1600,00 EUR の範囲です。
cashOnDelivery.bankCodestringはい受取人のドイツ銀行コード(BLZ)。8 桁の数字で指定します。
cashOnDelivery.bankNamestringはい受取人の銀行名。1~27 文字です。
cashOnDelivery.bankAccountIdstringはい受取人の口座番号。6~10 桁の数字です。
cashOnDelivery.reasonForPayment1stringいいえ振込目的の 1 行目。最大 27 文字です。
cashOnDelivery.reasonForPayment2stringいいえ振込目的の 2 行目。最大 27 文字です。
personalDeliverybooleanいいえ本人限定受取(コード 29)。registered と併用する場合のみ指定できます。
registeredDropInbooleanいいえ投函型書留(コード 30)。他の書留種別とは併用できません。
additionalServiceCodesarrayいいえPixelLetter が別途文書化している、またはアカウントごとに合意しているサービスの addoption コード(原文)。PixelLetter から提供された番号のみを使用してください。

詳細

pixelletter-mcp

PixelLetter の HTTPS インターフェースを利用するローカル MCP サーバー(stdio)です。PDF と送付先の国を指定すると、PixelLetter がレターを印刷、折りたたみ、料金別納郵便の処理をして投函します。オプションで書留郵便にもできます。また、ファクスの送信、注文のキャンセル、アカウント残高の確認、電子インボイスへの署名にも対応しています。

pdf-letter-mcp と組み合わせて使用します。このサーバーが DIN 5008 に準拠したレターの PDF を作成し、こちらのサーバーが郵送します。send_letter には、create_letter が返す絶対パスを指定してください。

実装は、公開されているドキュメント、HTTPS ハンドブック、メールハンドブック、2 つの署名ハンドブック、リファレンス PHP クラス(バージョン 2.01)、公開エラーコード一覧に従っています。これらのドキュメントに記載されていない値が 3 つあります。カラー印刷、GoGreen 郵便、NODUPLEX スイッチです。実際の注文でこれらを使用している hudora/pyPostal クライアントから採用しました。該当する値には、以下の表でその旨を記載しています。それ以外に独自の値は追加していません。

インターフェースの仕組み

すべての処理は、https://www.pixelletter.de/xml/index.php への 1 回の multipart HTTPS POST で行います。フォームフィールド xml に認証情報を含む注文ドキュメントを指定し、uploadfile0、uploadfile1 などのフィールドにドキュメントを指定します。応答は小さな XML ドキュメントです。コード 100 は注文が受け付けられたことを示し、それ以外は公開されている一覧のエラーコードです。宛先の住所が封筒の宛名窓に収まったかどうかを含む最終結果は、数時間後にメールで届きます。

テストモード

送信を行う各ツールでは testMode フラグを明示的に指定する必要があります。デフォルト値はありません。testMode: true にすると、実際の注文とまったく同じように処理されますが、PixelLetter が印刷、送信、課金することはありません。testMode: false にすると、実際にレターを郵送します。設定作業中にサーバー全体をテストモードに固定するには、PIXELLETTER_FORCE_TEST_MODE=true を設定してください。

インストール

npm install
npm run build

サーバーを Claude Code に登録します。

claude mcp add pixelletter \
  --env [email protected] \
  --env PIXELLETTER_PASSWORD=your-password \
  -- node "/absolute/path/to/pixelletter-mcp/dist/src/index.js"

または、~/.claude.json / claude_desktop_config.json で設定します。

{
  "mcpServers": {
    "pixelletter": {
      "command": "node",
      "args": ["/absolute/path/to/pixelletter-mcp/dist/src/index.js"],
      "env": {
        "PIXELLETTER_EMAIL": "[email protected]",
        "PIXELLETTER_PASSWORD": "your-password",
        "PIXELLETTER_DEFAULT_DESTINATION": "DE"
      }
    }
  }
}

環境変数

変数用途
PIXELLETTER_EMAIL必須。PixelLetter アカウントの登録に使用したメールアドレスです。
PIXELLETTER_PASSWORD必須。PixelLetter のパスワードです。
PIXELLETTER_ENDPOINTインターフェースのエンドポイントです。デフォルトは https://www.pixelletter.de/xml/index.php です。
PIXELLETTER_ACCEPT_TERMS各注文で PixelLetter の利用規約に同意します。デフォルトは true です。同意しないと API が注文を拒否します(エラー 013)。
PIXELLETTER_WAIVE_WITHDRAWAL_RIGHT2 週間の撤回権を放棄し、注文をすぐに処理します。デフォルトは true です。false にすると、すべての注文が 2 週間遅延します。
PIXELLETTER_DEFAULT_LOCATIONデフォルトの発送拠点です。1 はミュンヘン(DE)、2 はウィーン近郊のハウスライテン(AT)、3 はハンブルク(DE)です。
PIXELLETTER_DEFAULT_DESTINATIONデフォルトの送付先の国を、2 文字の ISO コードで指定します。例:DE。
PIXELLETTER_FORCE_TEST_MODEすべての注文をテストモードに固定します。デフォルトは false です。
PIXELLETTER_TIMEOUT_MSリクエストのタイムアウト(ミリ秒)です。デフォルトは 120000 です。

認証情報は環境変数からのみ読み込まれます。リポジトリには保存されず、ディスクにも書き込まれません。

ツール

ツール用途
send_letterドキュメントまたはプレーンテキストを実際のレターとして送信します。オプションでファクスも送信できます。
send_faxドキュメントまたはプレーンテキストをファクスとしてのみ送信します。
get_account_info保存されている顧客情報と現在のクレジット残高を取得します。
cancel_orderPixelLetter の注文 ID を指定して、送信済みの注文をキャンセルします。
sign_invoice電子インボイス署名サービスにドキュメントを送信し、オプションで署名済み PDF をメールで転送します。
get_interface_referenceアクション値、発送拠点、サービスコード、上限、エラーコードをオフラインで参照します。
send_letter

完成済みのPDFの場合(通常のケース):

{
  "testMode": true,
  "files": ["/Users/you/Documents/Briefe/2026-07-24-widerspruch.pdf"],
  "destination": "DE",
  "transaction": "widerspruch-4711"
}

受領通知付きの書留郵便で、片面のみカラー印刷する場合:

{
  "testMode": false,
  "files": ["/Users/you/Documents/Briefe/kuendigung.pdf"],
  "destination": "DE",
  "registered": true,
  "returnReceipt": true,
  "colorPrint": true,
  "duplex": false
}

アカウントに保存された署名を使い、PixelLetterで組版したプレーンテキストの場合:

{
  "testMode": true,
  "address": ["Erika Mustermann", "Musterstr. 28", "81237 Musterstadt", "Deutschland"],
  "subject": "Ihre Anfrage vom 12.07.2026",
  "text": "Hallo Frau Mustermann,\n\nvielen Dank für Ihre Anfrage.\n\nMit freundlichen Grüßen\n\n%Unterschrift%\nMax Mustermann",
  "destination": "DE"
}

送信前にツールが適用するルール:

  • 1件の注文には、書類かテキストのどちらか一方を指定します。両方は指定できません。複数の書類は変換され、指定された順序で1通の手紙にまとめられます。
  • 手紙には宛先の国が必須です。コードを間違えると、郵便料金も間違います。
  • 書類の住所表示窓の位置に受取人の住所が見えている必要があります。PixelLetterは発送前にこれを確認します。
  • アップロードできるファイル形式は.pdf、.doc、.xls、.ppt、.rtf、.wpd、.psdで、最大サイズは50 MBです。エラー053は、PixelLetterがPDFのみに制限できることを示しています。そのため、PDFが確実な選択肢です。
  • 追加サービス、カラー印刷、両面印刷を指定できるのは手紙のみです。FAXのみの注文ではこれらは拒否されます。コード28(受領通知)と29(本人への手渡し)にはコード27(書留)が必要です。コード30(投函式書留)は単独で指定できます。書留郵便はドイツ国内向けのサービスのため、その他の宛先ではエラー026が発生します。

インターフェースのすべてのオプション

インターフェースに記載されているフィールドをすべて網羅しています。「適用対象」は、どの発送タイプでそのオプションを使用できるかを示します。無効な組み合わせは、リクエストの送信前に拒否されます。

API フィールドツールのパラメーター許可される値対象出典
emailPIXELLETTER_EMAILアカウントのメールアドレスすべてHTTPS ハンドブック
passwordPIXELLETTER_PASSWORDアカウントのパスワードすべてHTTPS ハンドブック
agbPIXELLETTER_ACCEPT_TERMSja、neinすべてHTTPS ハンドブック
widerrufsverzichtPIXELLETTER_WAIVE_WITHDRAWAL_RIGHTja、nein、nein の場合、注文は2週間遅れますすべてHTTPS ハンドブック
testmodustestMode、PIXELLETTER_FORCE_TEST_MODEtrue、falseすべてHTTPS ハンドブック
order type入力内容から選択text、upload、cancelすべてHTTPS ハンドブック、リファレンスクラス
actionsend_letter、alsoSendFax、send_fax、sign_invoice1 レター、2 ファクス、3 レターとファクス、4 請求書への署名すべてHTTPS ハンドブック、署名ハンドブック
transactiontransaction任意のテキスト。応答とともに返されますすべてHTTPS ハンドブック
faxfaxNumber国際形式、+49 89 72448483ファクスHTTPS ハンドブック
locationlocation1 ミュンヘン(DE)、2 ウィーン近郊のハウスライテン(AT)、3 ハンブルク(DE)、デフォルトは 1レター、ファクスHTTPS ハンドブック
destinationdestination、PIXELLETTER_DEFAULT_DESTINATION2文字の ISO コード。レターでは必須、ファクスのみの場合は無視されますレターHTTPS ハンドブック
addoption 27registeredEinschreiben、書留郵便レターHTTPS ハンドブック
addoption 28returnReceiptRückschein、配達証明。27と併用する場合のみレターHTTPS ハンドブック
addoption 29personalDeliveryEigenhändig、本人限定受取。27と併用する場合のみレターHTTPS ハンドブック
addoption 30registeredDropInEinschreiben Einwurf、投函記録付き書留。27、28、29とは併用できませんレターHTTPS ハンドブック
addoption 31cashOnDeliveryNachnahme、銀行口座情報ブロックが指定されると自動設定されますレターリファレンスクラス 2.01
addoption 33colorPrint白黒印刷の代わりにカラー印刷レターpyPostal、エラー 038
addoption 44goGreenGoGreen、CO2 ニュートラルな郵送レターpyPostal
その他の addoptionadditionalServiceCodesPixelLetter がアカウント用に合意した数値をそのまま指定レターHTTPS ハンドブック
controlduplextrue は両面(PixelLetter のデフォルト)、false は片面印刷用に NODUPLEX を送信レターpyPostal
control 生値controlPixelLetter から提供された任意のトークン。duplex とは併用できませんレター、ファクスリファレンスクラス 2.01
returnaddressreturnAddress生の値。公表されている意味はありませんレター、ファクスリファレンスクラス 2.01
wiretransfer/recipient/namecashOnDelivery.name1~27文字レターリファレンスクラス、エラー 030~037
wiretransfer/recipient/bankaccountidcashOnDelivery.bankAccountId6~10桁レターリファレンスクラス、エラー 036
wiretransfer/recipient/blzcashOnDelivery.bankCodeちょうど8桁レターリファレンスクラス、エラー 037
wiretransfer/recipient/banknamecashOnDelivery.bankName1~27文字レターリファレンスクラス、エラー 031
wiretransfer/reasonforpayment1cashOnDelivery.reasonForPayment1最大27文字レターリファレンスクラス、エラー 032
wiretransfer/reasonforpayment2cashOnDelivery.reasonForPayment2最大27文字レターリファレンスクラス、エラー 033
wiretransfer/amountcashOnDelivery.amountXXXX,XX、3,00~1600,00 EURレターリファレンスクラス、エラー 034、035
text/addressaddress宛先住所の各行。国を含みますレター、ファクスHTTPS ハンドブック
text/subjectsubjectレターの件名レター、ファクスHTTPS ハンドブック
text/messagetextプレーンテキスト。HTML は不可。%Unterschrift% で保存済みの署名を挿入しますレター、ファクスHTTPS ハンドブック
uploadfile0、uploadfile1、...files、inlineFiles.pdf、.doc、.xls、.ppt、.rtf、.wpd、.psd、各50 MBレター、ファクス、署名HTTPS ハンドブック
order type="cancel"/idcancel_order.orderIdPixelLetter の注文 IDキャンセルリファレンスクラス 2.01
sender、recipient、cc、bcc、subject、body、filenamesign_invoice.notification.*署名通知のメールフィールド署名署名ハンドブック
info/account:info type="all"get_account_infoパラメーターなしアカウントHTTPS ハンドブック
get_interface_reference は、エラーコード表全体を含む同じリストを実行時に返します。

インターフェースで提供されない機能

これらが明記されているのは、サーバーの不備ではなく、API の仕様として提供されていないためです。

  • ジョブ一覧はありません。 送信済みの注文を一覧表示したり、照会したりするドキュメント化された呼び出しはありません。cancel_order は確認メールに記載された注文 ID を使用し、get_account_info は残高を報告します。それ以外の情報はすべて PixelLetter の顧客エリアで確認できます。
  • 封筒や用紙の形式、郵便料金の区分、配達速度、表紙、返信用封筒、差出人の識別機能はありません。 これらに対応するフィールドはインターフェースにありません。レターは DIN C6/5 の窓付き封筒に封入され、郵便料金は重量と宛先の国に応じて決まります。
  • 住所の修正機能はありません。 エラー 088 には Premiumadress が記載されていますが、アカウントで利用するには PixelLetter のサポートによる設定が必要で、リクエスト用のフィールドもありません。
  • ポストカード、アップロード用テンプレート、一括注文には対応していません。 リファレンスクラスとエラーコードから、これらの機能が存在することはわかります(font、テンプレート番号、アクション 5)。しかし、ハンドブックにはアクション値やフィールド構成が記載されていません。推測したアクションを送信すると、実際に誤った発送が行われる可能性があるため、対象外としています。
  • 認証ブロックの ref は、ドキュメントに意味が記載されておらず、リファレンスクラスと同様に常に空で送信されます。

検証

npm test    # XML payloads, response parsing, option rules, configuration, HTTP layer with a mocked fetch

テストで実際の API にアクセスすることはありません。注入された fetch を通じて HTTP レイヤーをテストし、エンドポイント、xml フィールド、uploadfileN パーツ、テストモードフラグ、エラーコードのマッピングを確認します。

ライセンス

MIT です。詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。