MCP Hub
Back to servers

Specter MCP

A diagnostic and execution engine for Kotlin Multiplatform Mobile that allows AI agents to build, test, and debug Android and iOS apps via automated pipelines and UI interaction.

Stars
1
Tools
15
Updated
Dec 21, 2025

Specter MCP Logo

Specter MCP

KMM Diagnostic & Execution Engine
An MCP server providing "hands and eyes" for AI agents working with Kotlin Multiplatform Mobile projects.

npm version npm downloads license node version


What is Specter MCP?

Specter MCP enables AI agents (Claude, GPT, etc.) to build, test, debug, and interact with Android and iOS applications through the Model Context Protocol. Think of it as giving your AI assistant the ability to:

  • Build and deploy your mobile apps
  • Take screenshots and interact with UI elements
  • Run unit tests and E2E tests (Maestro)
  • Analyze crash logs and debug issues
  • Inspect app state (preferences, databases, logs)

Prerequisites

RequirementVersionVerify Command
Node.js20+node --version
Android SDKAnyadb --version
Xcode CLI (macOS)Anyxcrun --version
Maestro (optional)Anymaestro --version

Quick Setup

# Android SDK (if not installed via Android Studio)
export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"
export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"

# iOS (macOS only)
xcode-select --install
sudo xcodebuild -license accept

# Maestro (optional, for E2E testing)
curl -Ls "https://get.maestro.mobile.dev" | bash

Installation

Option 1: npm (Recommended)

npm install -g specter-mcp

Option 2: From Source

git clone https://github.com/abd3lraouf/specter-mcp.git
cd specter-mcp
npm install && npm run build

Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "specter-mcp": {
      "command": "specter-mcp"
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "specter-mcp": {
      "command": "specter-mcp"
    }
  }
}

With Environment Variables

{
  "mcpServers": {
    "specter-mcp": {
      "command": "specter-mcp",
      "env": {
        "SPECTER_DEBUG": "true",
        "ANDROID_SDK_ROOT": "/path/to/android/sdk"
      }
    }
  }
}

From Source

{
  "mcpServers": {
    "specter-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/specter-mcp/dist/index.js"]
    }
  }
}

Available Tools (15)

CategoryToolDescription
Buildbuild_appBuild Android/iOS app (debug/release)
install_appInstall APK or .app on device
launch_appLaunch installed app
UIget_ui_contextScreenshot + UI hierarchy
interact_with_uiTap, swipe, input text
Testingrun_unit_testsRun unit tests
run_maestro_flowRun Maestro E2E flows
run_linterDetekt, SwiftLint, ktlint
Environmentlist_devicesList emulators/simulators
manage_envBoot/shutdown devices
clean_projectClean build caches
Debuganalyze_crashParse crash logs, symbolicate
inspect_logsFilter device logs
inspect_app_stateRead prefs, databases
Navigationdeep_link_navigateOpen deep links

Usage Examples

Build & Deploy

You: Build my Android app in debug mode and install it

Claude: I'll build and deploy your app.
→ build_app(platform: "android", variant: "debug")
→ install_app(platform: "android", appPath: "...")
→ launch_app(platform: "android", appId: "com.example.app")

Debug a Crash

You: My iOS app crashed, help me debug it

Claude: Let me analyze the crash.
→ analyze_crash(platform: "ios", appId: "com.example.app")
→ inspect_logs(platform: "ios", minLevel: "error")

UI Testing

You: Take a screenshot and tap the login button

Claude: I'll capture the UI and interact with it.
→ get_ui_context(platform: "android")
→ interact_with_ui(platform: "android", action: "tap", element: "Login")

Run E2E Tests

You: Run my login flow test on both platforms

Claude: Running Maestro flows.
→ run_maestro_flow(platform: "android", flowPath: "./maestro/login.yaml")
→ run_maestro_flow(platform: "ios", flowPath: "./maestro/login.yaml")

Environment Variables

VariableDefaultDescription
SPECTER_DEBUGfalseEnable debug logging
SPECTER_LOG_LEVELinfoLog level (error/warn/info/debug)
SPECTER_TIMEOUT60000Default timeout (ms)
ANDROID_SDK_ROOTautoAndroid SDK path
SPECTER_ANDROID_DEVICE-Default Android device
SPECTER_IOS_DEVICEbootedDefault iOS simulator

Troubleshooting

"adb: command not found"

export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"

"No devices found"

# Android: Start emulator
emulator -avd Pixel_6_API_34

# iOS: Boot simulator
xcrun simctl boot "iPhone 15 Pro"

"xcrun: error: unable to find utility"

xcode-select --install

Debug Mode

{
  "env": {
    "SPECTER_DEBUG": "true",
    "SPECTER_LOG_LEVEL": "debug"
  }
}

Project Structure

src/
├── index.ts              # MCP server entry
├── config.ts             # Configuration
├── platforms/            # Android/iOS utilities
│   ├── android/          # ADB, Gradle, logcat
│   └── ios/              # simctl, xcodebuild, crash parsing
├── tools/                # MCP tool implementations
│   ├── build/            # build_app, install_app, launch_app
│   ├── ui/               # get_ui_context, interact_with_ui
│   ├── testing/          # run_unit_tests, run_maestro_flow, run_linter
│   ├── environment/      # list_devices, manage_env, clean_project
│   ├── crash/            # analyze_crash
│   ├── navigation/       # deep_link_navigate
│   └── observability/    # inspect_logs, inspect_app_state
└── utils/                # Shell, image processing, XML parsing

Development

npm install          # Install dependencies
npm run build        # Build TypeScript
npm test             # Run tests (695 tests)
npm run test:coverage # Coverage report
npm run lint         # ESLint
npm run typecheck    # Type check

Documentation

License

MIT © Specter MCP Contributors

Reviews

No reviews yet

Sign in to write a review