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).
29 lines
1.3 KiB
Markdown
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.
|