- Android Mcp Toolkit
Android Mcp Toolkit
Android MCP Toolkit for AI Agents
Small MCP server with two tools:
- Fast SVG → Android VectorDrawable conversion (cached, file or inline).
- adb logcat reader with package/pid/tag filters for quick crash triage.
Why this exists
The Mission: Bringing Native Android to the AI Agent Era
While the AI ecosystem flourishes with web-first tools, Android development often feels left behind. This MCP server is my answer to that gap—a dedicated bridge connecting AI Agents directly to the Android toolchain.
⚡ Zero-Friction Asset Conversion: Convert SVGs to VectorDrawables instantly without the overhead of launching Android Studio.
🔍 Direct Diagnostic Access: Empower agents to pull, filter, and analyze adb logcat streams (by package, PID, or tag) in real-time.
🤖 Agent-Native Architecture: Deliver structured, scriptable outputs that LLMs can parse and act upon efficiently.
🚀 Built for Extensibility: A solid foundation designed to grow, paving the way for future utilities like bitmap helpers and asset validation.
Pairing ideas
- Figma MCP: grab SVGs from designs, feed to
convert-svg-to-android-drawableto get XML for Android resources. - Debugging: while running the app, call
read-adb-logcatwith package name or tag to capture crashes and filtered logs without leaving the MCP client.
Previews
SVG to VectorDrawable
- Figma request → SVG extraction

- Flag conversion preview (single)

- Batch flag review (side-by-side)

- Batch run via MCP (console)

ADB logcat tool
- Crash capture prompt (inputs + filters)

- Response preview (summarized logcat)

Current tools
-
convert-svg-to-android-drawable- Inputs:
svg(inline) orsvgPath(file path). Optional:outputPath,floatPrecision(default 2),fillBlack(default false),xmlTag(default false),tint,cache(default true). - Output: VectorDrawable XML text; also writes to disk when
outputPathis provided. - Performance: LRU cache (32 entries) keyed by SVG + options plus fast reuse in-session.
- Converter: vendored fork in
vendor/svg2vectordrawablewith fixes forrgb()/rgba(),hsl()/hsla(), and named colors. Upstream license:vendor/svg2vectordrawable/LICENSE(MIT).
- Inputs:
-
read-adb-logcat- Inputs:
packageName(resolve pid viaadb shell pidof -s),pid(explicit),tag,priority(V|D|I|W|E|F|S, defaultV),maxLines(tail count, default200, max2000),timeoutMs(default5000, max15000). - Behavior: Runs
adb logcat -d -t <maxLines>with optional--pid=<pid>and-s tag:priority. - Output: Returns the logcat text; if no lines are returned, responds with a short message.
- Notes: Requires
adbavailable in PATH and a connected device/emulator. Provide at least one ofpackageName,pid, ortagto scope logs.
- Inputs:
-
get-pid-by-package- Inputs:
packageName(required),timeoutMs(default5000, max15000). - Behavior: Resolves pid via
adb shell pidof -s <package>. - Notes: Use this first, then pass pid to other logcat tools for noise-free filtering.
- Inputs:
-
get-current-activity- Inputs:
timeoutMs(default5000, max15000). - Behavior: Parses
adb shell dumpsys windowformCurrentFocus/mFocusedAppto reveal the currently focused window (useful even in single-activity setups to confirm top window).
- Inputs:
-
fetch-crash-stacktrace- Inputs:
packageName(optional, resolves pid),maxLines(default400, max2000),timeoutMs(default5000, max15000). - Behavior: Pulls crash buffer via
adb logcat -b crash -d -t <maxLines>; filters by--pidwhen package is provided.
- Inputs:
-
check-anr-state- Inputs:
maxLines(default400, max2000),timeoutMs(default5000, max15000). - Behavior: Fetches
ActivityManager:E *:S(recent ANR logs) and best-effort reads/data/anr/traces.txt(stat + tail 200 lines). May require root/debuggable.
- Inputs:
-
clear-logcat-buffer- Inputs:
timeoutMs(default5000, max15000). - Behavior: Runs
adb logcat -cto clear buffers before a new scenario.
- Inputs:
Roadmap (planned)
- Additional MCP tools for Android assets (e.g., batch conversions, validations, optimizers).
- Optional resource prompts for common Android drawables/templates.
- Upcoming MCP utilities (planned):
- Logcat reader: stream and filter Android logcat output via MCP.
- Asset checkers: flag common drawable issues (size, alpha, color profile).
- Batch conversions: multi-SVG to VectorDrawable with consistent options.
- Template prompts: quick-start drawable/XML snippets for common patterns.
Quick start
npm installnpm run buildnode dist/index.js(stdio MCP server)
Run via npx
- Global:
npx android-mcp-toolkit
Use in Cursor (MCP config)
Add to your Cursor settings JSON:
{
"mcpServers": {
"figma-desktop": {
"url": "http://127.0.0.1:3845/mcp"
},
"android-mcp-toolkit": {
"command": "npx",
"args": [
"-y",
"android-mcp-toolkit"
]
}
}
}
The npx call downloads the published package; no local path required.
Quick install via Cursor deep link:
cursor://anysphere.cursor-deeplink/mcp/install?name=android-mcp-toolkit&config=eyJjb21tYW5kIjoibnB4IC15IGFuZHJvaWQtbWNwLXRvb2xraXQifQ%3D%3D
Examples
- Input SVG:
sample_svg.svg - Output VectorDrawable:
examples/sample_svg.xml
Notes
- Transport: stdio via
@modelcontextprotocol/sdk. - Base deps kept minimal; everything needed to convert SVGs is vendored/included.
Contact
Server Config
{
"mcpServers": {
"android-mcp-toolkit": {
"command": "npx",
"args": [
"-y",
"android-mcp-toolkit"
]
}
}
}