LABSCO SUMMARY
A filesystem server that knows what an Android project looks like.
A general file reader will happily hand an assistant a build directory full of generated code, which is both noise and context you paid for. Restricting to source, Gradle catalogs and the manifest — grouped by directory — means the first read gives a usable map of the project rather than a listing. The exclusions are structural rather than configurable, which is the trade: less to set up, less to adjust.
What it is
A narrow filesystem reader scoped to Android codebases. It confirms a directory really is an Android project by checking for gradle files before it will read anything, and it refuses the directories that hold build output and secrets.
What you get
- Project validation: a directory is only accepted if the gradle configuration files that mark a real Android project are present
- File browsing that lists Kotlin, KTS and TOML files along with AndroidManifest.xml, grouped by directory
- File reading, one file or several at a time, with the same filtering applied
- Refusal to descend into .gradle, .git and build folders
Requirements
Python 3.10+ and uv. It runs from a clone of the repository: the client launches it with uv run --with mcp[cli] mcp run pointed at main.py at the top of that clone, and both that path and the uv path must be absolute.
Setup effort
Build from source — git clone https://github.com/SDILogin/filesystem-android
USE CASES
Understanding an Android codebase you inherited
Get the source files grouped by directory and read the manifest, without the build output in the way.
Asking about code across several files
Read multiple files in one step rather than requesting them one at a time.
Keeping generated output out of context
Build folders and version-control internals are refused, so they never enter the conversation.
BEFORE YOU INSTALL
What to know first
Requires
- uv
- An Android project directory with its Gradle configuration files
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/SDILogin/filesystem-androidMCP Clients
Claude Desktop
{
"mcpServers": {
"Android source code": {
"command": "<YOUR_PATH_TO_UV>",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"<YOUR_PATH_TO_FILESYSTEM_ANDROID>/main.py"
]
}
}
}<YOUR_PATH_TO_UV> is your actual uv installation path, and <YOUR_PATH_TO_FILESYSTEM_ANDROID> is the folder you cloned. main.py sits at the top of that folder (the README's ./filesystem_android/main.py is an older layout). The client does not start inside the clone, so a relative path would not be found. uv run --with mcp[cli] supplies the server's dependencies when the client launches it.