chromium-arm64
MCP Chromium ARM64 Server
🚀 2つの実装アプローチ
📦 バージョン比較
機能 | Direct CDP (v1.4.0) ⭐ 推奨 | Puppeteerベース (v1.2.0) |
依存関係 |
| Puppeteer + MCP SDK (163パッケージ) |
メモリ使用量 | 低い (ネイティブChromium) | 高い (Node.jsラッパーのオーバーヘッド) |
起動時間 | 速い (直接WebSocket) | 遅い (Puppeteerの初期化) |
ブラウザ制御 | ネイティブChrome DevTools Protocol | Puppeteer抽象化レイヤー |
ARM64最適化 | 完全ネイティブARM64 | PuppeteerのARM64サポートに依存 |
デバッグ | 生のCDPメッセージを表示可能 | Puppeteerにより抽象化 |
メンテナンス | Chromeプロトコルの変更のみ | Puppeteer + Chromeプロトコルの変更 |
パフォーマンス | 最高 (直接通信) | 良好 (ラップされた通信) |
🎯 バージョンの使い分け
Direct CDP (v1.4.0) を使用すべき場合:
✅ 最大限のパフォーマンスと最小限の依存関係を求める場合
✅ ネイティブARM64最適化が必要な場合
✅ Chrome DevTools Protocolを直接制御したい場合
✅ 本番環境の自動化システムを構築している場合
✅ 最新機能と最速のアップデートを求める場合
Puppeteerベース (v1.2.0) を使用すべき場合:
✅ 既存のPuppeteerコードから移行する場合
✅ Puppeteer APIの抽象化を好む場合
✅ Direct CDPでまだ実装されていない特定のPuppeteer機能が必要な場合
✅ 既存ワークフローへの変更を最小限に抑えたい場合
🔄 バージョンの切り替え
# 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 packagesRelated MCP server: mcp-browser-use
📚 ドキュメントと専門ガイド
このリポジトリには、対象読者に合わせた複数のドキュメントが含まれています。
🎯 開発者およびDevOpsエンジニア向け
📖 技術README - 以下を含む包括的な技術ドキュメント:
アーキテクチャ図とAPIリファレンス
パフォーマンスベンチマークと最適化ガイド
CI/CD統合例とE2Eテストワークフロー
高度なデバッグとカスタマイズオプション
🍓 メイカーおよび起業家向け
📖 Raspberry Pi README - 以下を特徴とする予算重視のガイド:
480ドルで構築するAI開発環境
ノーコードSaaS開発ワークフロー
実践的なスタートアップのユースケースとROI分析
グローバルなアクセシビリティとメイカームーブメントへの焦点
⚡ クイックリンク
開発者: 技術ドキュメントへ →
メイカー: Raspberry Piガイドへ →
すべての方: 以下のユニバーサルセットアップと使用方法へ
✨ 主な機能
🤖 ネイティブARM64ブラウザ自動化
Chrome DevTools Protocolの直接実装
完全なブラウザ制御のための27個の包括的なMCPツール
Raspberry PiおよびApple Siliconアーキテクチャ向けに最適化
壊れやすいx86_64 Puppeteerバイナリへの依存なし
⚡ 高パフォーマンスアーキテクチャ
依存関係はわずか2つ (ws + MCP SDK) (Puppeteerの163パッケージと比較)
低いメモリ使用量と高速な起動時間
Chromeとの直接WebSocket通信
包括的なログ記録と監査機能
🛠️ エンタープライズ対応の開発環境
コンソール/ネットワーク監視を備えた完全なデバッグスイート
アクセシビリティ、SEO、パフォーマンス監査を内蔵
CI/CD統合例とE2Eテストワークフロー
クロスプラットフォーム互換性 (Linux ARM64, macOS Apple Silicon)
💰 手頃な価格のイノベーションプラットフォーム
500ドル未満で構築できる完全なAI開発環境
5万ドル以上のエンタープライズワークステーションと同等の機能
世界中のメイカーやスタートアップが利用可能
定期的なクラウドコストなし - インフラを自前で所有
🚀 ユニバーサルクイックスタート
前提条件
# Install system dependencies
sudo apt update
sudo apt install chromium-browser nodejs npm python3
# Verify Chromium works
chromium-browser --versionインストール
git clone https://github.com/nfodor/mcp-chromium-arm64
cd mcp-chromium-arm64
npm install
chmod +x *.py *.shクイックテスト (ワンライナー)
# 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')"期待される結果: [OK] ARM64 Browser Works!
テストとデモ
# Quick demo with immediate visible results (30 seconds)
python3 instant_demo.py
# Or comprehensive demo showing all capabilities (2-3 minutes)
./run_demo.shセットアップのテスト
# Test MCP server directly
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | node index.js
# Test Python wrapper
python3 simple_browser.py🛠️ 開発者ガイドとデバッグ
🔧 利用可能なMCPツール (合計27個)
コアブラウザ制御
navigate- ページ読み込みを伴うURLへの移動screenshot- PNGスクリーンショットのキャプチャ (ページ全体またはビューポート)click- CSSセレクタによる要素のクリック (正確な位置指定)fill- テキストや値による入力フィールドの埋め込みhover- ドロップダウン/ツールチップ操作のための要素へのホバーselect- 値によるドロップダウンオプションの選択evaluate- JavaScriptの実行と結果の取得get_content- ページのHTMLまたはプレーンテキストコンテンツの抽出
高度な機能
get_console_logs- ブラウザコンソール出力の取得get_console_errors- コンソールエラーメッセージのみの取得get_network_logs- すべてのネットワークリクエスト/レスポンスの監視get_network_errors- 失敗したネットワークリクエスト (4xx/5xx) の追跡wipe_logs- メモリから保存されたすべてのログをクリアget_selected_element- 現在フォーカスされている要素に関する情報の取得
モバイルデバイスエミュレーション
emulate_device- 17個のプリセットまたはカスタムビューポート/UA/DPR/タッチによるモバイルデバイスエミュレーション (ランドスケープサポート)iPhones:
iphone-16,iphone-16-pro,iphone-16-pro-max,iphone-16e,iphone-15,iphone-15-pro-max,iphone-sePixels:
pixel-9,pixel-9-pro,pixel-9-pro-xl,pixel-9-pro-foldSamsung:
galaxy-s24,galaxy-s24-ultra,galaxy-z-fold-5Tablets:
ipad-air-m2,ipad-pro-13,galaxy-tab-s9
reset_emulation- デバイスエミュレーションをデスクトップモードにリセット
スクリーンキャスト録画
start_screencast- CDPスクリーンキャストによるブラウザアクティビティの録画開始 (フォーマット、品質、解像度、フレームスキップを設定可能)stop_screencast- 録画を停止し、ffmpeg経由で MP4、GIF、または WebM にエンコード (フレームタイムスタンプからFPSを自動検出)screencast_status- 録画ステータス、フレーム数、経過時間の確認
監査および分析ツール
run_accessibility_audit- 代替テキスト、ラベル、見出し、コントラストのチェックrun_performance_audit- 読み込み時間、メモリ使用量、リソースの測定run_seo_audit- タイトル、メタディスクリプション、H1タグ、canonicalの検証run_best_practices_audit- HTTPS、非推奨HTML、ビューポートのチェックrun_nextjs_audit- Next.js固有の最適化チェックrun_debugger_mode- 包括的なデバッグ情報run_audit_mode- すべての監査をまとめて実行し、要約を表示close_browser- Chromiumプロセスのクリーンな終了
🐛 デバッグと開発
直接MCPテスト
# 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スクリーンキャスト録画
# 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要件: システムに
ffmpegがインストールされていること。FPSはCDPフレームタイムスタンプから自動検出されます。GIF出力は適切なファイルサイズを維持するため15fpsに制限されています。
モバイルデバイスエミュレーション
# 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ネットワークとコンソールの監視
# 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監査
# 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要素の検査
# 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 selectorChrome DevTools Protocolデバッグ
# 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);
"パフォーマンス監視
# 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ネットワークデバッグ
# 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🔍 一般的なデバッグシナリオ
1. WebSocket接続の問題
# 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プロセスの問題
# 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. 要素選択の問題
# 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.js4. メモリとパフォーマンスの問題
# 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🎯 高度なデバッグ機能
詳細ログの有効化
# 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=9222CDPメッセージトレース
# 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ブラウザ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📊 パフォーマンスベンチマーク
起動時間の比較
# 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メモリ使用量の監視
# 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'🚨 エラーコードと解決策
エラー | 原因 | 解決策 |
| WebSocket接続の切断 | ブラウザを再起動し、ポートの可用性を確認 |
| Chromeが完全に起動していない | 起動遅延を増やし、Chromeプロセスを確認 |
| CSSセレクタが無効 |
|
| デバッグポートがブロックされている | ファイアウォールを確認し、既存のChromeプロセスを終了 |
| ページ読み込みの問題 | ネットワークを確認し、タイムアウトを増やし、より単純なページを試す |
🔧 カスタマイズと拡張
新しいMCPツールの追加
// 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}` }] };
}環境変数
# Set browser window size (default: 1280,720)
export CHROMIUM_WINDOW_SIZE=1920,1080Chrome起動オプション
// 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
];🌐 クロスプラットフォームARM64互換性
プラットフォームサポートマトリックス
プラットフォーム | ステータス | Chromeパス | インストール方法 | メモ |
Linux ARM64 ✅ | 完全サポート |
|
| Raspberry Pi OSでテスト済み |
macOS Apple Silicon ⚠️ | 修正が必要 |
| Googleからダウンロードまたは | パスとフラグの更新が必要 |
Windows ARM64 ❓ | 未テスト |
| Googleからダウンロード | Windows固有の変更が必要 |
macOS Apple Siliconのセットアップ
前提条件
# 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必要なコード変更
現在、サーバーはLinux ARM64向けに最適化されています。macOS互換性のために 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固有の問題と解決策
1. 「Chromiumは壊れています」エラー
# 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-quarantine2. Chromeと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/chromium3. 権限の問題
# Ensure Chrome has required permissions
# System Preferences > Security & Privacy > Privacy tab
# Grant Camera, Microphone access if needed for specific use casesクロスプラットフォーム互換性のテスト
プラットフォーム検出のクイックテスト
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));
"クロスプラットフォームMCPテスト
# 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 platformWindows ARM64に関する考慮事項
未テストですが、Windows ARM64サポートには以下が必要です:
// 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...パフォーマンスの違い
プラットフォーム | 起動時間 | メモリ使用量 | メモ |
Linux ARM64 (Pi 4) | ~3-4秒 | ~150MB | 最適化済み、テスト済み |
macOS Apple Silicon | ~2-3秒 | ~200MB | CPUが速く、メモリが多い |
Windows ARM64 | 不明 | 不明 | ハードウェアに依存 |
貢献のお願い
完全なクロスプラットフォームサポートへの貢献を歓迎します!
macOSテスター: Apple Siliconでの提案された変更のテスト
Windows ARM64: Surface Pro Xなどのデバイスでのテスト
パフォーマンス最適化: プラットフォーム固有の最適化
インストールスクリプト: 各プラットフォーム向けの自動セットアップ
Claude CLI統合
前提条件
# Install Claude Code CLI if you haven't already
npm install -g @anthropic-ai/claude-codeClaude CLIへの追加
# From the project directory after cloning
claude mcp add chromium-arm64 "$(pwd)/mcp-wrapper.sh" --scope user接続の確認
claude mcp list
# Should show: chromium-arm64: /path/to/mcp-wrapper.sh - ✓ Connected⚠️ 重要: 追加後にClaudeを再起動してください
MCPサーバーを追加した後は、新しいClaudeセッションを開始する必要があります:
# Exit current session if in one
exit
# Start fresh session
claudeClaude CLIでの使用
Claudeにchromium-arm64ツールを使用するよう指示してください:
List available MCP servers and use chromium-arm64 to navigate to https://example.com
Take a screenshot using the chromium-arm64 tool
Use chromium-arm64 to click the button with selector #submit
Fill the email field using chromium-arm64 with test@example.com
Record a screencast of the login flow and save it as a GIF
Emulate an iPhone 16 Pro and take a screenshot of the homepage
Run a full audit on https://example.com using chromium-arm64Playwright/Puppeteerを避けるために明示的に指示してください:
「chromium-arm64を使って移動して...」
「chromium-arm64ツールを使ってスクリーンショットを撮って」
「ブラウザを開いて」(壊れたPlaywrightが試される可能性があります)
「スクリーンショットを撮って」(壊れたPuppeteerが試される可能性があります)
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