Skip to main content

🎨 Strands Fun Tools

Awesome Strands Agents

Creative and utility tools for Strands AI agents - Bluetooth, vision, cursor control, audio, and more!

License Python

🔌 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


Built with ❤️ for the Strands community

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)

Source distribution for strands-fun-tools 0.5.0
File Size Uploaded Provenance
strands_fun_tools-0.5.0.tar.gz 57.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for strands-fun-tools 0.5.0
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page