claude-android
Provides tools to read Android project configuration including AGP version, Kotlin version, Compose BOM, modules, and manifest details such as permissions, activities, services.
Provides tools to read Gradle build files (settings.gradle.kts, build.gradle.kts) and extract plugins, dependencies, SDK versions, and other build configuration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-androidplan an AGP upgrade to 8.7"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-android
MCP server + Claude Code skills toolkit for Android dev workflows. Expose Gradle / Manifest / R8 context to Claude, ship a curated library of skills that consume it.
What it does
Android projects with Kotlin DSL + convention plugins + KMP + AGP-upgrade pain repeat the same tasks: read versions, scan dependencies, plan migrations, audit R8 rules. Each task makes Claude grep files line by line.
claude-android is an MCP server that exposes a small set of read-only tools (Gradle,
Manifest, ProGuard) so Claude can answer "what's my AGP version, what plugins, what
permissions" in milliseconds — and a skills library (agp-upgrade, r8-audit,
string-sync, …) that orchestrates those tools to deliver complete workflows.
┌──────────────────┐ stdio ┌─────────────────────┐ fs ┌──────────────┐
│ Claude Code │ ────────▶ │ claude-android │ ──────▶ │ your Android │
│ (CLI / agent) │ │ MCP server │ │ project │
└──────────────────┘ tools list └─────────────────────┘ parsed └──────────────┘
▲ JSON
│
┌────────────────┐
│ skills/ │
│ agp-upgrade/ │
│ r8-audit/ │
│ ... │
└────────────────┘Related MCP server: replicant-mcp
v0.1 scope
What ships today:
Component | Status |
MCP server (stdio transport) | ✅ |
Tool: | ✅ |
Tool: | ✅ |
Tool: | ✅ |
Skill: | ✅ |
Tool: | ⏳ v0.2 |
Tool: | ⏳ v0.2 |
Skill: | ⏳ v0.2 |
Skill: | ⏳ v0.3 |
Requirements
Node ≥ 20
Claude Code installed and authenticated (https://docs.claude.com/en/docs/claude-code/quickstart)
A real Android project with Kotlin DSL Gradle to point at
Install
Option A — From npm (after publish)
npm install -g @duonglkh/claude-androidOption B — From source (v0.1 preview)
git clone https://github.com/duonglkh/claude-android.git
cd claude-android
npm install
npm run build
npm link # so `claude-android-mcp` is on your PATHRegister the MCP server with Claude Code
claude mcp add android claude-android-mcpVerify:
claude mcp list
# expected: "android" with status "connected" (or similar)Use the skills
Skills live in skills/. To use them in Claude Code:
# Copy / symlink skills into Claude Code's skills directory
mkdir -p ~/.claude/skills
cp -r ./skills/agp-upgrade ~/.claude/skills/
# Or, if installed via npm globally:
# Symlink from the global install:
ln -s "$(npm root -g)/@duonglkh/claude-android/skills/agp-upgrade" ~/.claude/skills/agp-upgradeThen in any Android project:
cd ~/your-android-project
claude
> /agp-upgradeClaude will:
Call
mcp__android__get_project_infoto read AGP / Kotlin / modules.Ask which AGP version to target.
For each module, call
mcp__android__read_gradleto find breaking changes.Produce a step-by-step migration plan without applying any changes.
Wait for confirmation before patching.
Tools reference
get_project_info
Input:
{ "projectPath": "/absolute/path/to/android/project" }Output (example):
{
"projectPath": "/Users/me/MyApp",
"rootProjectName": "MyApp",
"modules": ["app", "core:ui", "feature:home"],
"agpVersion": "8.7.3",
"kotlinVersion": "2.0.21",
"composeBomVersion": "2024.12.01",
"isKmp": false,
"hasBuildLogic": true,
"warnings": []
}read_gradle
Input:
{ "modulePath": "/absolute/path/to/module" }Output includes: plugins, namespace, compileSdk, minSdk, targetSdk,
applicationId, versionCode, versionName, composeEnabled, dependencies.
read_manifest
Input:
{ "manifestPath": "/absolute/path/to/AndroidManifest.xml" }Output includes: packageAttr, permissions, applicationName, applicationLabel,
applicationIcon, applicationTheme, usesCleartextTraffic, activities, services,
receivers, providers.
Roadmap
v0.1 (this release) — read-only tools +
agp-upgradeskillv0.2 —
read_proguard_rules,run_lint;r8-auditskillv0.3 —
string-syncskill (locale catalogs)v0.5 — first npm publish (
@duonglkh/claude-android)v1.0 — write tools (apply patches with confirmation), Crashlytics adapter
See issues for current work.
Status
v0.1 preview — tools are functional but parsers are regex-based, not full AST. They handle
modern Kotlin DSL Gradle projects well; legacy Groovy build.gradle may parse poorly. Open an
issue with a sample if you hit it.
Contributing
PRs welcome. Open an issue first for non-trivial changes. New skills are especially valued — if your team has an Android workflow that Claude could orchestrate, propose it.
Part of the hidev open-source ecosystem
See duonglkh.github.io for the full roster.
License
MIT © 2026 Hidev (Hung Duong)
Available Tools
3 toolsget_project_infoA
Read root Android project info: AGP version, Kotlin version, modules list, project name. Pass projectPath = absolute path to the project root (the directory containing settings.gradle.kts).
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the Android project root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses the verb 'Read', implying it is read-only and non-destructive. It specifies the required path format. Without annotations, this conveys adequate behavioral context for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second gives parameter guidance. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description lists the returned fields (AGP version, Kotlin version, modules list, project name). It is adequate, though a more explicit format or structure would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds extra semantic detail by specifying that the project path must be to the root containing settings.gradle.kts, which is not implicit from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads root Android project info, listing specific data points (AGP version, Kotlin version, modules list, project name). It distinguishes from siblings which read specific files like gradle or manifest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear instructions on how to use the tool: pass the absolute path to the project root containing settings.gradle.kts. However, it does not explicitly state when to use this tool versus siblings, though it is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_gradleA
Read a module's build.gradle.kts and return parsed structure: plugins, android { } block, dependencies block. Pass modulePath = absolute path to the module directory (e.g. /path/to/project/app).
| Name | Required | Description | Default |
|---|---|---|---|
| modulePath | Yes | Absolute path to the Gradle module directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions reading and returning a parsed structure but lacks disclosure of error handling (e.g., file not found), permissions needed, or side effects. Minimal behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose, output, and parameter usage. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description partially covers return values (plugins, android block, dependencies) but omits error conditions, structure details, or edge cases. Adequate for a simple read operation but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value over the schema by specifying that modulePath is an absolute path to the module directory (not the file) and provides an example. Schema coverage is 100%, but the description enriches the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'module's build.gradle.kts', and specifies the returned parsed structure (plugins, android block, dependencies). It distinguishes itself from siblings by focusing on Gradle build file parsing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example of the required parameter (modulePath) but does not explicitly state when to use this tool versus sibling tools like get_project_info or read_manifest. No when-not or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_manifestA
Read AndroidManifest.xml and return parsed structure: package, permissions, application class, activities. Pass manifestPath = absolute path to the AndroidManifest.xml file.
| Name | Required | Description | Default |
|---|---|---|---|
| manifestPath | Yes | Absolute path to AndroidManifest.xml. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Implies read-only behavior with 'Read and return parsed structure', but no details on error handling, permissions, or side effects. Since no annotations exist, description carries burden but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and return value, then parameter details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool without output schema, description covers what it does, what it returns, and the required input. Complete given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description repeats the schema's description. No additional meaning added beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states the tool reads AndroidManifest.xml and returns a parsed structure including specific elements (package, permissions, etc.). Distinguishes from siblings (get_project_info, read_gradle) by targeting a specific file type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the required parameter and its format ('absolute path'), but no explicit guidance on when to use this tool over alternatives or conditions to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
get_project_info - First observed
read_gradle - First observed
read_manifest
TDQS
Each tool targets a distinct file type: project info, Gradle build file, and Android manifest. There is no overlap in functionality.
All tool names follow a clear verb_noun pattern (get_project_info, read_gradle, read_manifest) with consistent snake_case. The verbs 'get' and 'read' are synonymous in this context.
Three tools is on the low side but appropriate for a focused read-only server that inspects core Android project files. Each tool serves a distinct purpose without unnecessary bloat.
The set covers the essential files for reading an Android project, but lacks write capabilities and may miss some auxiliary files (e.g., settings.gradle.kts, proguard rules). This leaves some gaps for interactive modification.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for building and testing AI agents with multi-model experimentation and insights.
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that integrates with Apktool to provide live reverse engineering support for Android applications using Claude and other LLMs through the Model Context Protocol.16642Apache 2.0
- AlicenseBqualityBmaintenanceAn MCP server that enables AI assistants to build, test, and debug Android applications by interacting directly with the Android development environment. It provides tools for managing emulators, executing Gradle tasks, running ADB commands, and performing UI automation via accessibility trees.1412116MIT
- FlicenseNot gradedqualityBmaintenanceProvides AI coding assistants with access to Google's Android development skills library through an MCP server. Enables developers to discover, search, and apply Android best practices directly within their coding environment without manual copying.215-
- AlicenseBqualityAmaintenanceUnified MCP server for Android mobile development — combines project knowledge, Android CLI execution, live dependency versions, and agentic workflow tools for Claude Code.2419MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/duonglkh/claude-android'
If you have feedback or need assistance with the MCP directory API, please join our Discord server