Specter MCP

Specter MCP
Specter MCP

The Copy-Paste Problem

We've all been there with AI-assisted mobile development:

Me: Here's the crash log.
AI: Can you show me the UI hierarchy?
Me: *copies XML* Here you go.
AI: What about the logs around that time?
Me: *scrolls through logcat* Here's what I found...
AI: Can you run that test again?
Me: *runs test, copies output* ...

Back and forth. Context lost. Time wasted.

The AI is essentially blind - working from your descriptions of what's happening rather than seeing it directly. It's like pair programming with someone who can only hear about your screen through a phone call.

What If AI Could Actually See?

Specter MCP gives AI agents direct access to your mobile emulators and simulators. Not descriptions of what's happening. The actual thing.

When you're debugging a crash, Claude can pull the logs, analyze the stack trace, check the UI state, and suggest fixes - all without you copying a single line. It becomes a true pair programming partner, looking at the same screen you are.

What This Looks Like in Practice

Build & Deploy

# AI can build and deploy your app directly
specter build android --variant debug
specter install android --package com.example.app
specter launch android --package com.example.app

UI Analysis

The AI captures screenshots with full UI hierarchies, understanding not just what's visible but the entire view structure:

📱 Capturing UI state...
├── MaterialToolbar (id: toolbar)
│   └── TextView "My App"
├── RecyclerView (id: items_list)
│   ├── ItemView [0] - "First Item"
│   ├── ItemView [1] - "Second Item"  ← Accessibility issue detected
│   └── ItemView [2] - "Third Item"
└── FloatingActionButton (id: fab)

E2E Testing

Run Maestro flows and get detailed results:

# AI can execute and analyze test results
- tapOn: "Login"
- inputText: "test@example.com"
- tapOn: "Submit"
- assertVisible: "Welcome!"

Crash Analysis

Pattern detection identifies common crash types and suggests fixes:

🐛 Crash Analysis:
Type: NullPointerException
Location: UserRepository.kt:42
Pattern: Nullable receiver called without null check
Suggestion: Add safe call operator or null check before accessing user.profile

The 15 Tools at Your AI's Disposal

Specter provides a comprehensive toolkit organized into six categories:

Category Tools
Build Compile debug/release, install APK/IPA, launch apps
UI Screenshots, UI hierarchy, gestures (tap, swipe, type)
Testing Unit tests, Maestro E2E, linting (Detekt, SwiftLint)
Environment List/boot/shutdown emulators and simulators
Debugging Parse crash logs, filter logcat, read app state
Navigation Open apps via deep links

Quick Start

Requirements

Installation

npm install -g specter-mcp

Configure Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "specter": {
      "command": "npx",
      "args": ["-y", "specter-mcp"]
    }
  }
}

Configure Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "specter": {
      "command": "npx",
      "args": ["-y", "specter-mcp"],
      "env": {
        "ANDROID_SDK_ROOT": "/path/to/android/sdk"
      }
    }
  }
}

The Shift

The change is subtle but significant.

Your AI assistant stops being someone you describe problems to. It becomes someone who can see the problem alongside you.

Pair programming where both of you are looking at the same screen.

Platform Support

Technical Architecture

Built with TypeScript and designed for reliability:

Resources