enhanced-mcp-tools/examples/demo_mcp_asciinema.py
Ryan Malloy 3a3f2eac3e 🎨 Apply ruff formatting and code quality improvements
- Run ruff format across entire codebase
- Fix 159 automatic code quality issues
- Improve code consistency and readability
- Maintain compatibility with Python 3.8+

Changes include:
- Whitespace and blank line cleanup
- Import organization and optimization
- Code style standardization
- Removed unused imports and variables
- Enhanced readability throughout

Remaining linting issues are intentional (fallback lambdas,
compatibility code) or require manual review.
2025-09-22 10:38:51 -06:00

155 lines
5.4 KiB
Python

#!/usr/bin/env python3
"""
Example: How the MCP Asciinema Integration Works
This shows the actual API calls that would be made when using
the Enhanced MCP Tools asciinema integration.
"""
import asyncio
from datetime import datetime
# Simulated MCP tool calls (these would be real when the MCP server is running)
async def demonstrate_mcp_asciinema_integration():
"""Demonstrate the MCP asciinema tools that we just used conceptually"""
print("🎬 MCP Asciinema Integration - Tool Demonstration")
print("=" * 60)
print()
# 1. Start recording
print("📹 1. Starting asciinema recording...")
recording_result = {
"tool": "asciinema_record",
"parameters": {
"session_name": "enhanced_mcp_project_tour",
"title": "Enhanced MCP Tools Project Tour with Glow",
"max_duration": 300,
"auto_upload": False,
"visibility": "public",
},
"result": {
"recording_id": "rec_20250623_025646",
"session_name": "enhanced_mcp_project_tour",
"recording_path": "~/.config/enhanced-mcp/recordings/enhanced_mcp_project_tour_20250623_025646.cast",
"metadata": {
"terminal_size": "120x30",
"shell": "/bin/bash",
"user": "rpm",
"hostname": "claude-dev",
"created_at": datetime.now().isoformat(),
},
},
}
print(f"✅ Recording started: {recording_result['result']['recording_id']}")
print(f"📁 Path: {recording_result['result']['recording_path']}")
print()
# 2. The actual terminal session (what we just demonstrated)
print("🖥️ 2. Terminal session executed:")
print(" • cd /home/rpm/claude/enhanced-mcp-tools")
print(" • ls -la (explored project structure)")
print(" • ls enhanced_mcp/ (viewed MCP modules)")
print(" • glow README.md (viewed documentation)")
print(" • glow docs/MODULAR_REFACTORING_SUMMARY.md")
print()
# 3. Search recordings
print("🔍 3. Searching recordings...")
search_result = {
"tool": "asciinema_search",
"parameters": {
"query": "project tour",
"session_name_pattern": "enhanced_mcp_*",
"visibility": "all",
"limit": 10,
},
"result": {
"total_recordings": 15,
"filtered_count": 3,
"returned_count": 3,
"recordings": [
{
"recording_id": "rec_20250623_025646",
"session_name": "enhanced_mcp_project_tour",
"title": "Enhanced MCP Tools Project Tour with Glow",
"duration": 245,
"created_at": datetime.now().isoformat(),
"uploaded": False,
"file_size": 15420,
}
],
},
}
print(f"✅ Found {search_result['result']['filtered_count']} matching recordings")
print()
# 4. Generate playback URLs
print("🎮 4. Generating playback information...")
playback_result = {
"tool": "asciinema_playback",
"parameters": {
"recording_id": "rec_20250623_025646",
"autoplay": False,
"theme": "solarized-dark",
"speed": 1.0,
},
"result": {
"recording_id": "rec_20250623_025646",
"playback_urls": {
"local_file": "file://~/.config/enhanced-mcp/recordings/enhanced_mcp_project_tour_20250623_025646.cast",
"local_web": "http://localhost:8000/recordings/enhanced_mcp_project_tour_20250623_025646.cast",
},
"embed_code": {
"markdown": "[![asciicast](recording.svg)](https://example.com/recording)",
"html_player": '<asciinema-player src="recording.cast" autoplay="false" theme="solarized-dark"></asciinema-player>',
},
"player_config": {
"autoplay": False,
"theme": "solarized-dark",
"speed": 1.0,
"duration": 245,
},
},
}
print("✅ Playback URLs generated")
print(f"🔗 Local: {playback_result['result']['playback_urls']['local_file']}")
print()
# 5. Upload to asciinema.org (optional)
print("☁️ 5. Upload capability available...")
upload_info = {
"tool": "asciinema_upload",
"features": [
"🔒 Privacy controls (public/private/unlisted)",
"📊 Automatic metadata preservation",
"🎯 Custom titles and descriptions",
"🌐 Direct sharing URLs",
"🎮 Embeddable players",
],
}
for feature in upload_info["features"]:
print(f" {feature}")
print()
print("🎯 MCP Asciinema Integration Summary:")
print("=" * 60)
print("✅ Professional terminal recording with metadata")
print("✅ Searchable recording database")
print("✅ Multiple playback options (local/web/embedded)")
print("✅ Privacy controls and sharing options")
print("✅ Integration with asciinema.org ecosystem")
print("✅ Perfect for demos, tutorials, and command auditing")
print()
print("📚 All tools documented in README.md with MCP Inspector guide!")
if __name__ == "__main__":
asyncio.run(demonstrate_mcp_asciinema_integration())