memobirdmcp
v1.0.4
Published
MCP server for Memobird thermal printer
Readme
Memobird MCP Server
MCP server for Memobird (咕咕机) thermal printer, based on memobirdsdk.
Prerequisites
- Node.js >= 18
- Memobird Access Key (from open.memobird.cn)
- Memobird device ID (double-click device to print it out)
Setup
npm install
npm run buildConfiguration
| Environment Variable | Required | Description |
|---|---|---|
| MEMOBIRD_AK | Yes | Access Key from open.memobird.cn |
| MEMOBIRD_DEVICE_ID | No | Device ID from bind_user, skip binding if set |
| MEMOBIRD_USER_ID | No | User ID from bind_user, skip binding if set |
Usage
Via npx (Recommended)
No local clone needed. Add the following config to use the published npm package directly.
Claude Code — add to ~/.claude/settings.json:
First-time setup (only MEMOBIRD_AK needed, bind_user will be called automatically):
{
"mcpServers": {
"memobird": {
"command": "npx",
"args": ["-y", "memobirdmcp"],
"env": {
"MEMOBIRD_AK": "your-access-key"
}
}
}
}After first binding, add the returned userid and memobirdID to skip bind_user in future sessions:
{
"mcpServers": {
"memobird": {
"command": "npx",
"args": ["-y", "memobirdmcp"],
"env": {
"MEMOBIRD_AK": "your-access-key",
"MEMOBIRD_DEVICE_ID": "your-device-id",
"MEMOBIRD_USER_ID": "12345"
}
}
}
}Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), same env format as above.
Via local build
If you prefer to run from source:
{
"mcpServers": {
"memobird": {
"command": "node",
"args": ["/absolute/path/to/dist/index.js"],
"env": {
"MEMOBIRD_AK": "your-access-key"
}
}
}
}Tools
bind_user
Bind a user identifier to a Memobird device. Must be called first if MEMOBIRD_DEVICE_ID and MEMOBIRD_USER_ID env vars are not set. Returns a userid and memobirdID — save them to env vars to skip this step in future sessions.
| Parameter | Type | Required | Description |
|---|---|---|---|
| memobirdID | string | Yes | Device ID (double-click the device to obtain) |
| useridentifying | string | Yes | Your unique user identifier |
print_text
Print text content to the bound device. Supports Chinese characters (auto GBK encoding).
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Text content to print |
print_image
Print a monochrome bitmap image to the bound device. Use convert_image first to convert JPG/PNG.
| Parameter | Type | Required | Description |
|---|---|---|---|
| base64Image | string | Yes | Monochrome bitmap as Base64 |
print_from_url
Print content from a web URL to the bound device. Works best with static/server-rendered pages.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to print |
print_from_html
Print content from HTML source to the bound device. Use inline CSS and absolute image URLs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| html | string | Yes | HTML source code |
get_print_status
Check the status of a submitted print job.
| Parameter | Type | Required | Description |
|---|---|---|---|
| printcontentid | string | Yes | Print content ID from a print tool response |
Returns printflag: 1 if printed successfully, 0 if pending/failed.
convert_image
Convert a JPG/PNG image to monochrome bitmap format for printing. Use 384px width for best results.
| Parameter | Type | Required | Description |
|---|---|---|---|
| base64Image | string | Yes | JPG or PNG image as Base64 |
Typical Workflow
First time
- Call
bind_userwith your device ID and a user identifier - Save the returned
useridandmemobirdIDtoMEMOBIRD_USER_IDandMEMOBIRD_DEVICE_IDenv vars in your MCP config - Use print tools as needed
Subsequent sessions (env vars set)
- Use
print_text/print_from_html/print_from_urldirectly (no binding needed) - For images: call
convert_imagefirst, thenprint_imagewith the result - Optionally call
get_print_statusto check if printing completed
License
ISC
