chromium-arm64
MCP Chromium ARM64 Server
🚀 Доступны два подхода к реализации
📦 Сравнение версий
Функция | Direct CDP (v1.4.0) ⭐ РЕКОМЕНДУЕТСЯ | Puppeteer-based (v1.2.0) |
Зависимости | Только | Puppeteer + MCP SDK (163 пакета) |
Использование памяти | Ниже (нативный chromium) | Выше (накладные расходы обертки Node.js) |
Время запуска | Быстрее (прямой WebSocket) | Медленнее (инициализация puppeteer) |
Управление браузером | Нативный протокол Chrome DevTools | Уровень абстракции Puppeteer |
Оптимизация ARM64 | Полная нативная ARM64 | Зависит от поддержки ARM64 в Puppeteer |
Отладка | Видны необработанные сообщения CDP | Абстрагировано через Puppeteer |
Обслуживание | Только изменения протокола Chrome | Изменения Puppeteer + протокола Chrome |
Производительность | Лучшая (прямая связь) | Хорошая (связь через обертку) |
🎯 Когда какую версию использовать
Используйте Direct CDP (v1.4.0), если:
✅ Вам нужна максимальная производительность и минимум зависимостей
✅ Вам нужна нативная оптимизация ARM64
✅ Вы хотите прямое управление через протокол Chrome DevTools
✅ Вы создаете промышленные системы автоматизации
✅ Вы хотите использовать новейшие функции и получать быстрые обновления
Используйте Puppeteer-based (v1.2.0), если:
✅ Вы мигрируете с существующего кода Puppeteer
✅ Вы предпочитаете абстракцию API Puppeteer
✅ Вам нужны специфические функции Puppeteer, еще не реализованные в direct CDP
✅ Вы хотите минимизировать изменения в существующих рабочих процессах
🔄 Переключение между версиями
# 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-тестирования
Расширенные возможности отладки и настройки
🍓 Для мейкеров и предпринимателей
📖 README ДЛЯ RASPBERRY PI - Руководство, ориентированное на бюджет, включающее:
Полная настройка среды разработки ИИ за $480
Рабочие процессы разработки SaaS без написания кода
Реальные примеры использования в стартапах и анализ ROI
Глобальная доступность и фокус на движении мейкеров
⚡ Быстрые ссылки
Разработчики: Перейти к Технической документации →
Мейкеры: Перейти к Руководству по Raspberry Pi →
Все остальные: Продолжайте чтение для универсальной настройки и использования
✨ Основные функции
🤖 Нативная автоматизация браузера ARM64
Прямая реализация протокола Chrome DevTools
27 комплексных инструментов MCP для полного управления браузером
Оптимизировано для архитектур Raspberry Pi и Apple Silicon
Отсутствие зависимости от сломанных бинарных файлов Puppeteer для x86_64
⚡ Высокопроизводительная архитектура
Всего 2 зависимости (ws + MCP SDK) против 163 пакетов в Puppeteer
Более низкое использование памяти и более быстрое время запуска
Прямая связь по WebSocket с Chrome
Комплексное логирование и возможности аудита
🛠️ Разработка корпоративного уровня
Полный набор инструментов отладки с мониторингом консоли/сети
Встроенные аудиты доступности, SEO и производительности
Примеры интеграции CI/CD и рабочие процессы E2E-тестирования
Кроссплатформенная совместимость (Linux ARM64, macOS Apple Silicon)
💰 Доступная платформа для инноваций
Полная настройка разработки ИИ менее чем за $500
Те же возможности, что и у корпоративных рабочих станций стоимостью более $50 000
Глобальная доступность для мейкеров и стартапов по всему миру
Никаких регулярных облачных расходов — владейте своей инфраструктурой
🚀 Универсальный быстрый старт
Предварительные требования
# 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/touch, с поддержкой ландшафтного режима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- Остановка записи и кодирование в MP4, GIF или WebM через ffmpeg (автоматическое определение FPS по временным меткам кадров)screencast_status- Проверка статуса записи, количества кадров и прошедшей длительности
Инструменты аудита и анализа
run_accessibility_audit- Проверка alt-текста, меток, заголовков, контрастностиrun_performance_audit- Измерение времени загрузки, использования памяти, ресурсовrun_seo_audit- Проверка заголовка, мета-описания, тегов H1, канонических ссылокrun_best_practices_audit- Проверка HTTPS, устаревшего HTML, области просмотраrun_nextjs_audit- Специфические проверки оптимизации Next.jsrun_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 ограничен 15 кадрами в секунду для обеспечения разумных размеров файлов.
Эмуляция мобильных устройств
# 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 selectorОтладка протокола Chrome DevTools
# 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=9222Трассировка сообщений CDP
# 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Интеграция с инструментами разработчика браузера
# 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,1080Параметры запуска Chrome
// 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 platformСоображения по Windows 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с | ~150МБ | Оптимизировано, хорошо протестировано |
macOS Apple Silicon | ~2-3с | ~200МБ | Более быстрый процессор, больше памяти |
Windows ARM64 | Неизвестно | Неизвестно | Зависит от оборудования |
Требуется вклад
**Мы приветствуем вклад для полной кроссплатформенной
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