Skip to main content

BLE-to-USB HID wireless keyboard bridge as MCP server (formerly ghosttype-mcp)

Reason this release was yanked:

Replaced by 1.1.0 (cleaned README). Please upgrade: pip install -U clawtap-mcp

Project description

ClawTap MCP

BLE-to-USB HID keyboard bridge exposed as an MCP server.

Send keystrokes to any computer via Bluetooth — let AI assistants type on your machine through a hardware bridge.

Architecture

Claude / AI  →  MCP Server (Python)  →  BLE  →  ESP32  →  UART  →  RP2040  →  USB HID  →  Computer

Prerequisites

  • Bluetooth adapter on the host machine (built-in or USB dongle)
  • Python 3.10+
  • Hardware (see below)

Install MCP Server

# Claude Code / Claude Desktop
claude mcp add clawtap -- uvx clawtap-mcp

# Or manually
pip install clawtap-mcp

Hardware Setup

Components

Component Role Price
ESP32-WROOM-32 BLE receiver ~$4
Waveshare RP2040-Zero USB HID keyboard ~$3
3 DuPont wires Connection ~$0

Wiring

ESP32              RP2040-Zero
─────              ───────────
GPIO17 (TX) ─────► GP1 (UART0 RX)
GND ─────────────► GND
VIN ◄──────────── 5V (VBUS)

RP2040-Zero plugs into the target computer via USB-C. ESP32 is powered from RP2040's 5V pin.

Firmware

ESP32 (BLE receiver)

# Install ESP32 core
arduino-cli core install esp32:esp32

# Compile and upload (ESP32 connected via USB)
arduino-cli compile --fqbn esp32:esp32:esp32 firmware/esp32-ble-receiver/
arduino-cli upload --fqbn esp32:esp32:esp32 --port COMx firmware/esp32-ble-receiver/

The ESP32 advertises as "ClawTap" over BLE using Nordic UART Service.

RP2040-Zero (USB HID keyboard)

# Install RP2040 core
arduino-cli core install rp2040:rp2040 \
  --additional-urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

# Compile
arduino-cli compile --fqbn rp2040:rp2040:waveshare_rp2040_zero firmware/rp2040-hid-keyboard/

# Flash: hold BOOT button, plug USB-C, copy .uf2 to RPI-RP2 drive

MCP Tools

Tool Description
type_text Type ASCII text as HID keystrokes
press_key Press a special key (enter, escape, f1-f12, arrows, etc.)
combo_keys Press a key combination up to 5 keys (ctrl+c, alt+tab, win+r)
health_check Check BLE connection status and device availability

Troubleshooting

Problem Solution
ClawTap not found Ensure ESP32 is powered and not connected to another BLE client. Press RESET on ESP32.
Text appears as wrong characters Switch keyboard layout on target computer (e.g. EN for English text)
BLE disconnects frequently Keep ESP32 within 10m range. Check power supply stability.
RP2040 not recognized as keyboard Re-flash firmware. Try different USB port.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clawtap_mcp-1.0.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clawtap_mcp-1.0.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file clawtap_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: clawtap_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for clawtap_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4dedb9bc26bc94b280edc759547052702a3b7353cbd56ed022fa5f46598bff53
MD5 141e202cd1e5c355c1ad6ce3fe588679
BLAKE2b-256 5bfedca6a02a3372b704a2077b7111d2dfad1af2e6ebe91189c1b18312442aab

See more details on using hashes here.

File details

Details for the file clawtap_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: clawtap_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for clawtap_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25034151e33898a874a59c3b8d1fe67bf12a75ed9ca5f6ba262b5bdb6744eff1
MD5 138594b89e7cd25c192475eb73b11681
BLAKE2b-256 af1dab3b3558c9bcc3328fb34b2e232dc170b65d5e15fb5c6ea3ab0c4ee5232c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page