# bilieebiliee1-design/somcp architecture

> Architecture diagram of the GitHub repository bilieebiliee1-design/somcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bilieebiliee1-design/somcp
- Repository: https://github.com/bilieebiliee1-design/somcp

## Overview

SOMCP is an Android-hosted local shared-object reverse-engineering MCP server. A client sends Streamable HTTP tool requests to the foreground-hosted server; tools open SOs and perform ELF/Rizin analysis, optional dynamic or Flutter analysis, edit sessions, and build/export. The Android UI manages service and settings, while optional AI, tunnel, and APK-bridge capabilities extend the product. The graph follows documented capabilities and sampled references; some implementation wiring is unsampled, so those connections are omitted or marked unverified.

Main entry points: [`app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt) (Engine runtime), [`app/src/main/java/com/soreverse/mcp/mcp/ToolCatalog.kt`](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/mcp/ToolCatalog.kt) (Tool catalog), [`app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt) (Foreground service), [`app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt`](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt) (Dynamic analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_ui["Android UI<br/>[MainActivity.kt]"]
  node_settings[("Settings store<br/>[SettingsStore.kt]")]
  node_service["Foreground service"]
end

subgraph group_mcp["MCP access"]
  node_server["MCP HTTP server<br/>[McpHttpServer.kt]"]
  node_tools["Tool catalog<br/>[ToolCatalog.kt]"]
end

subgraph group_analysis["SO analysis"]
  node_engineprovider["Engine provider<br/>[EngineProvider.kt]"]
  node_runtime["Engine runtime<br/>[EngineRuntime.kt]"]
  node_read["SO analysis"]
  node_native["Native backends<br/>[NativeEngine.kt]"]
  node_lief["LIEF backend"]
  node_rizin["Rizin backend"]
end

subgraph group_editing["Editing and export"]
  node_edit["Edit sessions"]
  node_build["Build and export"]
end

subgraph group_extensions["Optional capabilities"]
  node_dynamic["Dynamic analysis"]
  node_unidbg["Unidbg emulator<br/>[UnidbgEmulator.kt]"]
  node_frida["Frida bridge<br/>[FridaBridge.kt]"]
  node_blutter["Flutter Blutter"]
  node_deep["AI deep analysis"]
  node_agent["AI agent engine"]
  node_tunnel["Cloudflare tunnel"]
  node_apkbridge["APK MCP bridge<br/>[ApkMcpBridge.kt]"]
end

node_user(("Operator"))
node_client(("MCP client"))
node_ai(("AI provider"))

node_user -->|"configures"| node_ui
node_ui -->|"starts"| node_service
node_service -->|"starts"| node_server
node_service -->|"reads"| node_settings
node_client -->|"sends HTTP"| node_server
node_server -.->|"dispatches"| node_tools
node_tools -.->|"invokes tools"| node_runtime
node_engineprovider -->|"provides engine"| node_runtime
node_runtime -->|"delegates reads"| node_read
node_runtime -->|"delegates ELF work"| node_lief
node_runtime -.->|"delegates analysis"| node_rizin
node_rizin -->|"uses backend"| node_native
node_lief -->|"uses backend"| node_native
node_runtime -->|"manages edits"| node_edit
node_tools -.->|"exports builds"| node_build
node_tools -->|"dispatches dynamic"| node_dynamic
node_dynamic -->|"analyzes evidence"| node_agent
node_dynamic -.->|"uses emulator"| node_unidbg
node_dynamic -.->|"uses hooks"| node_frida
node_runtime -->|"coordinates Flutter"| node_blutter
node_tools -->|"offers analysis"| node_deep
node_deep -->|"runs agent"| node_agent
node_agent -->|"requests analysis"| node_ai
node_service -->|"starts tunnel"| node_tunnel
node_tools -.->|"bridges tools"| node_apkbridge

click node_ui "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/MainActivity.kt"
click node_settings "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/SettingsStore.kt"
click node_service "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt"
click node_server "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/mcp/McpHttpServer.kt"
click node_tools "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/mcp/ToolCatalog.kt"
click node_engineprovider "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/EngineProvider.kt"
click node_runtime "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt"
click node_read "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeRead.kt"
click node_native "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/nativecore/NativeEngine.kt"
click node_lief "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendLief.kt"
click node_rizin "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendRizin.kt"
click node_edit "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeEditSession.kt"
click node_build "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBuild.kt"
click node_dynamic "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt"
click node_unidbg "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/UnidbgEmulator.kt"
click node_frida "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/FridaBridge.kt"
click node_blutter "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/BlutterCoordinator.kt"
click node_deep "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/DeepAnalysisService.kt"
click node_agent "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/RikkaAgentEngine.kt"
click node_tunnel "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/CloudflareTunnelManager.kt"
click node_apkbridge "https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/ApkMcpBridge.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_settings,node_service,node_client toneBlue
class node_server,node_tools toneAmber
class node_engineprovider,node_runtime,node_read,node_native,node_lief,node_rizin toneMint
class node_edit,node_build toneRose
class node_dynamic,node_unidbg,node_frida,node_blutter,node_deep,node_agent,node_tunnel,node_apkbridge,node_user,node_ai toneIndigo
```

## Components

### Android app

- [Android UI](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/MainActivity.kt): `app/src/main/java/com/soreverse/mcp/MainActivity.kt`
- [Settings store](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/SettingsStore.kt): `app/src/main/java/com/soreverse/mcp/core/SettingsStore.kt`
- [Foreground service](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt): `app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`

### MCP access

- [MCP HTTP server](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/mcp/McpHttpServer.kt): `app/src/main/java/com/soreverse/mcp/mcp/McpHttpServer.kt`
- [Tool catalog](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/mcp/ToolCatalog.kt): `app/src/main/java/com/soreverse/mcp/mcp/ToolCatalog.kt`

### SO analysis

- [Engine provider](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/EngineProvider.kt): `app/src/main/java/com/soreverse/mcp/core/EngineProvider.kt`
- [Engine runtime](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`
- [SO analysis](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeRead.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeRead.kt`
- [Native backends](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/nativecore/NativeEngine.kt): `app/src/main/java/com/soreverse/mcp/nativecore/NativeEngine.kt`
- [LIEF backend](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendLief.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendLief.kt`
- [Rizin backend](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendRizin.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendRizin.kt`

### Editing and export

- [Edit sessions](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeEditSession.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeEditSession.kt`
- [Build and export](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBuild.kt): `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBuild.kt`

### Optional capabilities

- [Dynamic analysis](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt): `app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt`
- [Unidbg emulator](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/UnidbgEmulator.kt): `app/src/main/java/com/soreverse/mcp/engine/UnidbgEmulator.kt`
- [Frida bridge](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/FridaBridge.kt): `app/src/main/java/com/soreverse/mcp/engine/FridaBridge.kt`
- [Flutter Blutter](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/engine/BlutterCoordinator.kt): `app/src/main/java/com/soreverse/mcp/engine/BlutterCoordinator.kt`
- [AI deep analysis](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/DeepAnalysisService.kt): `app/src/main/java/com/soreverse/mcp/core/DeepAnalysisService.kt`
- [AI agent engine](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/RikkaAgentEngine.kt): `app/src/main/java/com/soreverse/mcp/core/RikkaAgentEngine.kt`
- [Cloudflare tunnel](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/CloudflareTunnelManager.kt): `app/src/main/java/com/soreverse/mcp/core/CloudflareTunnelManager.kt`
- [APK MCP bridge](https://github.com/bilieebiliee1-design/somcp/blob/main/app/src/main/java/com/soreverse/mcp/core/ApkMcpBridge.kt): `app/src/main/java/com/soreverse/mcp/core/ApkMcpBridge.kt`

### Other components

- **Operator**
- **MCP client**
- **AI provider**

## Connections

- Operator → Android UI: configures
- Android UI → Foreground service: starts (evidence: `app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`)
- Foreground service → MCP HTTP server: starts (evidence: `app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`)
- Foreground service → Settings store: reads (evidence: `app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`)
- MCP client → MCP HTTP server: sends HTTP
- MCP HTTP server → Tool catalog: dispatches
- Tool catalog → Engine runtime: invokes tools
- Engine provider → Engine runtime: provides engine (evidence: `app/src/main/java/com/soreverse/mcp/core/EngineProvider.kt`)
- Engine runtime → SO analysis: delegates reads (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`)
- Engine runtime → LIEF backend: delegates ELF work (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`)
- Engine runtime → Rizin backend: delegates analysis (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendRizin.kt`)
- Rizin backend → Native backends: uses backend (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendRizin.kt`)
- LIEF backend → Native backends: uses backend (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntimeBackendLief.kt`)
- Engine runtime → Edit sessions: manages edits (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`)
- Tool catalog → Build and export: exports builds
- Tool catalog → Dynamic analysis: dispatches dynamic (evidence: `app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt`)
- Dynamic analysis → AI agent engine: analyzes evidence (evidence: `app/src/main/java/com/soreverse/mcp/core/DynamicAnalysisService.kt`)
- Dynamic analysis → Unidbg emulator: uses emulator
- Dynamic analysis → Frida bridge: uses hooks
- Engine runtime → Flutter Blutter: coordinates Flutter (evidence: `app/src/main/java/com/soreverse/mcp/engine/EngineRuntime.kt`)
- Tool catalog → AI deep analysis: offers analysis (evidence: `app/src/main/java/com/soreverse/mcp/core/DeepAnalysisService.kt`)
- AI deep analysis → AI agent engine: runs agent (evidence: `app/src/main/java/com/soreverse/mcp/core/DeepAnalysisService.kt`)
- AI agent engine → AI provider: requests analysis (evidence: `app/src/main/java/com/soreverse/mcp/core/RikkaAgentEngine.kt`)
- Foreground service → Cloudflare tunnel: starts tunnel (evidence: `app/src/main/java/com/soreverse/mcp/service/McpForegroundService.kt`)
- Tool catalog → APK MCP bridge: bridges tools
