Files
mcp-pos-print/CLAUDE.md
T
Mortdecai 421c3c9660 feat: initial MCP server for printing markdown to Epson TM-m30
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).
2026-05-25 16:51:17 -04:00

29 lines
1.3 KiB
Markdown

# 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.md` for the printer reference (IP, port, Font B columns, native QR usage).
- See `~/bin/mcp-gemma4/server.py` for 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.