421c3c9660
Single tool `print(markdown, title?, timestamp?, qr_urls?, cut?)`. Hand-rolled line-by-line markdown parser translates headings/bold/code/lists/blockquotes/ HR/links to ESC/POS, then sends raw bytes via TCP to 192.168.0.184:9100. Mirrors mcp-gemma4 layout (stdio server, single server.py, mcp package).
1.3 KiB
1.3 KiB
mcp-pos-print
MCP server that prints markdown to the Epson TM-m30 receipt printer.
Start Here
Read the latest handoff first: .claude/handoffs/ (most recent file).
It has session state, in-progress work, and ordered next steps.
Then check IDEA.md for the project brief and DECISIONS.md for settled choices.
Project Identity
Stdio MCP server exposing one tool, print, that takes a markdown string (plus optional title, timestamp, and QR URL list) and sends ESC/POS bytes to the TM-m30 at 192.168.0.184:9100. Mirrors the mcp-gemma4 layout — single server.py, stdio transport, registered in ~/.claude.json. The server owns markdown → ESC/POS translation; callers do not need to know any printer-specific schema.
Current State
- Phase: building
- Repo: git.sethpc.xyz/Seth/mcp-pos-print (planned)
- Deploy target: invoked locally by Claude Code on whichever host has LAN access to
192.168.0.184(typically steel141) - Status: initial scaffold
Conventions
- See
~/bin/POS_PRINT.mdfor the printer reference (IP, port, Font B columns, native QR usage). - See
~/bin/mcp-gemma4/server.pyfor the MCP layout pattern to mirror. - Env overrides:
POS_PRINTER_IP,POS_PRINTER_PORT,POS_PRINTER_TIMEOUT. - Always Font B (
font='b', 57 cols) — Font A column math is wrong for 80mm paper at the default size.