MCP server that connects LLMs with Flipper Desktop for real-time Android debugging
19 tools with mixed quality. Naming is generally strong and action-oriented (get_, list_, clear_, send_, etc.), but parameter descriptions are inconsistent. Many tools lack documented output schemas. Error handling guidance is minimal. Most tool descriptions are present but brief. Parameter types are defined but some lack detailed format constraints. No evidence of tool annotations (readOnlyHint/destructiveHint), despite many tools having clear risk profiles (WRITE, DESTRUCTIVE, READ_ONLY marked but not formalized in schema).
Limpia el buffer local de logs.
Añade o actualiza un mock de red en la app Android conectada a Flipper. Funciona tanto para peticiones REST (plugin 'Network') como GraphQL (plugin 'Network GraphQL'). Si se indica 'operation', el mock se envía al plugin GraphQL; si se deja vacío, al plugin REST. Usa flipper_list_mocks para ver los mocks activos.
Limpia el buffer local de crash reports.
Clears the local buffer of captured memory leaks.
Elimina todos los mocks activos (REST y GraphQL) y restaura el comportamiento de red real en la app Android.
Gets the schema (columns, types, indexes) for a specific table.
Missing output schemas for 15/19 tools. No documentation of what fields are returned, types, or structure. LLMs cannot reason about downstream field access or plan follow-up calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk labels in spec (READ_ONLY, WRITE, DESTRUCTIVE). Risk information is not machine-parseable; LLM cannot infer side effects from schema alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 54 | - | v1 |
Gets paginated data from a specific table. Useful for browsing table contents without writing SQL.
Lists all SQLite/Room databases and their tables in the connected Android app.
Executes a SQL query against a database in the connected Android app. Supports SELECT, INSERT, UPDATE, DELETE. Use flipper_database_list first to find database IDs.
Obtiene los últimos eventos de analytics (GA, AppsFlyer) capturados por Flipper.
Obtiene los crash reports capturados del dispositivo Android conectado a Flipper.
Gets memory leak reports from LeakCanary captured by Flipper. Shows leak traces with retained objects, reference chains, and retained sizes.
Lists all app clients connected to Flipper. Shows the client ID, app name, device, OS, and SDK version for each connected app.
Lists all devices connected to Flipper with their details. Shows serial number, device name, OS, type (physical/emulator), and connection status.
Lista todos los mocks de red activos actualmente en la app Android (REST y GraphQL).
Navigates to a deep link URI on the connected Android device. Executes 'am start' with the given URI. Useful for opening specific screens, testing deep links, and reproducing navigation flows.
Elimina un mock activo de la app Android (REST o GraphQL). Usa flipper_list_mocks para ver los mocks activos y sus parámetros exactos.
Envía notificaciones push FCM v1 a un dispositivo (formato Salesforce MobilePush). Requiere Service Account JSON.
Obtiene los últimos logs de la aplicación Android desde Flipper.
Parameter 'service_account_json' in flipper_send_fcm accepts credentials as plaintext string. Secrets must never be tool parameters, use server-side injection via environment variables or vault. This param appears in logs and agent traces.
Database tools (flipper_database_query, flipper_add_mock, flipper_remove_mock) lack error guidance. If SQL is invalid or mock URL does not match, no recovery hint provided. LLM cannot self-correct.
Destructive tools (flipper_remove_mock, flipper_clear_mocks, flipper_clear_logs, flipper_clear_crashes, flipper_clear_leaks) have no confirmation step or dry-run mode. Agents can delete data without safeguards.
flipper_send_fcm, flipper_add_mock, flipper_database_query descriptions are brief (70 chars) and lack WHEN/WHY context. No dependency hints or prerequisites. LLM reasoning for tool selection is weak.
Parameter 'filter_tag' in get_android_logs is optional but no guidance on behavior when omitted. Does it return all tags or none? Similarly, 'operation' in flipper_add_mock is optional with default ''; behavior differs (REST vs GraphQL) but not clearly documented.
flipper_add_mock 'headers' parameter is array of objects but no schema for object structure or validation. LLM cannot infer correct format.