🎨 Strands Fun Tools
Creative and utility tools for Strands AI agents - Bluetooth, vision, cursor control, audio, and more!
🔌 Use as an MCP server
Use strands-fun-tools from Claude Code, Claude Desktop, Cursor, Kiro, or any MCP client — every available tool (cursor, clipboard, chess, bluetooth, screen_reader, yolo_vision, take_photo, listen, dialog, and more) becomes an MCP tool.
claude mcp add fun -- uvx strands-fun-tools
Claude Desktop config:
{
"mcpServers": {
"fun": {
"command": "uvx",
"args": ["strands-fun-tools"]
}
}
}
Options:
strands-fun-tools --tools cursor,clipboard,take_photo # expose a subset
strands-fun-tools --skip bluetooth,chess # drop groups
strands-fun-tools --http --port 8000 # HTTP mode, multi-client
Tool groups import lazily — groups whose optional deps aren't installed are skipped automatically. Install extras for more tools:
uvx --with 'strands-fun-tools[all]' strands-fun-tools
📦 Installation
# Base installation (human_typer only)
pip install strands-fun-tools
# With specific features
pip install "strands-fun-tools[cursor,clipboard,vision]"
# Everything
pip install "strands-fun-tools[all]"
🛠️ Available Tools
🎮 Interaction
- human_typer - Human-like typing with emotions and typos
- cursor - Mouse & keyboard automation (pyautogui)
- clipboard - Clipboard monitoring & history
- dialog - Interactive terminal prompts
👁️ Vision
- screen_reader - OCR-based screen monitoring
- yolo_vision - Real-time object detection (YOLOv8)
- face_recognition - Face detection via AWS Rekognition
- take_photo - Camera capture & burst mode
🎤 Audio
- listen - Background audio transcription (Whisper)
📡 Connectivity
- bluetooth - BLE device monitoring & GATT operations
♟️ Games
- chess - Stockfish chess engine integration
🎨 Display
- spinner_generator - Custom loading animations
- template - Jinja2 template rendering
- asciimatics_ui - Terminal UI framework
🔧 Utilities
- utility - Crypto, encoding, hashing, JSON/YAML
- dynamic_package - Execute any Python package function
- npm - Run npm packages from Python
🚀 Quick Start
from strands import Agent
from strands_fun_tools import human_typer, cursor, clipboard
agent = Agent(
tools=[human_typer, cursor, clipboard],
system_prompt="You can type like a human and control the cursor!"
)
agent("Type 'Hello World!' with excited emotion and then copy it to clipboard")
📋 Tool Reference
| Tool | Install Extra | Key Actions |
|---|---|---|
| human_typer | (base) | Type with emotions: calm, excited, thoughtful, rushed, nervous |
| cursor | [cursor] |
move, click, drag, type_text, hotkey |
| clipboard | [clipboard] |
start, read, write, get_history |
| screen_reader | [vision] |
start, capture_once, find_element |
| yolo_vision | [vision] |
start, detect_once, query_objects |
| face_recognition | [face] |
detect_faces, compare_faces |
| take_photo | [vision] |
capture, burst, list_cameras |
| listen | [audio] |
start, stop, get_transcripts |
| bluetooth | [bluetooth] |
start, scan_once, list_devices, read_characteristic |
| chess | [chess] |
new_game, get_best_move, make_move, analyze |
| spinner_generator | [display] |
Display 50+ spinner types |
| template | [template] |
create, render Jinja2 templates |
| utility | [utility] |
encode, decode, hash, encrypt |
| dynamic_package | (base) | execute any Python function |
| npm | (base) | execute npm packages |
| dialog | [dialog] |
Interactive terminal prompts |
| asciimatics_ui | [ui] |
Terminal UI framework |
🎯 Examples
Background Monitoring
from strands import Agent
from strands_fun_tools import bluetooth, clipboard, yolo_vision
agent = Agent(tools=[bluetooth, clipboard, yolo_vision])
agent("""
Start monitoring:
1. Bluetooth devices nearby
2. Clipboard content changes
3. Objects visible on camera
""")
Autonomous Screen Control
from strands import Agent
from strands_fun_tools import screen_reader, cursor
agent = Agent(tools=[screen_reader, cursor])
agent("""
1. Find the 'Submit' button on screen
2. Click it
""")
Human-Like Typing
agent.tool.human_typer(
text="Hello World!",
emotion="excited", # calm, excited, thoughtful, rushed, nervous
typo_rate=2, # 0-10 percentage
thinking_pauses=True # Pause at punctuation
)
📚 Documentation
Full documentation at github.com/cagataycali/strands-fun-tools
🤝 Contributing
Issues and PRs welcome!
git clone https://github.com/cagataycali/strands-fun-tools.git
cd strands-fun-tools
pip install -e ".[all,dev]"
📄 License
Apache-2.0 - see LICENSE
Metadata
Release files for strands-fun-tools 0.5.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 | |
|---|---|---|---|---|
| strands_fun_tools-0.5.0.tar.gz | 57.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| strands_fun_tools-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 118.0 kB
Release files / strands_fun_tools-0.5.0.tar.gz
| Download URL | strands_fun_tools-0.5.0.tar.gz |
|---|---|
| Size | 57.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5082e6b296ed2b1fe7926efce5cad526b2afe4a78b50c6e96d9191827d7d389
|
|
BLAKE2b-256 checksum How to use checksums |
2fa8c6ba43a30147fd2e84046234962264b755bf3eae6e387dfa61a33df75822
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / strands_fun_tools-0.5.0-py3-none-any.whl
| Download URL | strands_fun_tools-0.5.0-py3-none-any.whl |
|---|---|
| Size | 60.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c344584a0a8c1be96efaddaacff018b32e6d26bb4d1e50e35f1d4ed6df996f78
|
|
BLAKE2b-256 checksum How to use checksums |
d1852ee743bde76032e9e0dd73b6bfa4840a3a35ad731bcbf16f0797ee989727
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Security for strands-fun-tools 0.5.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.