Debugg AI
resmiKod üretme aracılarınızın, Debugg AI test platformu aracılığıyla uzak tarayıcılardaki yeni kod değişikliklerine karşı sıfır yapılandırmalı uçtan uca testler oluşturmasını ve çalıştırmasını sağlayın.
Debugg AI MCP ile neler yapabilirsiniz?
- Herhangi bir URL'ye karşı bir AI tarayıcı aracısı çalıştırın — ne test edileceğini doğal dilde tanımlayın ve
check_app_in_browsergezinir, etkileşime girer ve ekran görüntüleriyle birlikte geçti/kaldı sonucunu döndürür. - LLM maliyeti olmadan birden fazla sayfayı inceleyin — tek bir toplu işlemde hızlı ekran görüntüleri, konsol hataları ve ağ özetleri için
probe_page'e en fazla 20 URL gönderin. - Bir bilgi grafiği taraması tetikleyin — uygulamanızı keşfetmesi ve projenin bilgi grafiğini doldurması için bir AI aracısına
trigger_crawlkullanın. - Test paketlerini ve durumlarını yönetin —
test_suitearacılığıyla test paketleri oluşturun, listeleyin, çalıştırın ve sonuçlarını kontrol edin; ayrıcatest_caseile bireysel durumları tanımlayın. - Yürütme yapıtlarını inceleyin — hataları ayıklamak için
executionsaracılığıyla tam yürütme ayrıntılarını, ekran görüntülerini, HAR izlerini ve konsol günlüklerini alın. - Projeleri, ortamları ve yürütmeleri kaynak olarak tarayın — araçları çağırmadan bağlam için varlıklara doğrudan
debugg-ai://URI'leri aracılığıyla başvurun.
Dokümantasyon
Debugg AI — MCP Sunucusu
Model Context Protocol üzerinden yapay zeka destekli tarayıcı testi. Herhangi bir URL'ye (veya localhost'a) yönlendirin ve neyi test edeceğinizi tanımlayın — bir yapay zeka ajanı uygulamanızda gezinir ve ekran görüntüleriyle birlikte başarılı/başarısız sonucunu döndürür.
Kurulum
Node.js 20.20.0 veya üstü gerektirir (posthog-node@^5.26.0 kaynaklı geçişli gereksinim).
debugg.ai adresinden bir API anahtarı alın, ardından MCP istemci yapılandırmanıza ekleyin:
{
"mcpServers": {
"debugg-ai": {
"command": "npx",
"args": ["-y", "@debugg-ai/debugg-ai-mcp"],
"env": {
"DEBUGGAI_API_KEY": "your_api_key_here"
}
}
}
}
Veya Docker ile:
docker run -i --rm --init -e DEBUGGAI_API_KEY=your_api_key quinnosha/debugg-ai-mcp
Araçlar
Sunucu 8 araç sunar: üç Tarayıcı aracı ve yönetilen her varlık için bir eylem tabanlı araç. Başlıca araçlar check_app_in_browser (tam yapay zeka ajanı) ve probe_page (hafif, LLM içermeyen sayfa sondası). Geri kalanlar — project, environment, test_suite, test_case, executions — her biri işlemi seçen bir action ayırtıcı (örn. {"action":"list"}) alır. Yıkıcı delete eylemleri onay gerektirir (destekleniyorsa bir uyarı istemi, aksi takdirde confirm: true).
Tarayıcı
check_app_in_browser
Uygulamanıza karşı bir yapay zeka tarayıcı ajanı çalıştırır. Ajan gezinir, etkileşime girer ve ekran görüntüleriyle rapor verir. Localhost URL'leri ngrok aracılığıyla otomatik olarak tünellenir.
| Parametre | Tür | Açıklama |
|---|---|---|
description | string gerekli | Ne test edilecek (doğal dil) |
url | string gerekli | Hedef URL — http://localhost:3000 otomatik tünellenir |
environmentId | string | Belirli bir ortamın UUID'si |
credentialId | string | Belirli bir kimlik bilgisinin UUID'si |
credentialRole | string | Role göre bir kimlik bilgisi seç (örn. admin, guest) |
username | string | Giriş için kullanıcı adı (geçici — kalıcı değil) |
password | string | Giriş için parola (geçici — kalıcı değil) |
repoName | string | Otomatik algılanan git repo adını geçersiz kıl (örn. my-org/my-repo) |
Çağrı başına bir odaklanmış kontrol. Ajanın ~25 adımlık dahili bütçesi vardır; daha geniş suitleri birden çok çağrıya bölün.
Her başarılı çalıştırma, ekran görüntüsüyle birlikte bir browserSession bloğu döndürür — yakalanan HAR (tam ağ izi) ve konsol günlüğü (her JS konsol mesajı) için önceden imzalanmış S3 URL'leri. Bunları, tür denetimlerini ve birim testlerini geçen yeniden getirme döngüleri, hidrasyon hataları ve diğer çalışma zamanı sorunlarını tespit etmek için kullanın:
"browserSession": {
"harUrl": "https://...session_18139.har?X-Amz-...",
"consoleLogUrl": "https://...session_18139_console.json?X-Amz-...",
"recordingUrl": "https://...session_18139_recording.webm?X-Amz-...",
"harStatus": "downloaded",
"consoleLogStatus": "downloaded",
"harRedactionStatus": "redacted",
"consoleLogRedactionStatus": "redacted"
}
URL'ler kısa ömürlü önceden imzalanmış S3'tür — yenilemek için executions {action:"get", uuid} aracılığıyla üst yürütmeyi yeniden getirin. harStatus / consoleLogStatus, 'downloaded' (URL getirilebilir), 'not_available' (sayfa hiçbir şey yaymadı), 'failed' (yakalama bozuldu) durumlarını ayırt eder. Yeni bir çalıştırmada URL'ler genellikle null olur çünkü yakalama, ajan tamamlandıktan sonra eşzamansız olarak yüklenir — durum 'downloaded' değerine ulaşana kadar executions {action:"get", uuid: executionId}'i yoklayın. Yetkilendirme / Çerez / token/secret/api_key başlıkları, yapıtlar kalıcı hale getirilmeden önce sunucu tarafında temizlenir.
trigger_crawl
Projenin bilgi grafiğini doldurmak için sunucu tarafı bir tarayıcı-ajan taraması başlatır. Localhost URL'leri otomatik olarak tünellenir. Başarılı alımda knowledgeGraph.imported === true ile birlikte {executionId, status, targetUrl, durationMs, outcome?, crawlSummary?, knowledgeGraph?, browserSession?} döndürür. browserSession bloğu (yukarıdakiyle aynı şekle sahip HAR + konsol günlüğü URL'leri) tamamlanan taramalarda da bulunur.
probe_page
Hafif, LLM içermeyen toplu sayfa sondası. 1-20 URL iletin; her biri gezinir, yüklenmeyi bekler ve işlenmiş durumu döndürür — ekran görüntüsü + sayfa meta verileri + yapılandırılmış konsol hataları + ağ özeti. Ajan döngüsü yok, LLM maliyeti yok, senaryo doğrulamaları yok. "/settings'i bozdum mu?", yeniden düzenleme sonrası çoklu rota duman testi, CI PR başına taramalar ve check_app_in_browser'in 60-150 saniyelik ajan döngüsünün aşırı olduğu hızlı çalışıyor mu kontrolleri için kullanın.
| Parametre | Tür | Açıklama |
|---|---|---|
targets | array gerekli | 1-20 giriş: [{url, waitForSelector?, waitForLoadState?, timeoutMs?}] |
targets[].url | string gerekli | Genel URL veya localhost (otomatik tünellenir) |
targets[].waitForLoadState | enum | 'load' (varsayılan) / 'domcontentloaded' / 'networkidle' |
targets[].waitForSelector | string | Gezinmeden sonra beklemek için isteğe bağlı CSS seçici |
targets[].timeoutMs | number | URL başına zaman aşımı, 1000-30000 (varsayılan 10000) |
includeHtml | boolean | Her sonuçta ham HTML döndür (varsayılan false) |
captureScreenshots | boolean | Hedef başına bir PNG döndür (varsayılan true) |
Tüm toplu iş, tek bir arka uç yürütmesi + tarayıcı oturumu + tünel paylaşır — tek bir çağrıda 5 URL, 5 paralel tek URL çağrısından önemli ölçüde daha hızlıdır. URL başına error alanı toplu iş dayanıklılığını korur: tek bir başarısız hedef diğerlerini etkilemez.
networkSummary toplama anahtarı origin + pathname'dir — yeniden getirme döngüleri (?n=0..4 aynı uç noktaya tekrar tekrar isabet eder) sayıyla birlikte tek bir girişe daraltılır, böylece /api/poll'ün count: 47 ile görünmesi, kullanıcıların başlangıçta istediği eyleme dönüştürülebilir "sonsuz yeniden getirme döngüsü" sinyalidir.
Performans bütçesi: 1 URL için <10s, 20 URL için <25s. Localhost ölü bağlantı noktası, bir iş akışı yürütmesi harcamadan <2s içinde LocalServerUnreachable döndürür.
project
| Eylem | Parametreler | Sonuç |
|---|---|---|
get | {uuid} | Düzenlenmiş proje detayı |
list | {q?, page?, pageSize?} | Sayfalandırılmış özetler |
create | {name, platform, (teamUuid|teamName), (repoUuid|repoName)} | Oluşturulan proje |
Takım ve repo, uuid veya isim (büyük/küçük harfe duyarlı tam eşleşme; hiçbiri yoksa NotFound, birden fazla varsa AmbiguousMatch) ile çözümlenir. update/delete yoktur — DebuggAI web uygulamasından bir projeyi yeniden adlandırın veya silin.
environment
| Eylem | Parametreler | Sonuç |
|---|---|---|
get | {uuid, projectUuid?} | Kimlik bilgileri satır içi olan ortam (parolalar asla döndürülmez) |
list | {projectUuid?, q?, page?, pageSize?} | Sayfalandırılmış ortamlar, her biri bir kimlik bilgisi dizisiyle |
create | {name, url, description?, projectUuid?, credentials?} | Oluşturulan ortam (isteğe bağlı olarak kimlik bilgilerini tohumlar) |
update | {uuid, name?, url?, description?, addCredentials?, updateCredentials?, removeCredentialIds?} | Yamalanmış ortam; kimlik bilgisi işlemleri kaldır → güncelle → ekle sırasıyla çalışır |
delete | {uuid, projectUuid?, confirm?} | Ortamı siler (kimlik bilgilerini basamaklandırır) — onay gerektirir |
projectUuid atlandığında git reposundan otomatik olarak çözümlenir. Kimlik bilgisi başına hatalar, ortam işlemini engellemeden credentialWarnings[] içinde yüzeye çıkar.
test_suite
| Eylem | Parametreler | Sonuç |
|---|---|---|
list | {projectUuid|projectName, search?, page?, pageSize?} | Durum + başarı oranıyla sayfalandırılmış suitler |
create | {name, description, projectUuid|projectName} | Oluşturulan suit |
run | {suiteUuid|(suiteName+project), targetUrl?} | Tüm testleri eşzamansız olarak tetikler |
results | {suiteUuid|(suiteName+project)} | Suit + test başına sonuçlar |
delete | {suiteUuid|(suiteName+project), confirm?} | Geçici silme — onay gerektirir |
test_case
| Eylem | Parametreler | Sonuç |
|---|---|---|
create | {name, description, agentTaskDescription, suiteUuid|(suiteName+project), relativeUrl?, maxSteps?} | Oluşturulan test senaryosu (otomatik çalıştırılmaz) |
update | {testUuid, name?, description?, agentTaskDescription?} | Yamalanmış test senaryosu |
delete | {testUuid, confirm?} | Geçici silme — onay gerektirir |
executions
| Eylem | Parametreler | Sonuç |
|---|---|---|
get | {uuid} | Tam detay (nodeExecutions + durum + hataBilgisi) + ekran görüntüsü/gif yapıtları |
list | {status?, projectUuid?, page?, pageSize?} | Sayfalandırılmış özetler |
Arka uçtan gelen 404, {error: 'NotFound', message, uuid} ile birlikte isError: true olarak yüzeye çıkar. Kimlik bilgileri her zaman parolalar olmadan döndürülür.
Sayfalandırma
Her filtre modu yanıtı sayfalandırılmıştır. Yanıt şekli:
{
"filter": { "...echoed query params..." },
"pageInfo": { "page": 1, "pageSize": 20, "totalCount": 47, "totalPages": 3, "hasMore": true },
"<items>": [ ... ]
}
İsteğe bağlı page (1 indeksli, varsayılan 1) ve pageSize (varsayılan 20, maksimum 200; aşırı büyük değerler sınırlandırılır) iletin. Hiçbir yanıt asla sessizce kesilmez.
Kaynaklar
Araçların yanı sıra, sunucu salt okunur varlıkları MCP kaynakları olarak sunar, böylece istemciler bunlara göz atabilir ve bağlam olarak @-bahsedebilir:
| URI | Ne |
|---|---|
debugg-ai://projects | Tüm projeler (ilk sayfa) |
debugg-ai://environments | Otomatik algılanan proje için ortamlar |
debugg-ai://executions | Son yürütmeler (ilk sayfa) |
debugg-ai://project/{uuid} | Bir proje, tam detay |
debugg-ai://environment/{uuid} | Bir ortam (kimlik bilgileri satır içi, parolalar sansürlü) |
debugg-ai://execution/{uuid} | Bir yürütme, tam düğüm detayı + yapıt bağlantıları |
Okumalar, project / environment /
executions araçlarıyla aynı işleyicilere gönderilir, bu nedenle veri ve yetkilendirme aynıdır. Kaynaklar eklemelidir —
kaynak desteği olmayan istemciler araçları kullanmaya devam eder.
Güvenlik değişmezleri
- Parolalar yalnızca yazılabilir. Hiçbir araçtan gelen yanıt gövdesinde asla görünmezler.
- Tünel URL'leri (
*.ngrok.debugg.ai), ajan tarafından yazılan metin de dahil olmak üzere tüm tarayıcı-ajan yanıtlarından çıkarılır. - Arka uçtan gelen 404'ler,
{error: 'NotFound', ...}ile birlikteisError: trueolarak yüzeye çıkar, asla fırlatılan istisnalar olarak değil. - Eksik
DEBUGGAI_API_KEY, ilk çağrıda yapılandırılmış bir araç hatası olarak yüzeye çıkar — sunucu yine de araçları normal şekilde kaydeder ve listeler.
v3.0.0'a Geçiş (eylem tabanlı araçlar)
v3, fiil başına 20 aracı 8 eylem tabanlı araçta birleştirdi. Eski araç → yeni tool {action}:
| Kaldırılan | Yerine Geçen |
|---|---|
search_projects | project {action:"get"} / project {action:"list"} |
create_project | project {action:"create"} |
update_project, delete_project | Kaldırıldı — DebuggAI web uygulamasını kullanın |
search_environments | environment {action:"get"} / {action:"list"} |
create_environment / update_environment / delete_environment | environment {action:"create"|"update"|"delete"} |
create_test_suite / search_test_suites / run_test_suite / get_test_suite_results / delete_test_suite | test_suite {action:"create"|"list"|"run"|"results"|"delete"} |
create_test_case / update_test_case / delete_test_case | test_case {action:"create"|"update"|"delete"} |
search_executions | executions {action:"get"|"list"} |
trigger_crawl headless paramı | Kaldırıldı — her zaman başsız |
delete eylemleri artık onay gerektirir (uyarı istemi veya confirm: true). İstemciler, MCP yeniden başlatıldığında yeni yüzeyi alır.
v1.x'ten Geçiş (v2.0.0'da kırıcı değişiklik)
v2, 22 araçlık bir yüzeyi 11'e indirdi. Eski araç → yeni araç eşlemesi:
| Kaldırılan | Yerine Geçen |
|---|---|
list_projects, get_project | search_projects (uuid modu vs filtre modu) |
list_environments, get_environment | search_environments |
list_credentials, get_credential | search_environments — her ortamda satır içi kimlik bilgileri |
create_credential | create_environment({credentials: [...]}) tohumu veya update_environment({addCredentials: [...]}) |
update_credential | update_environment({updateCredentials: [{uuid, ...patch}]}) |
delete_credential | update_environment({removeCredentialIds: [uuid]}) |
list_teams, list_repos | create_project({teamName, repoName}) — belirsizlik işleme ile isim çözümleme |
list_executions, get_execution | search_executions |
cancel_execution | Kaldırıldı — arka uç kapanması otomatiktir |
Yanıt şekli değişiklikleri: liste yanıtlarındaki yalın count alanı kaldırıldı — pageInfo.totalCount kullanın.
Yapılandırma
| Ortam değişkeni | Gerekli | Amaç |
|---|---|---|
DEBUGGAI_API_KEY | evet | Arka uç API anahtarı. Takma adlar: DEBUGGAI_API_TOKEN, DEBUGGAI_JWT_TOKEN. |
DEBUGGAI_API_URL | hayır | Arka uç temel URL'si. Varsayılan: https://api.debugg.ai. |
DEBUGGAI_TOKEN_TYPE | hayır | token (varsayılan) veya bearer. |
LOG_LEVEL | hayır | error / warn / info (varsayılan) / debug. |
POSTHOG_API_KEY | hayır | Gömülü telemetri proje anahtarını geçersiz kıl (örn. özel çatal). |
DEBUGGAI_TELEMETRY_DISABLED | hayır | Telemetriyi tamamen devre dışı bırakmak için 1 / true / yes / on olarak ayarlayın. |
DEBUGGAI_API_KEY=your_api_key
Uzak / HTTP aktarımı (isteğe bağlı)
Varsayılan olarak sunucu stdio (yerel npx) konuşur. Bunun yerine,
durumsuz Streamable HTTP + OAuth üzerinden barındırılan, çok kullanıcılı bir uzak MCP olarak çalışabilir:
DEBUGGAI_MCP_TRANSPORT=http PORT=3000 DEBUGGAI_TOKEN_TYPE=bearer npx -y @debugg-ai/debugg-ai-mcp@latest
Bu bir OAuth Kaynak Sunucusudur: her POST /mcp,
Authorization: Bearer <token> gerektirir; eksik/geçersiz token'lar, RFC 9728 meta verisine işaret eden bir
WWW-Authenticate ile birlikte 401 alır ve istemciler, tanıtılan yetkilendirme sunucusuna karşı OAuth
akışını çalıştırır. Taşıyıcı, istek kapsamındadır —
api.debugg.ai bunu doğrular.
| Uç Nokta | Amaç |
|---|---|
POST /mcp | MCP Akışkan HTTP (taşıyıcı korumalı) |
GET /.well-known/oauth-protected-resource | RFC 9728 meta verisi (yetkilendirme sunucusu keşfi) |
GET /health | Yük dengeleyici / ECS sağlık kontrolü |
| Ortam değişkeni | Varsayılan | Amaç |
|---|---|---|
DEBUGGAI_MCP_TRANSPORT | stdio | Uzak aktarım için http olarak ayarlayın |
PORT | 3000 | HTTP dinleme portu |
DEBUGGAI_MCP_PUBLIC_URL | https://mcp.debugg.ai | Bu sunucunun genel kaynak URL'si (RFC 9728 resource) |
DEBUGGAI_OAUTH_ISSUER | https://auth.debugg.ai | İstemcilere tanıtılan yetkilendirme sunucusu |
DEBUGGAI_TOKEN_TYPE | token | OAuth token'larının Authorization: Bearer olarak iletilmesi için bearer olarak ayarlayın |
stdio kurulumlarında bunların hiçbirine gerek yoktur.
Telemetri
MCP sunucusu, varsayılan olarak etkin telemetri ile gelir — gömülü, salt yazılır bir PostHog proje anahtarı (phc_*) sayesinde ekip, önbellek isabet oranlarını, yoklama sıklığını, tünel güvenilirliğini ve kurulum tabanındaki diğer operasyonel metrikleri gözlemleyebilir. Yakalanan olaylar:
| Olay | Ne zaman |
|---|---|
tool.executed / tool.failed | Araç çağrısı başına |
workflow.executed | Tarayıcı ajanı yürütmesi başına (pollCount, durationMs, finalIntervalMs taşır) |
tunnel.provisioned / tunnel.provision_retry / tunnel.stopped | Tünel yaşam döngüsü olayı başına |
template.lookup / project.lookup | Soğuk çağrıda durationMs ile önbellek isabet/ıska |
Gizlilik duruşu:
- Ayırt edici kimlik
SHA-256(api_key).slice(0, 16)şeklindedir — asla ham anahtar değil, PII içermez. phc_*anahtarları PostHog kuralı gereği salt yazılırdır; kaynağa gömmek güvenlidir.- Tamamen devre dışı bırakmak için
DEBUGGAI_TELEMETRY_DISABLED=1ayarlayın (işlemsiz bir sağlayıcıya çözümlenir; süreçten hiçbir olay çıkmaz).
Aktif mod başlangıçta günlüğe kaydedilir:
Telemetry enabled (PostHog, DebuggAI default project). Set DEBUGGAI_TELEMETRY_DISABLED=1 to opt out.
Telemetry enabled (PostHog, custom POSTHOG_API_KEY)
Telemetry disabled (DEBUGGAI_TELEMETRY_DISABLED is set)
Yerel Geliştirme
npm install
npm run build
npm run test:e2e # real end-to-end evals against the backend
Değerlendirme paketi, derlenmiş MCP sunucusunu bir alt süreç olarak başlatır, her aracı gerçek bir arka uca karşı çalıştırır ve akış başına yapıtları scripts/evals/artifacts/<timestamp>/ dizinine yazar. Bireysel senaryolar için scripts/evals/flows/ dosyasına bakın.
MCP kaydı: debugg-ai-local ve debugg-ai
Bu repo, proje kapsamlı debugg-ai-local adlı bir sunucuyu node dist/index.js adresine — yeni derlenmiş yerel koda — işaret edecek şekilde kaydeden bir .mcp.json dosyasıyla gelir. Yalnızca Claude Code'un çalışma dizini bu repo olduğunda etkinleşir.
Diğer projeleriniz, yayımlanmış npm paketinden çeken kullanıcı kapsamlı debugg-ai kaydını kullanmalıdır:
npm run mcp:global # registers debugg-ai in ~/.claude.json to npx -y @debugg-ai/debugg-ai-mcp
Burada kod düzenledikten sonra, debugg-ai-local aracının bir sonraki çağrılışında değişikliklerinizi alması için npm run mcp:local komutunu çalıştırın (yalnızca yeniden derler).
Bağlantılar
Panel · Dokümanlar · Sorunlar · Discord
Apache-2.0 Lisansı © 2025 DebuggAI