#!/usr/bin/env python3 """ Claude Code MCP integration demo for asciinema recording Shows how easy it is to give Claude web access """ import asyncio from rich.console import Console from rich.panel import Panel from rich.syntax import Syntax console = Console() async def demo_claude_integration(): """Demo Claude Code MCP integration""" console.print("\n🧠 [bold blue]Claude Code MCP Integration Demo[/bold blue]\n") console.print("[dim]\"Hey Claude, go grab that data from the React app\"[/dim] ← This actually works now!\n") # Show the MCP server code mcp_code = '''# Add to your Claude Code MCP server from crawailer.mcp import create_mcp_server @mcp_tool("web_extract") async def extract_content(url: str, script: str = ""): """Extract content from any website with optional JavaScript execution""" content = await web.get(url, script=script) return { "title": content.title, "markdown": content.markdown, "script_result": content.script_result, "word_count": content.word_count }''' syntax = Syntax(mcp_code, "python", theme="monokai", line_numbers=True) console.print(Panel(syntax, title="šŸ”§ MCP Server Setup", border_style="blue")) await asyncio.sleep(3) # Show Claude conversation console.print("\nšŸ’¬ [bold]Claude Code Conversation:[/bold]") await asyncio.sleep(1) console.print("\n[cyan]You:[/cyan] Claude, can you extract the pricing info from https://shop.example.com/product/123?") await asyncio.sleep(2) console.print("\n[green]Claude:[/green] I'll extract that pricing information for you!") console.print("[green]Claude:[/green] [dim]Using web_extract tool...[/dim]") await asyncio.sleep(2) console.print("\n[green]Claude:[/green] Here's the pricing information I extracted:") # Show extracted content result_panel = Panel.fit( "[green]**Product:** Premium Widget Pro\n" "**Price:** $299.99 (was $399.99)\n" "**Discount:** 25% off - Limited time!\n" "**Stock:** 47 units available\n" "**Shipping:** Free 2-day delivery\n" "**Reviews:** 4.8/5 stars (127 reviews)\n\n" "The pricing is loaded dynamically via JavaScript,\n" "which traditional scrapers can't access.[/green]", title="šŸ“Š Extracted Data", border_style="green" ) console.print(result_panel) console.print("\nšŸŽ‰ [bold green]Benefits:[/bold green]") console.print(" • No more \"I can't access that site\"") console.print(" • No more copy-pasting content manually") console.print(" • Your AI can now browse the web like a human") console.print("\n⚔ [bold]Claude Code + Crawailer = Web superpowers for your AI![/bold]") if __name__ == "__main__": asyncio.run(demo_claude_integration())