build
Compile Android project source code into an executable APK file for testing and deployment.
Instructions
Build the Android project in the folder
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | The full path of the current folder that the Android project sits |
Implementation Reference
- src/mcpandroidbuild/server.py:44-73 (handler)The @server.call_tool() handler that parses arguments using Folder schema, sets command to run build.sh for the 'build' tool, executes subprocess, and returns result as TextContent.@server.call_tool() async def call_tool(name, arguments: dict) -> list[TextContent]: try: args = Folder(**arguments) except ValueError as e: raise McpError(ErrorData(code=INVALID_PARAMS, message=str(e))) # os.chdir(args.folder) script_dir = os.path.dirname(os.path.abspath(__file__)) command = [""] if name == "build": command = [os.path.join(script_dir, "build.sh"), args.folder] elif name == "test": command = [os.path.join(script_dir, "test.sh"), args.folder] else: command = [os.path.join(script_dir, "instrumentedTest.sh"), args.folder] result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False) stdout_lines = result.stdout.decode("utf-8").splitlines() stderr_lines = result.stderr.decode("utf-8").splitlines() all_lines = stdout_lines + stderr_lines error_lines = [line for line in all_lines if "failure: " in line.lower() or "e: " in line.lower() or " failed" in line.lower()] error_message = "\n".join(error_lines) if not error_message: error_message = "Successful" return [ TextContent(type="text", text=f"{error_message}") ]
- src/mcpandroidbuild/server.py:19-22 (schema)Pydantic model defining the input schema for the 'build' tool: requires 'folder' path.class Folder(BaseModel): """Parameters""" folder: Annotated[str, Field(description="The full path of the current folder that the Android project sits")]
- src/mcpandroidbuild/server.py:28-32 (registration)Registration of the 'build' tool in the list_tools() function, specifying name, description, and input schema.Tool( name = "build", description = "Build the Android project in the folder", inputSchema = Folder.model_json_schema(), ),
- src/mcpandroidbuild/server.py:23-24 (registration)Server instance named 'build'.server = Server("build")