arthur
Arthur
Runtime headless de Chromium ligero y servidor MCP para agentes de IA
¿Qué es Arthur?
Arthur es un runtime de navegador headless de un solo comando y un servidor de Model Context Protocol (MCP) para agentes de IA.
Se conecta directamente a Chromium a través de WebSockets del Chrome DevTools Protocol (CDP) sin necesidad de extensiones de navegador, pantallas virtuales (X11/VNC) ni controladores de automatización pesados. Un solo comando lanza el servidor MCP, inicia un proceso headless de Chromium aislado y proporciona a tu agente de IA control procedural completo del navegador.
Agent / MCP Client
│
▼ execute_python(code)
FastMCP Server (stdio / Streamable HTTP)
│
▼
Python REPL Session (stateful memory & auto-snapshots)
│
▼
Arthur Browser API (synchronous facade)
│
▼ CDP WebSockets
Headless Chromium (--headless=new)Related MCP server: openmcp
Inicio rápido
No necesitas clonar el repositorio ni instalar dependencias manualmente. Arthur se ejecuta al instante mediante uvx.
1. Escritorio local (Claude Desktop, Cursor, Goose)
Añade Arthur a tu archivo de configuración de MCP (p. ej. claude_desktop_config.json):
{
"mcpServers": {
"arthur": {
"command": "uvx",
"args": ["arthur-runtime", "mcp"]
}
}
}Cuando tu agente de IA llama al navegador, Arthur detecta automáticamente Chrome/Chromium local, inicia el navegador headless, ejecuta las acciones y limpia al terminar.
2. Contenedor Docker (HTTP Streamable autocontenido)
Ejecuta Arthur en un contenedor Debian Slim ligero y autocontenido con Chromium headless, gestión de procesos tini como PID 1 y soporte nativo multi-arquitectura (amd64 / arm64):
Ejecutar con Docker:
docker run -d \
--name arthur \
-p 8000:8000 \
--shm-size=1g \
--restart unless-stopped \
sh7vansh/arthur:latestO ejecutar con Docker Compose:
docker compose up -dConecta tu cliente MCP:
{
"mcpServers": {
"arthur": {
"url": "http://localhost:8000/mcp"
}
}
}3. Servidor remoto / nube (Python directo mediante uvx)
Para ejecutar Arthur en una VM remota, VPS o servidor en la nube sin Docker:
Inicia el servidor:
uvx arthur-runtime mcp --transport streamable-http --stateless --host 0.0.0.0 --port 8000Conecta tu cliente MCP:
{
"mcpServers": {
"arthur": {
"url": "http://YOUR_SERVER_IP:8000/mcp"
}
}
}El HTTP Streamable sin estado es resistente a las caídas de red y funciona perfectamente detrás de Nginx, Cloudflare Tunnels y AWS ALBs, manteniendo las pestañas del navegador y las variables de Python en la memoria del servidor.
4. Shell de terminal interactiva (para pruebas)
Prueba el navegador directamente desde tu terminal:
uvx arthur-runtime replArthur Interactive REPL (Type 'exit()' or press Ctrl+D to exit)
Global 'browser' instance is available.
arthur> browser.navigate('https://example.com')
arthur> print(browser.snapshot())
arthur> browser.click(1)Cómo funciona
Arthur gestiona todo el ciclo de vida del navegador en un único proceso autocontenido:
Detección automática: Localiza Chrome, Chromium, Brave o Edge instalados en Linux, macOS o Windows.
Sandbox efímero: Inicia Chromium con
--headless=newy un directorio temporal aislado de datos de usuario.WebSockets CDP: Se comunica directamente a través de WebSockets locales para la selección de elementos de baja latencia y la simulación de entrada.
Cierre automático: Apaga correctamente el subproceso de Chromium y purga los archivos temporales cuando finaliza la sesión.
Referencia de la API de Python
Cuando tu agente de IA usa la herramienta execute_python, la instancia síncrona browser se inyecta previamente:
# Navigation & Page State
browser.navigate("https://example.com", timeout=30.0)
print(browser.snapshot()) # Semantic Ref-ID outline ([#1], [#2])
print(browser.url, browser.title)
# Interactions (Ref-ID, String Ref, or CSS Selector)
browser.click(1) # Click Ref-ID #1
browser.click("button.submit-btn") # CSS selector fallback
browser.type(2, "search query", press_enter=True)
browser.select(3, "Option Value")
browser.hover(1)
browser.scroll(x=0, y=500)
# Waiting & Synchronization
browser.wait_for(1, state="visible", timeout=10.0)
browser.wait_for_url(r"^https://example\.com/dashboard", timeout=15.0)
# Page Evaluation & Inspection
result = browser.eval_js("window.innerWidth")
png_bytes = browser.screenshot()
text = browser.get_text(1)
attr = browser.get_attribute(1, "data-custom")
# Fast Native Media Control (Zero-DOM)
state = browser.media.status() # HTML5 media state & player metadata
browser.media.toggle() # Toggle play/pause
browser.media.play() # Resume playback
browser.media.pause() # Pause playback
browser.media.seek(15.0) # Seek relative seconds (+15s / -10s)
browser.media.set_volume(0.8) # Set volume level (0.0 to 1.0)
# Multi-Tab Control & Help
new_tab = browser.new_tab("https://google.com")
all_tabs = browser.tabs
active = browser.active_tab
browser.close_tab(2)
print(browser.help()) # Built-in formatted SDK quick referenceCaracterísticas principales
Instantáneas semánticas Ref-ID: Genera árboles DOM accesibles compactos y eficientes en tokens con números asignados (
[#1],[#2]), evitando XPath frágiles o selectores CSS largos.Controlador de medios rápido (
browser.media): Manipulación de reproducción de medios sin DOM que penetra en las raíces abiertas de Shadow DOM sin costosos recálculos de instantáneas.REPL de Python persistente: El estado, las variables, las importaciones y las funciones personalizadas persisten entre las llamadas a las herramientas del agente.
Autocuración en un solo turno: Adjunta automáticamente una instantánea DOM de diagnóstico (
[diagnostic_auto_snapshot]) y sugerencias difusas cuando se produce un error, lo que permite a los agentes autocorregirse en un solo turno.Recursos y prompts de MCP: Recursos MCP integrados (
arthur://docs/api,arthur://docs/workflow) y prompts estructurados (browser_automation,media_control) para una incorporación inteligente del agente.Presupuesto de tokens y desactivación: Trunca las salidas grandes para evitar la explosión de la ventana de contexto y sanea las balizas de imágenes de seguimiento (
[IMAGE_BLOCKED]).
Desarrollo local
Si quieres contribuir o compilar desde el código fuente:
# Clone and install dependencies
git clone https://github.com/sh7vansh/arthur.git
cd arthur
uv sync --all-extras
# Run tests
uv run pytest
# Run type checker
uv run mypy srcLicencia
Este proyecto está licenciado bajo la Licencia MIT — consulta el archivo LICENSE para más detalles.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLets coding agents control and inspect a live Chrome browser via the Model-Context-Protocol, providing advanced browser debugging, performance insights, and reliable automation.17Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to automate web tasks such as browsing, clicking, typing, and taking screenshots via the Model Context Protocol.1MIT
- AlicenseBqualityAmaintenanceEnables browser automation through the Model Context Protocol, allowing AI agents to control Chrome, Firefox, or Edge for tasks like navigation, clicking, typing, and screenshots.3948MIT
- FlicenseAqualityDmaintenanceEnables AI-powered browser automation controlled through natural language, integrating Playwright with the Model Context Protocol to perform web interactions like navigation, form filling, and screenshots.10
Related MCP Connectors
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sh7vansh/arthur'
If you have feedback or need assistance with the MCP directory API, please join our Discord server