🎨 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strands_fun_tools-0.5.0.tar.gz.
File metadata
- Download URL: strands_fun_tools-0.5.0.tar.gz
- Upload date:
- Size: 57.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5082e6b296ed2b1fe7926efce5cad526b2afe4a78b50c6e96d9191827d7d389
|
|
| MD5 |
8dcf783d2fea4bbe24bc6b54e1c4e979
|
|
| BLAKE2b-256 |
2fa8c6ba43a30147fd2e84046234962264b755bf3eae6e387dfa61a33df75822
|
File details
Details for the file strands_fun_tools-0.5.0-py3-none-any.whl.
File metadata
- Download URL: strands_fun_tools-0.5.0-py3-none-any.whl
- Upload date:
- Size: 60.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c344584a0a8c1be96efaddaacff018b32e6d26bb4d1e50e35f1d4ed6df996f78
|
|
| MD5 |
7d1d20146f62715e26d2235d7c98bae0
|
|
| BLAKE2b-256 |
d1852ee743bde76032e9e0dd73b6bfa4840a3a35ad731bcbf16f0797ee989727
|