@mmerterden/multi-agent-toolkit-mcp
v3.1.0
Published
MCP server for iOS Simulator, Android Emulator and headless web control. 84 tools: device automation (tap/swipe/type), accessibility audits, visual diff, crash logs, App Store / Play Store pre-submission compliance. Runs standalone over stdio with any MCP
Maintainers
Keywords
Readme
@mmerterden/multi-agent-toolkit-mcp
🇬🇧 English: README.md
iOS Simulator, Android Emulator ve headless web kontrolü için 84 araç. AI kodlama asistanının mobil uygulamalarını görmesini, onlarla etkileşime girmesini ve denetlemesini sağlayan bir MCP sunucusu - ayrıca tarayıcıları sürer, 18-kurallık bir App Store uyumluluk denetimi çalıştırır ve çok-adımlı batch akışlarını orkestre eder.
Public npm registry üzerinden dağıtılır - npx @mmerterden/multi-agent-toolkit-mcp, auth'suz, token'sız, ~/.npmrc ayarı gerekmeden çözülür.
Claude Code, Copilot CLI ve Codex CLI üzerinde doğrulanmıştır - release kapılarının fiilen çalıştırdığı üç host. Standart bir stdio MCP sunucusu olduğu için Cursor, Antigravity, VS Code Copilot Chat, Claude Desktop ve diğer herhangi bir MCP client'ında da çalışır; bunlar için config parçacıkları aşağıda, ama burada hiçbir şey onları kontrol etmiyor.
Bu ayrımı net tutmakta fayda var. Bu satır bir zamanlar beş host'u "multi-agent-pipeline'ın tam-orkestrasyon hedefleri" olarak adlandırıyordu, bu da pipeline v10.7.0'da Cursor / Antigravity / Codex / Copilot Chat adaptörleri silindiğinde doğru olmaktan çıktı. Codex CLI, pipeline v13.0.0'da yetenek üzerinden birinci-sınıf bir hedef olarak geri döndü - artık skill'leri, paralel sub-agent'ları, hook'ları ve MCP'si var - ve doğrulanmış listede sadece bir kapı onu çalıştırdığı için yer alıyor, başka bir yerde desteklendiği için değil. Kimsenin çalıştırmadığı host'ları iddia etmek de bedavaya gelmiyor: 2.20.0 ve 2.21.0, ilk araçta yasa dışı bir outputSchema gönderdi, bu yüzden Claude Code tüm tools/list'i reddetti ve 78'in sıfırını sundu - birincil host'ta, iki release boyunca, bu repo'daki her kapı yeşilken.
7 kategori:
- Device Control (59 araç) - screenshot, tap, swipe, type, navigate, dark mode, locale, orientation, location, permissions, push notifications, gerçek start/stop ekran kaydı
- Crash Diagnostics (2 araç) -
ios_list_crasheshost'un DiagnosticReports dizinini okur,android_list_crashesadb crash buffer'ını döker, ikisi de tail-sınırlı - Accessibility Audit (2 araç) - eksik label'ları, küçük tap target'larını, eksik identifier'ları otomatik tespit et (scope filtreleme desteklenir)
- Store Compliance (5 araç) - App Store / Play Store hazırlığı; 18-kurallık derin
ios_app_store_audit, Apple ITMS hata kodları + App Store Review Guidelines'a çapraz referans verir (privacy manifest, required-reason API, Info.plist, code signing, entitlements, gömülü SDK, IPv6, debug-tool sızıntısı, ...) - Web Automation (8 araç) - Playwright-destekli: goto, click (CSS selector'lar), type, JS eval, selector bekleme, metin çıkarma, screenshot. Chromium / WebKit / Firefox motorları.
playwrightpeer dependency'si gerektirir. - Design Audit (6 araç) - mock-mode vs Figma uygunluğu: scenario envanteri, mock tespiti, mock launch, canlı UI geometrisi, piksel/geometri/tipografi karşılaştırması, ve coverage kapısıyla birlikte HTML/PDF rapor
- Autonomous Agent DSL (2 araç) -
agent_run_steps, tek bir MCP round trip'inde {tool, args, continue_on_error?, wait_ms?} adımlarından oluşan bir batch dizisini çalıştırır. Scriptlenmiş login akışları, form doldurma, çok-adımlı QA yolları için ideal.agent_query_output, satır içi dönemeyecek kadar büyük olan önceki bir çağrının tam çıktısını arar; böylece bir takip sorusu pahalı aracı yeniden koşturmak anlamına gelmez.
Hızlı Başlangıç
Seçenek A - Kaynaktan kur (önerilen, auth gerekmez)
En basit yol. ~/.npmrc'yi henüz yapılandırmasan bile çalışır.
git clone [email protected]:mmerterden/multi-agent-toolkit-mcp.git
cd multi-agent-toolkit-mcp
npm install
# Opsiyonel: web araçları Playwright gerektirir
npm i -g playwright && npx playwright install chromium
# 'multi-agent-toolkit-mcp' olarak global kullanılabilir yap
npm linkSonra klonun içinde git pull && npm install ile güncelle. İlgili tag'i checkout ederek belirli bir versiyona pinle (git tag -l ile listele).
Seçenek B - npx (kurulum gerekmez - public registry)
npx @mmerterden/multi-agent-toolkit-mcpKurulum (Seçenek A veya B'den sonra)
Claude Code / Claude Desktop
{
"mcpServers": {
"multi-agent-toolkit": {
"command": "npx",
"args": ["-y", "@mmerterden/multi-agent-toolkit-mcp"]
}
}
}Cursor
.cursor/mcp.json'a ekle:
{
"mcpServers": {
"multi-agent-toolkit": {
"command": "npx",
"args": ["-y", "@mmerterden/multi-agent-toolkit-mcp"]
}
}
}Antigravity
.agent/mcp_config.json'a (ya da global ~/.gemini/antigravity/mcp_config.json'a) ekle:
{
"mcpServers": {
"multi-agent-toolkit": {
"command": "npx",
"args": ["-y", "@mmerterden/multi-agent-toolkit-mcp"]
}
}
}Copilot CLI
~/.copilot/settings.json'a ekle:
{
"mcpServers": {
"multi-agent-toolkit": {
"command": "npx",
"args": ["-y", "@mmerterden/multi-agent-toolkit-mcp"]
}
}
}Codex CLI
Kendi config'ini Codex'in yazmasına izin ver - ~/.codex/config.toml'u o
sahiplenir (marketplace ve plugin durumu da orada yaşar), ve komut idempotent'tir:
codex mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp
codex mcp list # doğrula
codex doctor --json # checks["mcp.config"] "ok" okumalıReferans olarak, bu şunu üretir:
[mcp_servers.multi-agent-toolkit]
command = "npx"
args = ["-y", "@mmerterden/multi-agent-toolkit-mcp"]Multi-agent pipeline'ın install --codex'i codex mcp add adımını senin için çalıştırır.
Sorun Giderme
npx @mmerterden/multi-agent-toolkit-mcp 401/404 veriyor, ya da eski bir versiyonu çözüyor
Bu paket public npm registry'de - token gerekmez. Hâlâ başarısız oluyorsa,
en olası sebep bu paketin GitHub Packages'tan taşınmadan önceki bir kalıntı
scope override'ı: ~/.npmrc'de @mmerterden:registry=https://npm.pkg.github.com
gibi bir satır olup olmadığına bak. O satır her @mmerterden-scope'lu
install/publish'i (bu paket dahil) GitHub Packages'a yönlendirir, ki o da
public görünümlü bir paket adı için bile auth'suz bir okumaya 401 döner. O
satırı kaldır (ya da gerçekten GitHub Packages'a ihtiyacı olan @mmerterden
paketine scope'la) ve tekrar dene.
VS Code Copilot Chat
.vscode/mcp.json'a ekle:
{
"servers": {
"multi-agent-toolkit": {
"command": "npx",
"args": ["-y", "@mmerterden/multi-agent-toolkit-mcp"]
}
}
}Gereksinimler
- Node.js 18+
- iOS araçları: macOS + Xcode (
xcrun simctl'i sağlar) - Android araçları: Android SDK Platform-Tools (
adb'yi sağlar) - Web araçları (opsiyonel):
playwright- bir kere kur:
(ya danpm i -g playwright && npx playwright install chromiumwebkit/firefox- motoru herweb_gotoçağrısında seç.)
Xcode kurulu değilse, iOS araçları crash etmek yerine anlaşılır bir mesaj döner. Android ve Web araçları için de aynı - elindekini kullan.
Agent DSL Örneği
Tek bir MCP çağrısında scriptlenmiş bir login akışı çalıştır:
{
"tool": "agent_run_steps",
"args": {
"steps": [
{ "tool": "web_goto", "args": { "url": "https://example.com/login" } },
{ "tool": "web_type", "args": { "selector": "#email", "text": "[email protected]" } },
{ "tool": "web_type", "args": { "selector": "#password", "text": "s3cret" } },
{ "tool": "web_click", "args": { "selector": "button[type=submit]" }, "wait_ms": 1000 },
{ "tool": "web_wait_for", "args": { "selector": ".dashboard" } },
{ "tool": "web_screenshot", "args": { "full_page": true } }
]
}
}Agent'ın hata durumunda kendini düzeltebilmesi için adım-başına durum döner.
iOS Araçları (38)
| Araç | Açıklama |
|------|-------------|
| ios_list_devices | Mevcut tüm simulator'ları listele |
| ios_boot_device | Bir simulator'ı boot et |
| ios_screenshot | Screenshot yakala (base64 PNG) |
| ios_tap | Koordinatlara tap yap |
| ios_swipe | Swipe hareketi |
| ios_type_text | Odaklanmış alana metin yaz |
| ios_launch_app | Bundle ID ile uygulama başlat |
| ios_terminate_app | Uygulamayı sonlandır |
| ios_list_apps | Kurulu uygulamaları listele |
| ios_go_home | Home tuşuna bas |
| ios_set_appearance | Açık/koyu modu ayarla |
| ios_set_content_size | Dynamic Type boyutunu ayarla |
| ios_set_locale | Uygulama dilini değiştir |
| ios_open_url | URL veya deep link aç |
| ios_status_bar | Status bar'ı override et - preset'leri destekler (App Store screenshot'ları için clean 9:41/%100, testing, low-battery, airplane) artı manuel zaman/pil |
| ios_push_notification | Simüle edilmiş push gönder |
| ios_grant_permission | Gizlilik izni ver |
| ios_revoke_permission | İzni geri al |
| ios_reset_permissions | Tüm izinleri sıfırla |
| ios_set_location | Simüle edilmiş GPS ayarla |
| ios_clear_location | Konumu temizle |
| ios_set_increase_contrast | Increase Contrast'ı aç/kapat |
| ios_record_video | Ekran kaydı - action:"start" arka planda kaydeder, action:"stop" video dosyasını döner |
| ios_add_media | Fotoğraf kütüphanesine ekle |
| ios_keychain_reset | Keychain'i sıfırla |
| ios_get_app_container | Uygulama dosya yolunu al |
| ios_erase_device | Simulator'ı fabrika ayarlarına döndür |
| ios_get_ui_tree | Accessibility UI ağacı |
| ios_accessibility_audit | Otomatik denetim: eksik label'lar, küçük tap target'ları, eksik identifier'lar |
| ios_biometric | Face ID / Touch ID'yi simüle et (eşleşme veya başarısızlık) |
| ios_archive_audit | .xcarchive'ı App Store uyumluluğu için denetle (daha hafif, deprecated - ios_app_store_audit'i kullan) |
| ios_app_store_audit | .xcarchive üzerinde derin 18-kurallık App Store uyumluluk denetimi - privacy manifest, required-reason API, Info.plist, code signing, entitlements, gömülü SDK, IPv6, debug-tool sızıntısı, binary boyutu, ölü referanslar, duplicate kaynaklar, team ID, provisioning profile, Swift ABI, extension signing, asset doğrulama, production hijyeni, SDK tabanı (ITMS-90725) kapsar. Apple ITMS hata kodları + App Store Review Guidelines'a çapraz referans verir |
| ios_export_ipa | xcodebuild -exportArchive üzerinden bir .xcarchive'ı imzalı bir .ipa'ya export et. exportOptions.plist'i argümanlardan üretir (method varsayılan olarak app-store-connect). 0 ile çıkıp .ipa üretmeyen bir çalıştırma başarısızlık olarak raporlanır |
| ios_testflight_validate | Apple'ın kendi pre-submission doğrulaması, xcrun altool --validate-app üzerinden, dönen ITMS kodları ima ettikleri App Store kuralına eşlenmiş halde. Statik analizin yapısal olarak yakalayamayacağını yakalar: kayıtsız bundle ID, profile/app-record uyuşmazlığı, zaten kullanılmış bir version+build, App ID için provision edilmemiş entitlement'lar. 3-katmanlı auth (ASC API key → Apple ID + app-specific şifre keychain/env referansıyla → gerekçesiyle SKIPPED). SKIPPED bir pass değildir |
| ios_xcodebuild | Bir Xcode projesini build / test / clean / archive et. Tek satırlık özet + xcresult ID döner; tam log context dışında kalır |
| ios_xcresult | ID ile önceki bir build'e derinlemesine gir - modlar: summary, errors, warnings, log, tests. Token-verimli kademeli açığa çıkarma |
| ios_visual_diff | İki PNG screenshot'ı karşılaştır (pixelmatch). diff_pct, threshold'a karşı pass/fail, opsiyonel diff PNG döner. Açık/koyu mod, locale, dynamic type genelinde snapshot regresyonları için kullanışlı |
| ios_list_crashes | Host'un DiagnosticReports dizinindeki güncel crash raporlarını listele - süreç adına göre filtrele, yaş ve sayı ile sınırla |
Android Araçları (30)
| Araç | Açıklama |
|------|-------------|
| android_list_devices | Bağlı cihazları listele |
| android_screenshot | Screenshot yakala (base64 PNG) |
| android_tap | Koordinatlara tap yap |
| android_swipe | Swipe hareketi |
| android_type_text | Metin yaz |
| android_key_event | Tuş olayı gönder (HOME, BACK, ENTER) |
| android_launch_app | Package ile uygulama başlat |
| android_stop_app | Uygulamayı zorla durdur |
| android_list_packages | Kurulu package'ları listele |
| android_go_home | Home'a bas |
| android_go_back | Back'e bas |
| android_get_ui_tree | UI hiyerarşisi (uiautomator XML) - path ham dökümü dosyaya yazar, filter:"interactive" kompakt aksiyon-elemanı listesi döner |
| android_set_dark_mode | Koyu modu aç/kapat |
| android_set_font_scale | Font ölçeğini ayarla |
| android_set_locale | Locale'i değiştir |
| android_set_location | Sahte GPS konumu |
| android_grant_permission | Runtime izni ver |
| android_revoke_permission | İzni geri al |
| android_record_screen | Ekran kaydı - action:"start" arka planda kaydeder, action:"stop" videoyu cihazdan çeker |
| android_install_apk | APK kur |
| android_uninstall_app | Uygulamayı kaldır |
| android_logcat | Logları görüntüle |
| android_get_screen_size | Ekran çözünürlüğünü al |
| android_open_url | URL veya deep link aç |
| android_clear_app_data | Uygulama verisini temizle |
| android_accessibility_audit | Otomatik denetim: eksik contentDescription, küçük touch target'lar, eksik resource-id |
| android_launch_time | Soğuk başlangıç süresini ölç (ms) |
| android_apk_audit | APK'yı Play Store uyumluluğu için denetle |
| android_list_crashes | adb crash log buffer'ını dök, tail-sınırlı |
| android_set_orientation | Portrait/landscape'e döndür (user_rotation'ı sabitler, auto-rotate'i kapatır) |
Design Araçları (6)
Mock-mode vs Figma tasarım denetimi. Jenerik ve platform-bağımsız - ağır orkestrasyonun (Figma çekme, varyant eşleme, ekran navigasyonu, rapor derleme) çağıranda yaşaması beklenir; bunlar mekanik ilkel işlemleri açığa çıkarır.
| Araç | Açıklama |
|------|-------------|
| design_mock_detect | Bir projenin mock/stub modunu desteklediğini (true / false / debug-only) isimlendirme konvansiyonları, #if DEBUG DI, MockData fixture'ları ve bilinen runtime switch key'leri (genişletilebilir) üzerinden tespit et. Aktivasyon + varyant ipuçları + kanıt döner. |
| design_scenario_inventory | Mock build'in açığa çıkardığı her state sürücüsünü enumerate et - relaunch flag'leri, *Scenario / *Outcome enum case'leri, reference-prefix varyantları (ekran-başına mock repository'ler içindeki hasPrefix("F6DI") dalları, genelde en büyük grup), akış-geneli senaryo kodları, MockData fixture'ları, custom-scheme deep link'ler - her biri dosya+satır kanıtıyla. Her hedefi (relaunch vs in-app) fiyatlandırır ve bir çalıştırma planına gruplar, böylece bir relaunch o ekrandaki her in-app state'e hizmet eder. Bir denetime "UI'da bitmiş hissedene kadar gez" yerine sayılabilir bir hedef seti verir. |
| design_mock_launch | Kurulu bir uygulamayı mock modda başlat (iOS UserDefaults launch arg / Android intent extra). |
| design_ui_geometry | Piksel-seviyesi boşluk ölçümü için mevcut ekranın düz element bounding box'ları + ekran boyutu. |
| design_visual_compare | Bir Figma render'ını canlı bir screenshot ile boyut uyuşmazlığında başarısız olmadan karşılaştır: ölçeği normalize eder, chrome'u kırpar, algısal diff %'sini, boşluk/boyut/pozisyonu (px), rengi (ΔE) ve tipografiyi raporlar. figma/live/diff/overlay/side-by-side PNG'leri yazar. |
| design_report | Bir tasarım-denetim rapor nesnesini kendi kendine yeten HTML'e (base64 görseller, CSS-konumlandırılmış annotasyonlar) + opsiyonel PDF'e render et. Bir coverage kapısı zorlar: her hedef denetlenmeli ya da açık bir gerekçeyle atlanmalı, böylece kısmi bir denetim temiz bir rapor olarak render edilemez. Metin bir label pack'ten gelir (varsayılan İngilizce, Türkçe dahili olarak yerleşik). |
Kullanım Senaryoları
- Görsel bug avcılığı - Her ekranın screenshot'ını al, AI layout sorunları için analiz etsin
- Dark mode testi - Görünümü değiştir, screenshot al, karşılaştır
- Accessibility denetimi - Eksik label'ları, küçük tap target'ları otomatik tespit et (<44pt iOS / <48dp Android)
- Store uyumluluğu - Submission öncesi .xcarchive veya .apk'yı denetle (signing, debug araçları, privacy manifest)
- Biyometrik test - Face ID / Touch ID başarı ve başarısızlık akışlarını simüle et
- Performans - Android soğuk başlangıç süresini ölç (ms)
- Lokalizasyon testi - Locale'i değiştir, tüm ekranların screenshot'ını al
- App Store screenshot'ları - Temiz status bar + otomatik navigasyon
- Regresyon testi - Akışlarda tap'le gez, davranışı doğrula
Nasıl Çalışır
graph LR
subgraph "Sen"
PROMPT["Prompt"]
end
subgraph "AI Asistanı"
AI["Claude Code / Copilot CLI (doğrulanmış)\ndiğer herhangi bir MCP client"]
end
subgraph "multi-agent-toolkit-mcp"
MCP["MCP Sunucusu"]
IOS["iOS Araçları (37)\nxcrun simctl"]
AND["Android Araçları (28)\nadb"]
WEB["Web Araçları (8)\nPlaywright"]
DSL["Agent DSL (1)\nBatch runner"]
end
subgraph "Cihazlar"
SIM["📱 iOS Simulator"]
EMU["🤖 Android Emulator"]
BROWSER["🌐 Tarayıcı"]
end
PROMPT --> AI
AI -- "MCP Protokolü" --> MCP
MCP --> IOS --> SIM
MCP --> AND --> EMU
MCP --> WEB --> BROWSER
MCP --> DSL
SIM -- "screenshot / UI ağacı" --> AI
EMU -- "screenshot / UI ağacı" --> AI
BROWSER -- "screenshot / metin" --> AI
style MCP fill:#8b5cf6,color:#fff
style IOS fill:#3b82f6,color:#fff
style AND fill:#10b981,color:#fff
style WEB fill:#f59e0b,color:#fff- AI asistanın bir cihazla etkileşime girmesi gerektiğine karar verir
- MCP protokolü üzerinden
ios_screenshotveyaandroid_tapgibi bir araç çağırır - Bu sunucu çağrıyı alır ve native komutu çalıştırır (
xcrun simctlveyaadb) - Sonuç (screenshot, UI ağacı, aksiyon onayı) AI'a döner
- AI sonucu analiz eder ve sonraki aksiyona karar verir
Ne'yi sarmalıyor:
- iOS:
xcrun simctl(Xcode Command Line Tools'un bir parçası) - Android:
adb(Android SDK Platform-Tools'un bir parçası) - Web: Playwright (Chromium / WebKit / Firefox)
Ne YAPMIYOR:
- Kaynak koduna erişmiyor
- Herhangi bir sunucuya veri göndermiyor
- Bir hesap veya API key gerektirmiyor
- Proje dosyalarını değiştirmiyor
Her şey lokalde, kendi makinende çalışır.
Lisans
MIT
