Skip to main content
Glama

MCP Chromium ARM64 Server

🚀 Zwei Implementierungsansätze verfügbar

📦 Versionsvergleich

Funktion

Direct CDP (v1.4.0)EMPFOHLEN

Puppeteer-basiert (v1.2.0)

Abhängigkeiten

Nur ws + MCP SDK (89 Pakete)

Puppeteer + MCP SDK (163 Pakete)

Speichernutzung

Niedriger (natives Chromium)

Höher (Node.js-Wrapper-Overhead)

Startzeit

Schneller (direktes WebSocket)

Langsamer (Puppeteer-Initialisierung)

Browser-Steuerung

Natives Chrome DevTools Protocol

Puppeteer-Abstraktionsschicht

ARM64-Optimierung

Vollständig natives ARM64

Abhängig von Puppeteer ARM64-Support

Debugging

Roh-CDP-Nachrichten sichtbar

Durch Puppeteer abstrahiert

Wartung

Nur Chrome-Protokoll-Änderungen

Puppeteer + Chrome-Protokoll-Änderungen

Leistung

Beste (direkte Kommunikation)

Gut (gekapselte Kommunikation)

🎯 Wann welche Version verwenden?

Verwenden Sie Direct CDP (v1.4.0), wenn:

  • ✅ Sie maximale Leistung und minimale Abhängigkeiten wünschen

  • ✅ Sie native ARM64-Optimierung benötigen

  • ✅ Sie direkte Kontrolle über das Chrome DevTools Protocol wünschen

  • ✅ Sie Produktions-Automatisierungssysteme aufbauen

  • ✅ Sie die neuesten Funktionen und schnellsten Updates wünschen

Verwenden Sie Puppeteer-basiert (v1.2.0), wenn:

  • ✅ Sie von bestehendem Puppeteer-Code migrieren

  • ✅ Sie die Puppeteer-API-Abstraktion bevorzugen

  • ✅ Sie spezifische Puppeteer-Funktionen benötigen, die noch nicht in Direct CDP implementiert sind

  • ✅ Sie Änderungen an bestehenden Workflows minimieren möchten

🔄 Zwischen Versionen wechseln

# Switch to Direct CDP (recommended)
git checkout direct-chromium
npm install  # Only 89 packages

# Switch back to Puppeteer version
git checkout main  
npm install  # 163 packages

Related MCP server: mcp-browser-use

📚 Dokumentation & spezialisierte Anleitungen

Dieses Repository enthält mehrere Dokumentationsansätze für unterschiedliche Zielgruppen:

🎯 Für Entwickler & DevOps-Ingenieure

📖 TECHNISCHE README - Umfassende technische Dokumentation, einschließlich:

  • Architekturdiagramme und API-Referenz

  • Leistungs-Benchmarks und Optimierungsleitfäden

  • CI/CD-Integrationsbeispiele und E2E-Test-Workflows

  • Erweiterte Debugging- und Anpassungsoptionen

🍓 Für Maker & Unternehmer

📖 RASPBERRY PI README - Budgetorientierter Leitfaden, einschließlich:

  • Komplette 480-$-KI-Entwicklungsumgebung

  • No-Code-SaaS-Entwicklungs-Workflows

  • Praxisnahe Startup-Anwendungsfälle und ROI-Analyse

  • Fokus auf globale Zugänglichkeit und Maker-Bewegung

Schnellzugriffe


✨ Kernfunktionen

🤖 Native ARM64-Browser-Automatisierung

  • Direkte Implementierung des Chrome DevTools Protocol

  • 27 umfassende MCP-Tools für vollständige Browser-Steuerung

  • Optimiert für Raspberry Pi- und Apple Silicon-Architekturen

  • Keine Abhängigkeit von fehlerhaften x86_64-Puppeteer-Binärdateien

⚡ Hochleistungsarchitektur

  • Nur 2 Abhängigkeiten (ws + MCP SDK) gegenüber 163 Paketen bei Puppeteer

  • Geringere Speichernutzung und schnellere Startzeiten

  • Direkte WebSocket-Kommunikation mit Chrome

  • Umfassende Protokollierungs- und Audit-Funktionen

🛠️ Enterprise-Ready-Entwicklung

  • Vollständige Debugging-Suite mit Konsolen-/Netzwerküberwachung

  • Integrierte Barrierefreiheits-, SEO- und Leistungs-Audits

  • CI/CD-Integrationsbeispiele und E2E-Test-Workflows

  • Plattformübergreifende Kompatibilität (Linux ARM64, macOS Apple Silicon)

💰 Erschwingliche Innovationsplattform

  • Komplette KI-Entwicklungsumgebung für unter 500 $

  • Gleiche Fähigkeiten wie 50.000-$-Enterprise-Workstations

  • Globale Zugänglichkeit für Maker und Startups weltweit

  • Keine wiederkehrenden Cloud-Kosten – Sie besitzen Ihre Infrastruktur


🚀 Universeller Schnellstart

Voraussetzungen

# Install system dependencies
sudo apt update
sudo apt install chromium-browser nodejs npm python3

# Verify Chromium works
chromium-browser --version

Installation

git clone https://github.com/nfodor/mcp-chromium-arm64
cd mcp-chromium-arm64
npm install
chmod +x *.py *.sh

Schnelltest (Einzeiler)

# Verify it works immediately after install:
python3 -c "import sys; sys.path.append('.'); import arm64_browser; print('[OK] ARM64 Browser Works!' if 'error' not in arm64_browser.navigate('https://example.com').lower() else '[FAIL] Failed')"

Erwartetes Ergebnis: [OK] ARM64 Browser Works!

Test & Demo

# Quick demo with immediate visible results (30 seconds)
python3 instant_demo.py

# Or comprehensive demo showing all capabilities (2-3 minutes)
./run_demo.sh

Einrichtung testen

# Test MCP server directly
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | node index.js

# Test Python wrapper
python3 simple_browser.py

🛠️ Entwicklerhandbuch & Debugging

🔧 Verfügbare MCP-Tools (insgesamt 27)

Kern-Browser-Steuerung

  • navigate - Navigieren zu URLs mit vollständigem Laden der Seite

  • screenshot - PNG-Screenshots aufnehmen (ganze Seite oder Viewport)

  • click - Elemente per CSS-Selektor mit präziser Positionierung anklicken

  • fill - Eingabefelder mit Text oder Werten füllen

  • hover - Über Elemente fahren für Dropdown-/Tooltip-Interaktionen

  • select - Dropdown-Optionen nach Wert auswählen

  • evaluate - JavaScript ausführen und Ergebnisse zurückgeben

  • get_content - Seiten-HTML oder reinen Textinhalt extrahieren

Erweiterte Funktionalität

  • get_console_logs - Browser-Konsolenausgabe abrufen

  • get_console_errors - Nur Konsolenfehlermeldungen abrufen

  • get_network_logs - Alle Netzwerkanfragen/-antworten überwachen

  • get_network_errors - Fehlgeschlagene Netzwerkanfragen (4xx/5xx) verfolgen

  • wipe_logs - Alle gespeicherten Protokolle aus dem Speicher löschen

  • get_selected_element - Informationen über das aktuell fokussierte Element abrufen

Emulation mobiler Geräte

  • emulate_device - Emulieren mobiler Geräte mit 17 Voreinstellungen oder benutzerdefiniertem Viewport/UA/DPR/Touch, mit Unterstützung für Querformat

    • iPhones: iphone-16, iphone-16-pro, iphone-16-pro-max, iphone-16e, iphone-15, iphone-15-pro-max, iphone-se

    • Pixels: pixel-9, pixel-9-pro, pixel-9-pro-xl, pixel-9-pro-fold

    • Samsung: galaxy-s24, galaxy-s24-ultra, galaxy-z-fold-5

    • Tablets: ipad-air-m2, ipad-pro-13, galaxy-tab-s9

  • reset_emulation - Geräteemulation auf Desktop-Modus zurücksetzen

Screencast-Aufnahme

  • start_screencast - Browser-Aktivität via CDP-Screencast aufzeichnen (konfigurierbares Format, Qualität, Auflösung, Frame-Skip)

  • stop_screencast - Aufnahme stoppen und via ffmpeg in MP4, GIF oder WebM kodieren (erkennt FPS automatisch anhand von Frame-Zeitstempeln)

  • screencast_status - Aufnahmestatus, Frame-Anzahl und verstrichene Dauer prüfen

Audit- & Analyse-Tools

  • run_accessibility_audit - Alt-Texte, Labels, Überschriften, Kontrast prüfen

  • run_performance_audit - Ladezeiten, Speichernutzung, Ressourcen messen

  • run_seo_audit - Titel, Meta-Beschreibung, H1-Tags, Canonical validieren

  • run_best_practices_audit - HTTPS, veraltetes HTML, Viewport prüfen

  • run_nextjs_audit - Next.js-spezifische Optimierungsprüfungen

  • run_debugger_mode - Umfassende Debugging-Informationen

  • run_audit_mode - Alle Audits zusammen mit Zusammenfassung ausführen

  • close_browser - Sauberes Herunterfahren des Chromium-Prozesses

🐛 Debugging & Entwicklung

Direktes MCP-Testen

# Test individual tools directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"navigate","arguments":{"url":"https://example.com"}}}' | node index.js

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"document.title"}}}' | node index.js

echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"screenshot","arguments":{"name":"debug.png"}}}' | node index.js

Screencast-Aufnahme

# Start recording, interact with the page, then stop and encode
# 1. Start screencast
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"start_screencast","arguments":{"format":"jpeg","quality":80,"maxWidth":1280,"maxHeight":720}}}' | node index.js

# 2. Perform actions (navigate, click, fill, etc.)
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"navigate","arguments":{"url":"https://example.com"}}}' | node index.js

# 3. Check recording progress
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"screencast_status","arguments":{}}}' | node index.js

# 4. Stop and encode to MP4
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"stop_screencast","arguments":{"output":"mp4","name":"my-demo"}}}' | node index.js
# Output: /tmp/my-demo.mp4

# Encode as GIF instead (2-pass palette for quality)
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"stop_screencast","arguments":{"output":"gif","name":"bug-repro"}}}' | node index.js
# Output: /tmp/bug-repro.gif

# Or WebM (VP9)
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"stop_screencast","arguments":{"output":"webm"}}}' | node index.js

Erfordert: ffmpeg auf dem System installiert. FPS werden automatisch anhand von CDP-Frame-Zeitstempeln erkannt. Die GIF-Ausgabe ist auf 15 fps begrenzt, um angemessene Dateigrößen zu gewährleisten.

Emulation mobiler Geräte

# Emulate iPhone 16 Pro
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"emulate_device","arguments":{"device":"iphone-16-pro"}}}' | node index.js

# Emulate in landscape mode
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"emulate_device","arguments":{"device":"ipad-pro-13","landscape":true}}}' | node index.js

# Custom viewport with DPR
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"emulate_device","arguments":{"width":390,"height":844,"deviceScaleFactor":3,"mobile":true}}}' | node index.js

# Reset back to desktop
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"reset_emulation","arguments":{}}}' | node index.js

Netzwerk- & Konsolenüberwachung

# Navigate to a page, then check console logs
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_console_logs","arguments":{}}}' | node index.js

# Get only errors
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_console_errors","arguments":{}}}' | node index.js

# Check network activity (all requests with status codes)
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_network_logs","arguments":{}}}' | node index.js

# Check for failed requests (4xx/5xx)
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"get_network_errors","arguments":{}}}' | node index.js

# Clear all logs when done
echo '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"wipe_logs","arguments":{}}}' | node index.js

Audits

# Run all audits at once (accessibility + performance + SEO + best practices + Next.js)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"run_audit_mode","arguments":{}}}' | node index.js

# Or run individual audits
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"run_accessibility_audit","arguments":{}}}' | node index.js
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_performance_audit","arguments":{}}}' | node index.js
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"run_seo_audit","arguments":{}}}' | node index.js

# Get full debug info (URL, viewport, memory, timing)
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"run_debugger_mode","arguments":{}}}' | node index.js

Element-Inspektion

# Get info about the currently focused element
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_selected_element","arguments":{}}}' | node index.js
# Returns: tagName, id, className, textContent, value, and a CSS selector

Chrome DevTools Protocol Debugging

# Manual CDP connection test
node -e "
const { WebSocket } = require('ws');
const { spawn } = require('child_process');

const chrome = spawn('/usr/bin/chromium-browser', [
  '--headless', '--remote-debugging-port=9227'
]);

setTimeout(() => {
  fetch('http://localhost:9227/json')
    .then(r => r.json())
    .then(tabs => {
      console.log('Available tabs:', tabs.length);
      const ws = new WebSocket(tabs[0].webSocketDebuggerUrl);
      ws.on('open', () => {
        console.log('CDP WebSocket connected!');
        ws.send(JSON.stringify({id: 1, method: 'Runtime.evaluate', params: {expression: '2+2'}}));
      });
      ws.on('message', (data) => {
        console.log('CDP Response:', JSON.parse(data));
        chrome.kill();
        process.exit(0);
      });
    });
}, 2000);
"

Leistungsüberwachung

# Monitor system resources during operation
htop &
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"navigate","arguments":{"url":"https://httpbin.org/delay/5"}}}' | time node index.js

# Check memory usage
ps aux | grep chromium
free -h

Netzwerk-Debugging

# Check if debugging port is accessible
curl -s http://localhost:9222/json | jq '.[] | {id, title, type}'

# Monitor WebSocket traffic (install websocat)
websocat ws://localhost:9222/devtools/page/[TAB_ID] --text -v

🔍 Häufige Debugging-Szenarien

1. WebSocket-Verbindungsprobleme

# Symptoms: "CDP command timeout" errors
# Check if chrome debugging port is running
lsof -i :9222

# Test manual connection
node -e "
const { WebSocket } = require('ws');
const ws = new WebSocket('ws://localhost:9222/devtools/browser');
ws.on('open', () => console.log('✓ WebSocket OK'));
ws.on('error', (e) => console.log('✗ WebSocket Error:', e.message));
setTimeout(() => process.exit(0), 2000);
"

2. Chrome-Prozessprobleme

# Symptoms: Browser won't start or hangs
# Kill any stuck processes
pkill -f chromium-browser
pkill -f remote-debugging-port

# Test chrome startup manually
timeout 10s /usr/bin/chromium-browser --headless --remote-debugging-port=9223 --no-sandbox

# Check chrome logs
journalctl --user -u chromium --since "1 hour ago"

3. Probleme bei der Elementauswahl

# Debug CSS selectors interactively
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"document.querySelectorAll(\"button\").length"}}}' | node index.js

# Get element information
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"document.querySelector(\"#mybutton\") ? \"found\" : \"not found\""}}}' | node index.js

4. Speicher- und Leistungsprobleme

# Monitor memory during operation
watch -n 1 'ps aux | grep -E "(chromium|node)" | grep -v grep'

# Chrome memory debugging
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"JSON.stringify(performance.memory)"}}}' | node index.js

🎯 Erweiterte Debugging-Funktionen

Ausführliche Protokollierung aktivieren

# Set environment variables for detailed output
export DEBUG=puppeteer:*
export NODE_ENV=development

# Run with detailed Chrome logs
/usr/bin/chromium-browser --headless --enable-logging --log-level=0 --remote-debugging-port=9222

CDP-Nachrichtenverfolgung

# Create debug version with message logging
cp index.js debug-index.js

# Add to sendCDPCommand method:
# console.log('→ CDP:', JSON.stringify(command));
# console.log('← CDP:', JSON.stringify(response));

node debug-index.js

Integration mit Browser-DevTools

# Connect regular Chrome DevTools to the headless instance
# 1. Start the MCP server
# 2. Open regular Chrome/Chromium
# 3. Navigate to: chrome://inspect
# 4. Click "Configure..." and add localhost:9222
# 5. Click "inspect" on the page you want to debug

📊 Leistungs-Benchmarks

Vergleich der Startzeit

# Direct CDP (v1.3.0)
time echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"Date.now()"}}}' | node index.js

# Puppeteer version (v1.2.0)  
git checkout main
time echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"evaluate","arguments":{"script":"Date.now()"}}}' | node index.js

Überwachung der Speichernutzung

# Before operation
free -h && ps aux | grep -E "(chromium|node)" | grep -v grep

# During operation (run in another terminal)
watch -n 1 'echo "=== $(date) ===" && free -h && echo && ps aux | grep -E "(chromium|node)" | grep -v grep'

🚨 Fehlercodes & Lösungen

Fehler

Ursache

Lösung

CDP command timeout

WebSocket-Verbindung verloren

Browser neu starten, Port-Verfügbarkeit prüfen

WebSocket not ready

Chrome nicht vollständig gestartet

Startverzögerung erhöhen, Chrome-Prozess prüfen

Element not found

CSS-Selektor ungültig

Selektor mit evaluate-Tool verifizieren

ECONNREFUSED

Debugging-Port blockiert

Firewall prüfen, bestehende Chrome-Prozesse beenden

Navigation timeout

Seitenladeprobleme

Netzwerk prüfen, Timeout erhöhen, einfachere Seite versuchen

🔧 Anpassung & Erweiterung

Neue MCP-Tools hinzufügen

// In index.js, add to tools array:
{
  name: 'my_custom_tool',
  description: 'My custom functionality',
  inputSchema: {
    type: 'object',
    properties: {
      param: { type: 'string', description: 'Parameter description' }
    },
    required: ['param']
  }
}

// Add to switch statement in CallToolRequestSchema handler:
case 'my_custom_tool':
  return await this.myCustomTool(args.param);

// Implement the method:
async myCustomTool(param) {
  await this.ensureChromium();
  const result = await this.sendCDPCommand('Page.navigate', { url: param });
  return { content: [{ type: 'text', text: `Custom result: ${result}` }] };
}

Umgebungsvariablen

# Set browser window size (default: 1280,720)
export CHROMIUM_WINDOW_SIZE=1920,1080

Chrome-Startoptionen

// Modify in startChromium() method:
const customArgs = [
  '--headless',
  '--no-sandbox',
  '--disable-extensions',
  '--disable-plugins',
  '--disable-background-timer-throttling',
  '--disable-backgrounding-occluded-windows',
  '--disable-renderer-backgrounding',
  '--remote-debugging-port=9222',
  '--window-size=1920,1080',        // Custom viewport
  '--user-agent=CustomUA/1.0',      // Custom user agent
  '--disable-web-security',         // For CORS testing
  '--allow-running-insecure-content' // For mixed content
];

🌐 Plattformübergreifende ARM64-Kompatibilität

Plattform-Support-Matrix

Plattform

Status

Chrome-Pfad

Installationsmethode

Hinweise

Linux ARM64

Voll unterstützt

/usr/bin/chromium-browser

apt install chromium-browser

Getestet auf Raspberry Pi OS

macOS Apple Silicon ⚠️

Erfordert Änderungen

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome

Download von Google oder brew install chromium

Pfad- und Flag-Updates erforderlich

Windows ARM64

Ungetestet

C:\Program Files\Google\Chrome\Application\chrome.exe

Download von Google

Würde Windows-spezifische Änderungen erfordern

macOS Apple Silicon Einrichtung

Voraussetzungen

# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Node.js and Chromium
brew install node chromium --no-quarantine

Erforderliche Codeänderungen

Derzeit ist der Server für Linux ARM64 optimiert. Für macOS-Kompatibilität ändern Sie index.js:

// Detect platform and set appropriate chrome path
function getChromePath() {
  const platform = process.platform;
  
  switch(platform) {
    case 'linux':
      return '/usr/bin/chromium-browser';
    case 'darwin': // macOS
      // Try multiple possible paths
      const macPaths = [
        '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
        '/Applications/Chromium.app/Contents/MacOS/Chromium',
        '/opt/homebrew/bin/chromium'
      ];
      
      for (const path of macPaths) {
        if (require('fs').existsSync(path)) {
          return path;
        }
      }
      throw new Error('Chrome/Chromium not found on macOS');
    case 'win32':
      return 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe';
    default:
      throw new Error(`Unsupported platform: ${platform}`);
  }
}

// Update startChromium method
async startChromium() {
  const chromePath = getChromePath();
  const platform = process.platform;
  
  // Platform-specific arguments
  const baseArgs = [
    '--headless',
    '--disable-extensions',
    '--disable-plugins',
    `--remote-debugging-port=${debuggingPort}`,
    '--no-first-run',
    '--disable-gpu',
    '--window-size=1280,720'
  ];
  
  // Add Linux-specific sandbox flags
  if (platform === 'linux') {
    baseArgs.push('--no-sandbox', '--disable-setuid-sandbox');
  }
  
  // Add macOS-specific flags if needed
  if (platform === 'darwin') {
    baseArgs.push('--disable-dev-shm-usage');
  }
  
  chromiumProcess = spawn(chromePath, baseArgs);
  // ... rest of method
}

macOS-spezifische Probleme & Lösungen

1. Fehler "Chromium ist beschädigt"

# Remove quarantine flag if downloading manually
sudo xattr -r -d com.apple.quarantine /Applications/Chromium.app

# Or install via Homebrew with no-quarantine flag
brew install chromium --no-quarantine

2. Wahl zwischen Chrome und Chromium

# Option 1: Use Google Chrome (recommended)
# Download from: https://www.google.com/chrome/
# Path: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

# Option 2: Use Chromium via Homebrew
brew install chromium --no-quarantine
# Path: /opt/homebrew/bin/chromium

3. Berechtigungsprobleme

# Ensure Chrome has required permissions
# System Preferences > Security & Privacy > Privacy tab
# Grant Camera, Microphone access if needed for specific use cases

Plattformübergreifende Kompatibilität testen

Schnelltest zur Plattformerkennung

node -e "
console.log('Platform:', process.platform);
console.log('Architecture:', process.arch);
const fs = require('fs');

const paths = {
  linux: '/usr/bin/chromium-browser',
  darwin: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
  win32: 'C:\\\\Program Files\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe'
};

const chromePath = paths[process.platform];
console.log('Expected Chrome path:', chromePath);
console.log('Chrome exists:', fs.existsSync(chromePath));
"

Plattformübergreifender MCP-Test

# Test basic functionality across platforms
echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"evaluate\",\"arguments\":{\"script\":\"navigator.platform\"}}}' | node index.js

# Should return the current platform

Überlegungen zu Windows ARM64

Obwohl ungetestet, würde der Windows ARM64-Support Folgendes erfordern:

// Windows-specific chrome path detection
case 'win32':
  const winPaths = [
    'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
    'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
    process.env.LOCALAPPDATA + '\\Google\\Chrome\\Application\\chrome.exe'
  ];
  // Similar path checking logic...

Leistungsunterschiede

Plattform

Startzeit

Speichernutzung

Hinweise

Linux ARM64 (Pi 4)

~3-4s

~150MB

Optimiert, gut getestet

macOS Apple Silicon

~2-3s

~200MB

Schnellere CPU, mehr Speicher

Windows ARM64

Unbekannt

Unbekannt

Würde von Hardware abhängen

Beiträge benötigt

Wir freuen uns über Beiträge für vollständigen plattformübergreifenden Support!

  • macOS-Tester: Testen Sie die vorgeschlagenen Änderungen auf Apple Silicon

  • Windows ARM64: Testen Sie auf Surface Pro X oder ähnlichen Geräten

  • Leistungsoptimierung: Plattformspezifische Optimierungen

  • Installationsskripte: Automatisierte Einrichtung für jede Plattform


Claude CLI-Integration

Voraussetzungen

# Install Claude Code CLI if you haven't already
npm install -g @anthropic-ai/claude-code

Zur Claude CLI hinzufügen

# From the project directory after cloning
claude mcp add chromium-arm64 "$(pwd)/mcp-wrapper.sh" --scope user

Verbindung verifizieren

claude mcp list
# Should show: chromium-arm64: /path/to/mcp-wrapper.sh - ✓ Connected

⚠️ Wichtig: Claude nach dem Hinzufügen neu starten

**Sie MÜSSEN

Install Server
A
security – no known vulnerabilities
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/nfodor/claude-arm64-browser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server