{"_id":"@fndchagas/expo-android","_rev":"10-a85486d7f22af03f261cab1f55d1e270","name":"@fndchagas/expo-android","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.1":{"name":"@fndchagas/expo-android","version":"0.1.1","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.1.1","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"eafe3fa5da28bce027b3cebf406f0253d6d2145e","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.1.1.tgz","fileCount":9,"integrity":"sha512-s20gtyQYb5xlZ1YHo05YpXFRJKpQ3qEZ+hDA8W6j7vbrwobqxPslkZ/fbE8LuWmH4Ln1tODH1F+oSI3Ld6cGkw==","signatures":[{"sig":"MEUCIQDpjz3eoS47YaUm7OUMTOkGG7o1eZJTcXQo19kGiYKpPgIgWo6EJD/dmpkZDpE/WSoPdv4U22Gn4+t/caRml0Gj3us=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33970},"type":"module","engines":{"node":">=18"},"gitHead":"4c127da2079286b4dfa91bfdbc05838515eaac40","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fndchagas","email":"fnd.chagas@gmail.com"},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"11.6.4","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.1.1_1767885604119_0.44141350215928576","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@fndchagas/expo-android","version":"0.2.0","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.2.0","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"b626921d5cc204f48003ab1023851d84052f15da","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.2.0.tgz","fileCount":9,"integrity":"sha512-d2uoSA+eKphIXtV1O7WMy2VobdMWqd6d+oVjDXeDjvfDEY7Jze5FLR7Ziq9KJkabJ4wzZslhmSo+utCqa1qMVA==","signatures":[{"sig":"MEUCIQCJ6o7zgztY/35IEowqZu8DE6HAK6CYA9LlLdNy9BC+dAIgSSjpZ0epJUxUN+WxzT8cJ5WRBy9raqhWVLQDU0HKZkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52088},"type":"module","engines":{"node":">=18"},"gitHead":"f74dfce2f50214a069d811297fe188c1ad80506f","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fndchagas","email":"fnd.chagas@gmail.com"},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.2.0_1767892820843_0.09539860845175907","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@fndchagas/expo-android","version":"0.2.1","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.2.1","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"156e613f9488f41b39d642864042b04bb7caa7a7","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.2.1.tgz","fileCount":9,"integrity":"sha512-6VelsAhHJ3KG6ZnnhPDrXgKAHB2IBnqMxwqWMAYADqofXbJ+PVxwRGZZ+7e8Ins6mrx7znsFYad7zu01T9lFUA==","signatures":[{"sig":"MEUCIFroi9ARXnnaERZ9ElOTIKqEF1DTxLuYe5gKRrOw8O6XAiEA+0gxp3wUtwabbDpw/jyEiDbptzG6EawLZzPPnH7rZD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52088},"type":"module","engines":{"node":">=18"},"gitHead":"6c145ec4561bbb0f9802dd34bf9952da1e4bc227","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fndchagas","email":"fnd.chagas@gmail.com"},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.2.1_1767893062109_0.8927419232524316","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@fndchagas/expo-android","version":"0.2.2","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.2.2","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"2fe6443d8cc8057c4726c46965552f495dee92d1","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.2.2.tgz","fileCount":9,"integrity":"sha512-6B/KWlBrlZ+itDdvhNDz/FoTqnmCcgfekRevn76MNbr8OCBsWFYzpe7O1TcC8FX2wivGs9kv3Zl32QjE40tq3w==","signatures":[{"sig":"MEQCIDfyOvvFk4NVtd+PRsH6B88zVXLkTlLmRdg/N7hDTiJ4AiAmbkFiqC02hNuUwBqRF7fc9oG53DhUrfbLdOE2x7hCBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52088},"type":"module","engines":{"node":">=18"},"gitHead":"e230b11df2fe820cc49af442ed953b79fc5c009d","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"fndchagas","email":"fnd.chagas@gmail.com"},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"11.6.4","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.2.2_1785936456767_0.4449243823405409","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@fndchagas/expo-android","version":"0.3.0","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.3.0","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"573832f2a2e5d28e9739f58fd2e08ba9b789b835","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.3.0.tgz","fileCount":9,"integrity":"sha512-lLAv1GHsT+N5EIFdu4+Hjwr9HV1V12mHUayij/tSO0/vPvCD1lF12IFhKdHqJ76wJb68cgdJkVqxovQTVUUukQ==","signatures":[{"sig":"MEUCIQDbp0G9kVM0+woxTNO294o5YDsaMFJ5JGZ0HURc8MxPnAIgGm1c+IMJrLPbFVDMC6ly0yvC04pTv5CXgmNb0GwUH0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54058},"type":"module","engines":{"node":">=18"},"gitHead":"c4ca41701510833578140b748edc71a3cd5f2af3","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.3.0_1785980207707_0.5771213047390402","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@fndchagas/expo-android","version":"0.3.1","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.3.1","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"d7e4d05d0bd4e7b14561cd909ed9c70cda19878f","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.3.1.tgz","fileCount":9,"integrity":"sha512-iHXc3ll2LQkvTkg8YuBg/0R6WMpMf5ly9eD4BII4hRRPd+MHRbp2iHTz8JtHgT9A+O1m9MAPzUZ7pdgjas/Plw==","signatures":[{"sig":"MEUCIHDF56ZG7gPz/XI+KPTjRFIguBkfYXdCMwEU7AXCitR3AiEAv+lN4fGXlAfPk0piwjdoEsdytZW8LGXVyyHoRkQVHNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54850},"type":"module","engines":{"node":">=18"},"gitHead":"07fdf40729bf3826293747e4a44d2e23ea2110dc","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.3.1_1785980407044_0.5733138098587518","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@fndchagas/expo-android","version":"0.4.0","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.4.0","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"66dac49c59ca6aaf974790909267ae4c4b9b0e46","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.4.0.tgz","fileCount":9,"integrity":"sha512-h34YtwOdd0vqvjxH6k7CmBSBPaUWRBukj2gLIOBbD8wPI8W+JH2TRBe+3WhiICQW/Fh/hUc6eM7gvgXokNArMQ==","signatures":[{"sig":"MEUCIQCTCYNw5EsKXD/YskqwE6nObrZf8uhTCT6wVz3bsHxL9gIgeTubUMppnK6K3b1SwnLnh8eNeb0/UsZEkaKjMottRwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56511},"type":"module","engines":{"node":">=18"},"gitHead":"e62d3058c6c7126007b9ccde975d5bd3e32fdacd","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","lint":"eslint .","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.8.0","@eslint/js":"^10.0.1","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21","typescript-eslint":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.4.0_1786022587865_0.6827516225068535","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@fndchagas/expo-android","version":"0.5.0","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.5.0","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"8ddcd2870e6437966b8fb78672db969aef201935","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.5.0.tgz","fileCount":9,"integrity":"sha512-+xISGXUOpebuGQzBcGw9hmOX9vIEXoko8EiRIx1rpy1TNr07HBIc4g1vng0sn8WdFCcvNqqYudefucze/UvE+Q==","signatures":[{"sig":"MEYCIQDo1oxmGQb8XaiuJOkbAgDs1srTVIMabN48mX8k6IFbPQIhAP7AyK7Ou/c/o/QF+F0fMlLirpI9H6tOQ2FatqTx5C7R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56917},"type":"module","engines":{"node":">=18"},"gitHead":"25809b4eeea6966eb16288263ab9b34c0dad2ba7","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","lint":"eslint .","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","test:coverage":"node --test --experimental-test-coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.8.0","@eslint/js":"^10.0.1","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21","typescript-eslint":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.5.0_1786024946103_0.08090334361430385","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@fndchagas/expo-android","version":"0.5.1","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"author":{"name":"Fernando Chagas"},"license":"MIT","_id":"@fndchagas/expo-android@0.5.1","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"homepage":"https://github.com/frndchagas/expo-android#readme","bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"bin":{"expo-android":"dist/server.js"},"dist":{"shasum":"b267059eceeb55f026470bff5e4b9dbb4724dca3","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.5.1.tgz","fileCount":9,"integrity":"sha512-fMTQ6u02VZNbXHvTK+EvnnvZxSVdjweaQef2wZ9JylkMD242kWmQFiAp3TvWq1N8XnsuETY2onoPPFC9hy3LyA==","signatures":[{"sig":"MEUCIQC/OE5x9tKymhMAgEWD931lGG80noZv28MmnqD9EbJf1AIgOkdGHscnVXjBXuD5OB6nphV4fn1psjNCUEn5azq3Kng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57694},"type":"module","engines":{"node":">=18"},"gitHead":"881a4c1babe4874d00409177ed7645990d0a0f4b","mcpName":"io.github.frndchagas/expo-android","scripts":{"dev":"tsx src/server.ts","lint":"eslint .","test":"node --test","build":"tsc -p tsconfig.json","start":"node dist/server.js","test:coverage":"node --test --experimental-test-coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"repository":{"url":"git+https://github.com/frndchagas/expo-android.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Android emulator automation via ADB.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5","express":"5.2.1","@modelcontextprotocol/sdk":"1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.8.0","@eslint/js":"^10.0.1","typescript":"5.9.3","@types/node":"^22.18.1","@types/express":"^4.17.21","typescript-eslint":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-android_0.5.1_1786153124723_0.3933519175056701","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@fndchagas/expo-android","version":"0.5.2","mcpName":"io.github.frndchagas/expo-android","type":"module","scripts":{"dev":"tsx src/server.ts","build":"tsc -p tsconfig.json","start":"node dist/server.js","test":"node --test","prepublishOnly":"npm run build","lint":"eslint .","test:coverage":"node --test --experimental-test-coverage"},"dependencies":{"@modelcontextprotocol/sdk":"1.26.0","express":"5.2.1","zod":"4.3.5"},"devDependencies":{"@eslint/js":"^10.0.1","@types/express":"^4.17.21","@types/node":"^22.18.1","eslint":"^10.8.0","tsx":"4.21.0","typescript":"5.9.3","typescript-eslint":"^8.66.0"},"description":"MCP server for Android emulator automation via ADB.","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"license":"MIT","author":{"name":"Fernando Chagas"},"repository":{"type":"git","url":"git+https://github.com/frndchagas/expo-android.git"},"bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"homepage":"https://github.com/frndchagas/expo-android#readme","bin":{"expo-android":"dist/server.js"},"engines":{"node":">=18"},"gitHead":"c8221f43d26998b0259670209bf182a7df39d70f","_id":"@fndchagas/expo-android@0.5.2","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-1q4nlOYSEudcYEvw00GKf9rm/TEkYeKrSVLNCwh3wMK0dhAGRofNN33/M/Rqz6iZiR25ibLV5oqQMDqApfOBlg==","shasum":"531529997585f8dc7b807aac8871bae1be56e40d","tarball":"https://registry.npmjs.org/@fndchagas/expo-android/-/expo-android-0.5.2.tgz","fileCount":9,"unpackedSize":57955,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fndchagas%2fexpo-android@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDxrwBa/NCfCDAniVUWu3lM+j3rI3g8TDTgwhlTWrdvvAiAfty6D6/bjSqfN7uUibPdnu1vla6Qw2UlfUncUKOLKdQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf6cec59-b470-4f85-8a58-033efe4ee27b"}},"directories":{},"maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-android_0.5.2_1787537000662_0.58956789457977"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-08T15:20:03.971Z","modified":"2026-08-24T02:03:21.083Z","0.1.1":"2026-01-08T15:20:04.277Z","0.2.0":"2026-01-08T17:20:20.982Z","0.2.1":"2026-01-08T17:24:22.247Z","0.2.2":"2026-08-05T13:27:36.907Z","0.3.0":"2026-08-06T01:36:47.844Z","0.3.1":"2026-08-06T01:40:07.185Z","0.4.0":"2026-08-06T13:23:08.010Z","0.5.0":"2026-08-06T14:02:26.252Z","0.5.1":"2026-08-08T01:38:44.867Z","0.5.2":"2026-08-24T02:03:20.797Z"},"bugs":{"url":"https://github.com/frndchagas/expo-android/issues"},"author":{"name":"Fernando Chagas"},"license":"MIT","homepage":"https://github.com/frndchagas/expo-android#readme","keywords":["mcp","model-context-protocol","android","adb","emulator","expo","react-native","automation","typescript","node"],"repository":{"type":"git","url":"git+https://github.com/frndchagas/expo-android.git"},"description":"MCP server for Android emulator automation via ADB.","maintainers":[{"name":"fndchagas","email":"fnd.chagas@gmail.com"}],"readme":"# expo-android\n\n[![npm version](https://img.shields.io/npm/v/@fndchagas/expo-android.svg)](https://www.npmjs.com/package/@fndchagas/expo-android)\n[![npm downloads](https://img.shields.io/npm/dm/@fndchagas/expo-android.svg)](https://www.npmjs.com/package/@fndchagas/expo-android)\n[![license](https://img.shields.io/npm/l/@fndchagas/expo-android.svg)](LICENSE)\n[![node version](https://img.shields.io/node/v/@fndchagas/expo-android.svg)](package.json)\n[![typescript](https://img.shields.io/badge/TypeScript-5.9.3-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![CI](https://github.com/frndchagas/expo-android/actions/workflows/ci.yml/badge.svg)](https://github.com/frndchagas/expo-android/actions/workflows/ci.yml)\n\nMCP server for Android emulator automation via ADB.\n\n## Requirements\n\n- Node 18+\n- Android SDK platform-tools (adb) available\n- Android emulator or device connected\n\nVerify adb:\n\n```bash\nadb devices\n```\n\n## Install\n\n**Claude Desktop, one-click:** download [`expo-android.mcpb`](https://github.com/frndchagas/expo-android/releases/latest/download/expo-android.mcpb) from the latest release and drag it into **Settings → Extensions**. You can leave both fields empty — adb is auto-detected and the only connected device is used by default.\n\n**Via npm:**\n\n```bash\nnpm install -g @fndchagas/expo-android\n# or\nnpx -y @fndchagas/expo-android\n```\n\n## Quickstart\n\n1. Start an emulator or connect a device.\n2. Run `doctor` to validate adb + device selection.\n3. Use `inspect`, `tapElement`, `inputText`, etc.\n\nExample:\n\n```ts\nawait client.callTool({ name: 'expo-android.doctor', arguments: {} });\nawait client.callTool({\n  name: 'expo-android.inspect',\n  arguments: { onlyInteractive: true, maxElements: 200 },\n});\n```\n\n## Use with Claude Code CLI\n\n```bash\nclaude mcp add expo-android \\\n  --env ADB_PATH=\"$HOME/Library/Android/sdk/platform-tools/adb\" \\\n  --env ADB_SERIAL=\"auto\" \\\n  -- npx -y @fndchagas/expo-android\n```\n\n## Use with OpenAI Codex CLI\n\n```bash\ncodex mcp add expo-android \\\n  --env ADB_PATH=\"$HOME/Library/Android/sdk/platform-tools/adb\" \\\n  --env ADB_SERIAL=\"auto\" \\\n  -- npx -y @fndchagas/expo-android\n```\n\nOr edit `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.expo-android]\ncommand = \"npx\"\nargs = [\"-y\", \"@fndchagas/expo-android\"]\nenv = { ADB_PATH = \"/Users/you/Library/Android/sdk/platform-tools/adb\", ADB_SERIAL = \"emulator-5554\" }\n```\n\nSerial selection priority:\n`serial` param (per tool call) → `setDevice` override → `ADB_SERIAL` env → auto (if only one device).\n\n## Environment variables\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `ADB_PATH` | `adb` | Path to adb executable |\n| `ADB_SERIAL` | optional | Device serial to target (`auto` to clear and auto-detect) |\n| `ADB_TIMEOUT_MS` | `15000` | Timeout for adb commands |\n| `ADB_MAX_BUFFER_MB` | `10` | Max output buffer size |\n| `ADB_DEBUG` | `0` | Log adb diagnostics to stderr |\n| `MCP_TRANSPORT` | `stdio` | Transport: `stdio`, `http`, or `both` |\n| `PORT` | `7332` | HTTP port when using http/both |\n\n## Troubleshooting\n\n### adb not found (spawn adb ENOENT)\n\nThe server starts even when adb is missing — tools return the `ADB executable not found`\nerror until adb becomes reachable (run `doctor` to diagnose). To fix it, set `ADB_PATH`\nor export an SDK path:\n\n```bash\nexport ADB_PATH=\"$HOME/Library/Android/sdk/platform-tools/adb\"\n# or\nexport ANDROID_HOME=\"$HOME/Library/Android/sdk\"\n```\n\nIf multiple devices are connected, set `ADB_SERIAL` to the target device.\nYou can also run `setDevice` at runtime:\n\n```ts\nawait client.callTool({\n  name: 'expo-android.setDevice',\n  arguments: { serial: 'emulator-5554' },\n});\n```\n\nIf you update PATH or SDK variables, restart the MCP process so it can pick up\nthe new environment.\n\n## Tests\n\n```bash\nnpm run build\nnpm test\n```\n\n## Tools\n\nTool names are plain identifiers (e.g. `tap`); your MCP client prefixes them with the server name you registered.\n\n- `devices` — list connected devices and emulators.\n- `doctor` — validate adb availability and show connected devices.\n- `setDevice` — override the active device serial for this MCP process.\n- `inspect` — UI dump parsed into elements with a summary (screenshot optional).\n- `screenshot` — capture a screenshot only (base64 or file path).\n- `findElement` — return elements that match search criteria.\n- `tapElement` — find an element and tap its center.\n- `waitForElement` — wait until an element appears (optionally with state checks).\n- `assertElement` — verify element existence and state.\n- `tap` — tap at x/y coordinates.\n- `swipe` — swipe between coordinates.\n- `longPress` — press and hold at coordinates.\n- `inputText` — type text in the focused field.\n- `keyEvent` — send Android key events (e.g., BACK, HOME).\n- `openApp` — launch an app by package name.\n- `listPackages` — list installed package names.\n- `installExpoGo` — download the pinned Expo Go APK and install it via `adb install -r` (the `url` override only accepts official `github.com/expo/expo-go-releases` URLs).\n\nEvery tool declares MCP annotations (`readOnlyHint`/`destructiveHint`), so clients can auto-approve inspection tools and gate the ones that drive the device.\n\n## Search criteria\n\nThese tools accept flexible search inputs: `findElement`, `tapElement`,\n`waitForElement`, `assertElement`.\n\nCommon fields:\n- `text`, `textContains`\n- `contentDesc`, `contentDescContains`\n- `resourceId`, `resourceIdContains`\n- `class`\n- `normalizeWhitespace`, `caseInsensitive`\n\n## MCP usage examples\n\n### Inspect\n\n```ts\nconst result = await client.callTool({\n  name: 'expo-android.inspect',\n  arguments: { onlyInteractive: true, includeScreenshot: false, maxElements: 200 },\n});\n```\n\nInspect options:\n- `includeScreenshot` (default: `false`)\n- `screenshotMode`: `base64` or `path`\n- `screenshotPath`: optional file path when using `path`\n- `maxElements`: limit elements returned\n- `includeElements`: return elements or summary only\n\n### Doctor\n\n```ts\nawait client.callTool({\n  name: 'expo-android.doctor',\n  arguments: {},\n});\n```\n\n### Override serial per call\n\n```ts\nawait client.callTool({\n  name: 'expo-android.tapElement',\n  arguments: { text: 'Search', serial: 'emulator-5554' },\n});\n```\n\n### Tap element\n\n```ts\nawait client.callTool({\n  name: 'expo-android.tapElement',\n  arguments: { text: 'Private account' },\n});\n```\n\n### Wait + assert\n\n```ts\nawait client.callTool({\n  name: 'expo-android.waitForElement',\n  arguments: { text: 'Save', timeout: 10000, shouldBeClickable: true },\n});\n\nawait client.callTool({\n  name: 'expo-android.assertElement',\n  arguments: { text: 'Private account', shouldBeChecked: true },\n});\n```\n","readmeFilename":"README.md"}