A tiny USB stick that receives text over Bluetooth and types it as a real USB keyboard. Works with Claude, any MCP-compatible AI, or any BLE app on your phone.
Phone / AI → BLE → ClawTap → USB HID → 💻
Quick Start
claude mcp add clawtap -- uvx clawtap-mcp
Or install manually:
pip install clawtap-mcp
MCP Tools
| Tool | What it does |
|---|---|
type_text(text) |
Type text as keystrokes. Supports ASCII + Cyrillic |
press_key(key, count) |
Press a special key: enter, escape, backspace, f1–f12, arrows |
combo_keys(keys) |
Key combo up to 5 keys: ["ctrl","c"], ["alt","tab"], ["win","r"] |
health_check() |
Check wireless connection and device status |
Examples
# Type text
type_text("Hello World!\n")
# Cyrillic (target must have RU layout active)
type_text("Привет мир")
# Key combos
combo_keys(["ctrl", "c"]) # Copy
combo_keys(["alt", "tab"]) # Switch window
combo_keys(["win", "r"]) # Run dialog
# Special keys
press_key("backspace", 5) # Delete 5 chars
press_key("enter")
Troubleshooting
| Problem | Fix |
|---|---|
| Device not found | Power cycle device. Make sure no other app is connected to it |
| Wrong characters | Check keyboard layout on target computer (EN for English, RU for Cyrillic) |
| Disconnects | Stay within 10m. Check USB power stability |
FAQ
Does the target need any software installed? No. The target sees a plain USB keyboard — no drivers, no agent, no admin rights. That's the whole point: ClawTap works on kiosks, industrial HMIs, locked-down corporate laptops, BIOS screens, and anywhere Selenium / Playwright cannot reach.
What's the typical end-to-end latency? For a single key, ~30–80 ms from MCP tool call to the character landing on the target (BLE round-trip dominates). For a 1000-character paragraph, expect roughly 1–2 seconds of streaming.
Which operating systems can host the MCP server?
Anywhere bleak works: Windows 10/11, macOS 10.15+, Linux with BlueZ. The
target (the machine plugged into ClawTap via USB) can be literally
anything that accepts a USB HID keyboard, including Android, game consoles,
and Raspberry Pi.
Does ClawTap see what's on the target screen? No. The link is one-way — host → ClawTap → target. There is no return channel and no camera. If you want a feedback loop (AI reads what it just typed), point a phone camera at the target screen and pipe that through your own MCP image source.
Can the device type non-ASCII without changing the target's layout?
No. ClawTap is a deterministic HID channel: it sends US-QWERTY scancodes,
the OS interprets them under the active layout. Cyrillic works by mapping
characters to the keys that produce them in the RU layout — switch with
Win+Space (Windows) on the target before sending.
Is the BLE link encrypted? Pairing uses BLE Just Works (no MITM protection); after that the channel is encrypted with the link key. Treat ClawTap as you would a wireless keyboard — fine for personal use, not a substitute for a hardened authentication channel.
Can I drive several ClawTap devices from one host? Not yet. The current MCP server keeps a single BLE client. Extending it to a pool keyed by device name is on the roadmap — see examples/ for the patterns that need to be parameterised.
Where do I look next?
examples/— five short scripts (clipboard, Cyrillic, browser launcher, vim session, stress test).CONTRIBUTING.md— for bug reports and PRs.
License
MIT
Metadata
Release files for clawtap-mcp 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| clawtap_mcp-1.1.0.tar.gz | 128.6 kB | Without provenance | Details for clawtap_mcp-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| clawtap_mcp-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for clawtap_mcp-1.1.0-py3-none-any.whl |
Total release size: 136.2 kB
Release files / clawtap_mcp-1.1.0.tar.gz
| Download URL | clawtap_mcp-1.1.0.tar.gz |
|---|---|
| Size | 128.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec5aa4938af9df8fd9a0d49ee6bec5b0e80ea914c0e7b2d21b664e90597bc934
|
|
BLAKE2b-256 checksum How to use checksums |
402f9b99db12e0453eccd1b21d301d34a4839793320e2f75d04d8bdbda6985f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / clawtap_mcp-1.1.0-py3-none-any.whl
| Download URL | clawtap_mcp-1.1.0-py3-none-any.whl |
|---|---|
| Size | 7.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b576a99ebca2184c570282d87e27830eea61c9961a5a8591fe1cb24bf96cb308
|
|
BLAKE2b-256 checksum How to use checksums |
3e2c0606109a2fe77317757ad5841083b14a20a2b7e8c279ca720d020e0e0705
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for clawtap-mcp 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.